summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/build_winkle_images
diff options
context:
space:
mode:
authorThi Tran <thi@us.ibm.com>2013-03-03 13:02:38 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-03-05 12:18:09 -0600
commit2cd51b10fa1bf295a8b3b35553226aab5d103af7 (patch)
treeaa256b43d22b0b85b36ecaea8dc0140ff8f02bca /src/usr/hwpf/hwp/build_winkle_images
parent6e96f79fbadb624ef2aac82c6f2e4743291c5dd7 (diff)
downloadtalos-hostboot-2cd51b10fa1bf295a8b3b35553226aab5d103af7.tar.gz
talos-hostboot-2cd51b10fa1bf295a8b3b35553226aab5d103af7.zip
TULETA Bring Up - HW procedures update 03/03/2013
Revert io_run_training to 1.28 Update from review comment Change-Id: I2c94f24e3818ae1ffc6c629a5e904681e70205e2 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/3405 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/build_winkle_images')
-rwxr-xr-xsrc/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_pcb_scom_errors.H59
-rw-r--r--src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C108
-rw-r--r--src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_image_help_base.H17
-rw-r--r--src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize_errors.xml43
4 files changed, 182 insertions, 45 deletions
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_pcb_scom_errors.H b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_pcb_scom_errors.H
new file mode 100755
index 000000000..522960e67
--- /dev/null
+++ b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_pcb_scom_errors.H
@@ -0,0 +1,59 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_pcb_scom_errors.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2013 */
+/* */
+/* p1 */
+/* */
+/* Object Code Only (OCO) source materials */
+/* Licensed Internal Code Source Materials */
+/* IBM HostBoot Licensed Internal Code */
+/* */
+/* The source code for this program is not published or otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
+// $Id: p8_pcb_scom_errors.H,v 1.3 2013/02/16 20:26:51 stillgs Exp $
+// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/p8_pcb_scom_errors.H,v $
+//------------------------------------------------------------------------------
+// *! (C) Copyright International Business Machines Corp. 2011
+// *! All Rights Reserved -- Property of IBM
+// *! *** IBM Confidential ***
+//------------------------------------------------------------------------------
+// *! OWNER NAME: Gebhard Weber Email: gweber@de.ibm.com
+// *!
+// *! General Description: Defines FFDC error codes for the procedures
+// *! proc_timeout_error and proc_parity_error
+//------------------------------------------------------------------------------
+
+#ifndef P8_PCB_SCOM_ERRORS_H_
+#define P8_PCB_SCOM_ERRORS_H_
+
+//------------------------------------------------------------------------------
+// Function definitions
+//------------------------------------------------------------------------------
+
+extern "C" {
+
+ enum PCB_ERRORS {
+ PIB_NO_ERROR = 0x0,
+ PIB_XSCOM_ERROR = 0x1,
+ PIB_OFFLINE_ERROR = 0x2,
+ PIB_PARTIAL_ERROR = 0x3,
+ PIB_ADDRESS_ERROR = 0x4,
+ PIB_CLOCK_ERROR = 0x5,
+ PIB_PARITY_ERROR = 0x6,
+ PIB_TIMEOUT_ERROR = 0x7
+ };
+
+} // extern "C"
+
+#endif // P8_PCB_SCOM_ERRORS_H_
+
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C
index 67f945a36..806c7d475 100644
--- a/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C
+++ b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: p8_poreslw_init.C,v 1.9 2012/12/20 05:21:05 stillgs Exp $
+// $Id: p8_poreslw_init.C,v 1.11 2013/02/19 15:37:34 stillgs Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/p8_poreslw_init.C,v $
//------------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2011
@@ -65,6 +65,7 @@
#include "p8_poreslw_init.H"
#include "p8_pfet_init.H"
#include "p8_pmc_deconfig_setup.H"
+#include "p8_pcb_scom_errors.H"
extern "C" {
@@ -331,6 +332,8 @@ poreslw_ex_setup(const Target& i_target)
uint64_t address;
bool core_flag = false;
bool error_flag = false;
+ //@thi - fixed compiler error - Greg will fix this in next version
+ //uint32_t fsierror = 0;
uint8_t pm_sleep_type;
uint8_t pm_sleep_entry ;
@@ -346,11 +349,11 @@ poreslw_ex_setup(const Target& i_target)
const uint32_t PM_SLEEP_POWER_OFF_SEL_BIT = 2;
const uint32_t PM_WINKLE_POWER_DOWN_EN_BIT = 3;
const uint32_t PM_WINKLE_POWER_UP_EN_BIT = 4;
- const uint32_t PM_WINKLE_POWER_OFF_SEL_BIT = 5;
+ const uint32_t PM_WINKLE_POWER_OFF_SEL_BIT = 5;
-
- const uint32_t IDLE_STATE_OVERRIDE_EN = 6;
- const uint32_t PM_DISABLE = 0;
+ //@thi - fixed compiler error - Greg will fix this in next version
+ //const uint32_t IDLE_STATE_OVERRIDE_EN = 6;
+ const uint32_t PM_DISABLE = 0;
do
{
@@ -475,12 +478,15 @@ poreslw_ex_setup(const Target& i_target)
FAPI_INF("\tWARNING: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
- pm_sleep_entry = 1; // 0=HW, 1=assisted
- pm_sleep_exit = 1; // 0=HW, 1=assisted
+ pm_sleep_entry = 0; // 0=assisted, 1=HW
+ pm_sleep_exit = 0; // 0=assisted, 1=HW
pm_sleep_type = 1; // 0=fast, 1=deep
- pm_winkle_entry = 1; // 0=HW, 1=assisted
- pm_winkle_exit = 1; // 0=HW, 1=assisted
+ // Due to L3 Hight Availability Write Pointers that must be
+ // saved upon a Deep Winkle Entry, this transition must be
+ // assisted.
+ pm_winkle_entry = 0; // 0=assisted, 1=HW
+ pm_winkle_exit = 0; // 0=assisted, 1=HW
pm_winkle_type = 1; // 0=fast, 1=deep
@@ -508,28 +514,26 @@ poreslw_ex_setup(const Target& i_target)
e_rc |= clear_data.flushTo1(); // Set to 1s to be used for WAND
e_rc |= set_data.flushTo0(); // Set to 0s to be used for WOR
- // If sleep entry = 1 (assisted), sleep power down enable = 0
- // else sleep entry = 0 (hardware), sleep power down enable = 1
+ // If sleep entry = 1 (hardware), sleep power down enable = 1
+ // else sleep entry = 0 (assisted), sleep power down enable = 0
if (pm_sleep_entry)
- {
- e_rc |= clear_data.clearBit(PM_SLEEP_POWER_DOWN_EN_BIT);
-
+ {
+ e_rc |= set_data.setBit(PM_SLEEP_POWER_DOWN_EN_BIT);
}
else
{
- e_rc |= set_data.setBit(PM_SLEEP_POWER_DOWN_EN_BIT);
+ e_rc |= clear_data.clearBit(PM_SLEEP_POWER_DOWN_EN_BIT);
}
- // If sleep exit = 1 (assisted), sleep power up enable = 0
- // else sleep exit = 0 (hardware), sleep power up enable = 1
+ // If sleep exit = 1 (hardware), sleep power up enable = 1
+ // else sleep exit = 0 (assisted), sleep power up enable = 0
if (pm_sleep_exit)
{
- e_rc |= clear_data.clearBit(PM_SLEEP_POWER_UP_EN_BIT);
-
+ e_rc |= set_data.setBit(PM_SLEEP_POWER_UP_EN_BIT);
}
else
{
- e_rc |= set_data.setBit(PM_SLEEP_POWER_UP_EN_BIT);
+ e_rc |= clear_data.clearBit(PM_SLEEP_POWER_UP_EN_BIT);
}
// If sleep type = 1 (deep), sleep power up sel = 1
@@ -544,28 +548,26 @@ poreslw_ex_setup(const Target& i_target)
e_rc |= clear_data.clearBit(PM_SLEEP_POWER_OFF_SEL_BIT);
}
- // If winkle entry = 1 (assisted), winkle power down enable = 0
- // else winkle entry = 0 (hardware), winkle power down enable = 1
+ // If winkle entry = 1 (hardware), winkle power down enable = 1
+ // else winkle entry = 0 (assisted), winkle power down enable = 0
if (pm_winkle_entry)
{
- e_rc |= clear_data.clearBit(PM_WINKLE_POWER_DOWN_EN_BIT);
-
+ e_rc |= set_data.setBit(PM_WINKLE_POWER_DOWN_EN_BIT);
}
else
{
- e_rc |= set_data.setBit(PM_WINKLE_POWER_DOWN_EN_BIT);
+ e_rc |= clear_data.clearBit(PM_WINKLE_POWER_DOWN_EN_BIT);
}
- // If winkle exit = 1 (assisted), winkle power up enable = 0
- // else winkle exit = 0 (hardware), winkle power up enable = 1
+ // If winkle exit = 1 (hardware), winkle power up enable = 1
+ // else winkle exit = 0 (assisted), winkle power up enable = 0
if (pm_winkle_exit)
{
- e_rc |= clear_data.clearBit(PM_WINKLE_POWER_UP_EN_BIT);
-
+ e_rc |= set_data.setBit(PM_WINKLE_POWER_UP_EN_BIT);
}
else
{
- e_rc |= set_data.setBit(PM_WINKLE_POWER_UP_EN_BIT);
+ e_rc |= clear_data.clearBit(PM_WINKLE_POWER_UP_EN_BIT);
}
// If winkle type = 1 (deep), winkle power up sel = 1
@@ -610,8 +612,6 @@ poreslw_ex_setup(const Target& i_target)
FAPI_INF("\tDisable the PCBS Heartbeat EX %x", l_ex_number);
address = EX_SLAVE_CONFIG_0x100F001E + (l_ex_number * 0x01000000);
-//@thi - Temporary workaround. Greg Still agreed to fix this in his next version
-// l_rc = fapiGetScom(l_exChiplets[j], address, data);
l_rc = fapiGetScom(i_target, address, data);
if(!l_rc.ok())
{
@@ -635,13 +635,45 @@ poreslw_ex_setup(const Target& i_target)
}
// --------------------------------------
- // Check if SBE code has already cleard the OHA override.
+ // Check if SBE code has already cleared the OHA override.
// As chiplets may be enabled but offline (eg in Winkle)
// treat SCOM errors as off-line (eg skip it). If online
- // and set, clear the override.
+ // and set, clear the override.
+
+ /* GSS: removed as Cronus always puts a message out of (PCB_OFFLINE)
+ even though this code is meant to handle it. As this messge
+ can cause confusion in the lab, the check is being removed.
+ bool oha_accessible = true;
l_rc = fapiGetScom(l_exChiplets[j], EX_OHA_MODE_REG_RWx1002000D, data);
- if(l_rc.ok())
- {
+ if(!l_rc.ok())
+ {
+ l_rc = fapiGetCfamRegister( i_target, CFAM_FSI_STATUS_0x00001007, data );
+ if(!l_rc.ok())
+ {
+ FAPI_ERR("Error reading CFAM FSI Status Register");
+ break;
+ }
+ FAPI_INF( "CFAM_FSI_STATUS_0x00001007: 0x%X", data.getWord(0));
+ e_rc |= data.extractToRight( &fsierror, 17, 3 );
+ if ( e_rc )
+ {
+ l_rc.setEcmdError(e_rc);
+ break;
+ }
+ if (fsierror == PIB_OFFLINE_ERROR)
+ {
+ FAPI_INF( "Chiplet offline error detected. Skipping OHA Override clearing");
+ oha_accessible = false;
+ }
+ else
+ {
+ FAPI_ERR("Scom reading OHA_MODE");
+ break;
+ }
+ }
+ // Process if OHA accessible.
+ if (oha_accessible)
+ {
if (data.isBitSet(IDLE_STATE_OVERRIDE_EN))
{
@@ -662,10 +694,13 @@ poreslw_ex_setup(const Target& i_target)
}
}
}
+ End of check removal
+ */
// --------------------------------------
// Check that PM function is enabled (eg not disabled).
// If not, remove the disable
+
address = EX_PMGP0_0x100F0100 + (l_ex_number * 0x01000000);
l_rc=fapiGetScom(i_target, address, data);
if(!l_rc.ok())
@@ -740,6 +775,5 @@ poreslw_ex_setup(const Target& i_target)
return l_rc;
}
-
} //end extern
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_image_help_base.H b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_image_help_base.H
index e85bec40a..8163897af 100644
--- a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_image_help_base.H
+++ b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_image_help_base.H
@@ -20,17 +20,23 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: p8_image_help_base.H,v 1.12 2013/02/12 21:02:38 cmolsen Exp $
+// $Id: p8_image_help_base.H,v 1.15 2013/03/01 21:55:24 cmolsen Exp $
//------------------------------------------------------------------------------
// Title: p8_image_help_base.H
// Description: Contains the most basic structures and defines needed for
// image building and interpretation.
//------------------------------------------------------------------------------
-const uint32_t MAX_REF_IMAGE_SIZE = 5000000; // Max reference image size.
+//
+// Various image/ring buffer sizes. Must be used by all users (VBU, FSP, HB, HBI, Cronus)
+//
+const uint32_t MAX_REF_IMAGE_SIZE = 5000000; // Max reference image size.
+const uint32_t FIXED_SEEPROM_WORK_SPACE= 128*1024; // Max work space for Seeprom img.
+const uint32_t MAX_SEEPROM_IMAGE_SIZE = 56*1024; // Max Seeprom image size.
// Fixed SLW image size (Ensure 128-byte alignment.)
-const uint32_t FIXED_SLW_IMAGE_SIZE = 1024*1024; // Fixed SLW image size assumed by HB, PHYP and slw_build().
-const uint32_t FIXED_RING_BUF_SIZE = 60000; // Fixed ring buffer size assumed by HB, PHYP and slw_build(). Only use when emulating FAPI calls and for command-line utilities.
+const uint32_t FIXED_SLW_IMAGE_SIZE = 1024*1024; // Fixed SLW image size for _fixed.
+const uint32_t FIXED_RING_BUF_SIZE = 60000; // Fixed ring buf size for _fixed.
+
const uint8_t MAX_VPD_TYPES = 2; // #G and #R, so far.
#define CHIPLET_ID_MIN 0x00
#define CHIPLET_ID_MAX 0x1F
@@ -38,8 +44,9 @@ const uint8_t MAX_CHIPLETS = CHIPLET_ID_MAX-CHIPLET_ID_MIN+1;
const uint32_t ASM_RS4_LAUNCH_BUF_SIZE = 24; // Byte size of RS4 launch buffer.
const uint32_t WF_ENCAP_SIZE = 400; // Byte size of WF encapsulation.
// (Actually, only 304B but may change.)
-const uint32_t WF_WORST_CASE_SIZE_FAC = 3; // WC WF size = 3x ring length.
+const uint32_t WF_WORST_CASE_SIZE_FAC = 4; // WC WF size = 3x ring length.
// (Assumes 12B per write.)
+ // (4x w/waits instructions.)
const uint32_t LISTING_STRING_SIZE = 256;
const uint64_t MAX_UINT64_T = (uint64_t)0xFFFFFFFF<<32 | (uint64_t)0xFFFFFFFF;
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize_errors.xml b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize_errors.xml
index eaf1329d7..eac3d2f2c 100644
--- a/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize_errors.xml
+++ b/src/usr/hwpf/hwp/build_winkle_images/p8_slw_build/p8_xip_customize_errors.xml
@@ -24,9 +24,16 @@
<hwpErrors>
<!-- *********************************************************************** -->
<hwpError>
- <rc>RC_PROC_XIPC_INPUT_IMAGE_SIZE_MESS</rc>
- <description>Supplied max image size is too small or image too large.</description>
- <ffdc>DATA_IMG_SIZE_INP</ffdc>
+ <rc>RC_PROC_XIPC_IMAGE_WORK_SPACE_MESS</rc>
+ <description>Max work space for output image is not equal to FIXED_SEEPROM_WORK_SPACE.</description>
+ <ffdc>DATA_IMG_SIZE_MAX</ffdc>
+ <ffdc>DATA_IMG_SIZE_WORK_SPACE</ffdc>
+</hwpError>
+<!-- *********************************************************************** -->
+<hwpError>
+ <rc>RC_PROC_XIPC_IMAGE_SIZE_MESS</rc>
+ <description>Supplied max image size is smaller than input image.</description>
+ <ffdc>DATA_IMG_SIZE</ffdc>
<ffdc>DATA_IMG_SIZE_MAX</ffdc>
</hwpError>
<!-- *********************************************************************** -->
@@ -69,6 +76,12 @@
</hwpError>
<!-- *********************************************************************** -->
<hwpError>
+ <rc>RC_PROC_XIPC_GEN_SCOM_ERROR</rc>
+ <description>Updating Scom NC table w/L2 or L3 data failed. Check rc code in p8_delta_scan_rw.h</description>
+ <ffdc>RC_LOCAL</ffdc>
+</hwpError>
+<!-- *********************************************************************** -->
+<hwpError>
<rc>RC_PROC_XIPC_PLL_RING_SIZE_TOO_LARGE</rc>
<description>PLL ring size returned from attribute is too large.</description>
<ffdc>DATA_ATTRIBUTE_RING_SIZE</ffdc>
@@ -180,6 +193,30 @@
</hwpError>
<!-- *********************************************************************** -->
<hwpError>
+ <rc>RC_PROC_XIPC_CREATE_FIXED_IMAGE_ERROR</rc>
+ <description>Error associated with creating and initializing fixed image and fixed .slw and .ffdc sections.</description>
+ <ffdc>RC_LOCAL</ffdc>
+</hwpError>
+<!-- *********************************************************************** -->
+<hwpError>
+ <rc>RC_PROC_XIPC_MAX_IMAGE_SIZE_EXCEEDED</rc>
+ <description>New image size exceeds max allowed size.</description>
+ <ffdc>DATA_IMG_SIZE_NEW</ffdc>
+ <ffdc>DATA_IMG_SIZE_MAX</ffdc>
+</hwpError>
+<!-- *********************************************************************** -->
+<hwpError>
+ <rc>RC_PROC_XIPC_APPEND_SLW_SECTION_ERROR</rc>
+ <description>Error associated with adding empty SLW section for ram and scom tables.</description>
+ <ffdc>RC_LOCAL</ffdc>
+</hwpError>
+<!-- *********************************************************************** -->
+<hwpError>
+ <rc>RC_PROC_XIPC_BAD_CODE_OR_PARM</rc>
+ <description>Shouldn't be in this code section or invalid parm.</description>
+</hwpError>
+<!-- *********************************************************************** -->
+<hwpError>
<rc>RC_PROC_XIPC_UNKNOWN_ERROR</rc>
<description>Unknown error. (Shouldn't be in this code section.)</description>
<ffdc>RC_LOCAL</ffdc>
OpenPOWER on IntegriCloud