summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2013-10-16 09:26:48 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-10-17 11:34:10 -0500
commit739c8266d01ffc8539227888417328860e5e0952 (patch)
tree471e4ea0674de2abac62903d97f581ba9f6f294f
parent6da43ac34cbeffc49ab19afd899ace4b0b440bd1 (diff)
downloadtalos-hostboot-739c8266d01ffc8539227888417328860e5e0952.tar.gz
talos-hostboot-739c8266d01ffc8539227888417328860e5e0952.zip
Changes for PM RAS Review #2
Change-Id: I4cacaf6df60a9b82a09594c374d73bc35f84b67f Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/6699 Tested-by: Jenkins Server Reviewed-by: Thi N. Tran <thi@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
-rw-r--r--src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_errors.xml18
-rw-r--r--src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.C440
-rw-r--r--src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.H2
-rw-r--r--src/usr/hwpf/hwp/occ/occ_procedures/p8_pm_prep_for_reset.C3
-rw-r--r--[-rwxr-xr-x]src/usr/hwpf/hwp/occ/occ_procedures/p8_poregpe_init.C24
-rwxr-xr-xsrc/usr/hwpf/hwp/occ/occ_procedures/p8_pss_init.C104
-rw-r--r--src/usr/hwpf/hwp/p8_slw_registers.xml (renamed from src/usr/hwpf/hwp/proc_slw_registers.xml)10
-rw-r--r--src/usr/hwpf/hwp/runtime_errors/p8_gpe_registers.xml75
-rw-r--r--src/usr/hwpf/hwp/runtime_errors/p8_pm_prep_for_reset_errors.xml70
-rw-r--r--src/usr/hwpf/hwp/runtime_errors/p8_pmc_deconfig_setup_errors.xml29
-rw-r--r--src/usr/hwpf/hwp/runtime_errors/p8_poregpe_errors.xml34
-rw-r--r--src/usr/hwpf/hwp/runtime_errors/p8_pss_errors.xml42
-rw-r--r--src/usr/hwpf/hwp/runtime_errors/p8_pss_registers.xml49
-rw-r--r--src/usr/hwpf/makefile7
14 files changed, 555 insertions, 352 deletions
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_errors.xml b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_errors.xml
index 890f45fb7..78f91ddad 100644
--- a/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_errors.xml
+++ b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_errors.xml
@@ -20,7 +20,7 @@
<!-- Origin: 30 -->
<!-- -->
<!-- IBM_PROLOG_END_TAG -->
-<!-- $Id: p8_poreslw_errors.xml,v 1.2 2013/05/23 18:44:32 stillgs Exp $ -->
+<!-- $Id: p8_poreslw_errors.xml,v 1.3 2013/09/25 22:28:06 stillgs Exp $ -->
<!-- Error definitions for p8_poreslw procedure -->
<hwpErrors>
<!-- *********************************************************************** -->
@@ -32,10 +32,26 @@
<hwpError>
<rc>RC_PROCPM_SLW_RESET_TIMEOUT</rc>
<description>SLW reset failed in p8_poreslw_init.</description>
+ <ffdc>POLLCOUNT</ffdc>
+ <ffdc>MAXPOLLS</ffdc>
+ <collectRegisterFfdc>
+ <id>REG_FFDC_PROC_SLW_REGISTERS</id>
+ <id>REG_FFDC_PROC_SLW_FIR_REGISTERS</id>
+ <target>CHIP</target>
+ </collectRegisterFfdc>
+ <callout>
+ <target>CHIP</target>
+ <priority>HIGH</priority>
+ </callout>
</hwpError>
<!-- *********************************************************************** -->
<hwpError>
<rc>RC_PROCPM_PORESLW_CODE_BAD_MODE</rc>
<description>Unknown mode passed to p8_poreslw_init.</description>
+ <ffdc>IMODE</ffdc>
+ <callout>
+ <procedure>CODE</procedure>
+ <priority>HIGH</priority>
+ </callout>
</hwpError>
</hwpErrors>
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 72dd48dab..4d7040605 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.15 2013/08/02 19:09:56 stillgs Exp $
+// $Id: p8_poreslw_init.C,v 1.16 2013/09/25 22:36:39 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
@@ -141,6 +141,7 @@ p8_poreslw_init(const Target& i_target, uint32_t mode)
else {
FAPI_ERR("Unknown mode passed to p8_poreslw_init. Mode %x ....", mode);
+ uint32_t & IMODE = mode;
FAPI_SET_HWP_ERROR(rc, RC_PROCPM_PORESLW_CODE_BAD_MODE);
}
@@ -325,6 +326,9 @@ poreslw_reset(const Target& i_target)
if(!wait_state_detected)
{
FAPI_ERR("PORE SLW reset failed ");
+ const fapi::Target & CHIP = i_target;
+ uint32_t & POLLCOUNT = poll_count;
+ const uint32_t & MAXPOLLS = max_polls;
FAPI_SET_HWP_ERROR(rc, RC_PROCPM_SLW_RESET_TIMEOUT);
}
@@ -461,16 +465,18 @@ poreslw_ex_setup(const Target& i_target)
pm_winkle_exit);
*/
+
+ // 9/16/13: L3 High Availablity is not supported on P8 any longer. Removing.
// Due to L3 High Availability Write Pointers that must be
// saved upon a Deep Winkle Entry, this transition must be
// assisted.
- // \todo need Attribute for L3 HA enabled. GA1 = NO
- if (pm_winkle_entry != ASSISTED)
- {
- FAPI_INF("Winkle Entry is not configured in ASSISTED mode. L3 High Availability functions"
- " are not supported");
- FAPI_INF("Continuing anyway....");
- }
+ // If ever supported, would need an Attribute for L3 HA enabled. GA1 = NO
+ //if (pm_winkle_entry != ASSISTED)
+ //{
+ // FAPI_INF("Winkle Entry is not configured in ASSISTED mode. L3 High Availability functions"
+ // " are not supported");
+ // FAPI_INF("Continuing anyway....");
+ //}
// --------------------------------------
// Walk the configured chiplets
@@ -501,149 +507,196 @@ poreslw_ex_setup(const Target& i_target)
break;
}
- address = EX_GP3_0x100F0012 + (l_ex_number * 0x01000000);
- rc=fapiGetScom(i_target, address, data);
- if(rc)
+ FAPI_INF("\tSetting up Core %X ", l_ex_number);
+
+ // ******************************************************************
+ // Set PMGP1_REG
+ // ******************************************************************
+
+ FAPI_DBG("\t-----------------------------------------------------");
+ FAPI_DBG("\tPMGP1_REG Configuration ");
+ FAPI_DBG("\t-----------------------------------------------------");
+ FAPI_DBG("\t pm_sleep_entry => %d ", pm_sleep_entry );
+ FAPI_DBG("\t pm_sleep_exit => %d ", pm_sleep_exit );
+ FAPI_DBG("\t pm_sleep_type => %d ", pm_sleep_type );
+ FAPI_DBG("\t pm_winkle_entry => %d ", pm_winkle_entry );
+ FAPI_DBG("\t pm_winkle_exit => %d ", pm_winkle_exit );
+ FAPI_DBG("\t pm_winkle_type => %d ", pm_winkle_type );
+ FAPI_DBG("\t-----------------------------------------------------");
+
+
+ FAPI_DBG("\t*************************************");
+ FAPI_INF("\tSetup PMGP1_REG for EX %x", l_ex_number);
+ FAPI_DBG("\t*************************************");
+
+ // Initialize the set and clear vectors
+ 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 (hardware), sleep power down enable = 1
+ // else sleep entry = 0 (assisted), sleep power down enable = 0
+ if (pm_sleep_entry)
{
- FAPI_ERR("GetScom error");
- break;
+ e_rc |= set_data.setBit(PM_SLEEP_POWER_DOWN_EN_BIT);
+ }
+ else
+ {
+ e_rc |= clear_data.clearBit(PM_SLEEP_POWER_DOWN_EN_BIT);
}
- // Check if chiplet enable bit is set (configured). If so, process
- if ( data.isBitSet(0) )
+ // If sleep exit = 1 (hardware), sleep power up enable = 1
+ // else sleep exit = 0 (assisted), sleep power up enable = 0
+ if (pm_sleep_exit)
{
- FAPI_INF("\tSetting up Core %X ", l_ex_number);
-
- // ******************************************************************
- // Set PMGP1_REG
- // ******************************************************************
-
- FAPI_DBG("\t-----------------------------------------------------");
- FAPI_DBG("\tPMGP1_REG Configuration ");
- FAPI_DBG("\t-----------------------------------------------------");
- FAPI_DBG("\t pm_sleep_entry => %d ", pm_sleep_entry );
- FAPI_DBG("\t pm_sleep_exit => %d ", pm_sleep_exit );
- FAPI_DBG("\t pm_sleep_type => %d ", pm_sleep_type );
- FAPI_DBG("\t pm_winkle_entry => %d ", pm_winkle_entry );
- FAPI_DBG("\t pm_winkle_exit => %d ", pm_winkle_exit );
- FAPI_DBG("\t pm_winkle_type => %d ", pm_winkle_type );
- FAPI_DBG("\t-----------------------------------------------------");
-
-
- FAPI_DBG("\t*************************************");
- FAPI_INF("\tSetup PMGP1_REG for EX %x", l_ex_number);
- FAPI_DBG("\t*************************************");
-
- // Initialize the set and clear vectors
- 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 (hardware), sleep power down enable = 1
- // else sleep entry = 0 (assisted), sleep power down enable = 0
- if (pm_sleep_entry)
- {
- e_rc |= set_data.setBit(PM_SLEEP_POWER_DOWN_EN_BIT);
- }
- else
- {
- e_rc |= clear_data.clearBit(PM_SLEEP_POWER_DOWN_EN_BIT);
- }
+ e_rc |= set_data.setBit(PM_SLEEP_POWER_UP_EN_BIT);
+ }
+ else
+ {
+ e_rc |= clear_data.clearBit(PM_SLEEP_POWER_UP_EN_BIT);
+ }
- // 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 |= set_data.setBit(PM_SLEEP_POWER_UP_EN_BIT);
- }
- else
- {
- e_rc |= clear_data.clearBit(PM_SLEEP_POWER_UP_EN_BIT);
- }
+ // If sleep type = 1 (deep), sleep power up sel = 1
+ // else sleep type = 0 (fast), sleep power up sel = 0
+ if (pm_sleep_type)
+ {
+ e_rc |= set_data.setBit(PM_SLEEP_POWER_OFF_SEL_BIT);
- // If sleep type = 1 (deep), sleep power up sel = 1
- // else sleep type = 0 (fast), sleep power up sel = 0
- if (pm_sleep_type)
- {
- e_rc |= set_data.setBit(PM_SLEEP_POWER_OFF_SEL_BIT);
+ }
+ else
+ {
+ e_rc |= clear_data.clearBit(PM_SLEEP_POWER_OFF_SEL_BIT);
+ }
- }
- else
- {
- e_rc |= clear_data.clearBit(PM_SLEEP_POWER_OFF_SEL_BIT);
- }
+ // 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 |= set_data.setBit(PM_WINKLE_POWER_DOWN_EN_BIT);
+ }
+ else
+ {
+ e_rc |= clear_data.clearBit(PM_WINKLE_POWER_DOWN_EN_BIT);
+ }
- // 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 |= set_data.setBit(PM_WINKLE_POWER_DOWN_EN_BIT);
- }
- else
- {
- e_rc |= clear_data.clearBit(PM_WINKLE_POWER_DOWN_EN_BIT);
- }
+ // 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 |= set_data.setBit(PM_WINKLE_POWER_UP_EN_BIT);
+ }
+ else
+ {
+ e_rc |= clear_data.clearBit(PM_WINKLE_POWER_UP_EN_BIT);
+ }
- // 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 |= set_data.setBit(PM_WINKLE_POWER_UP_EN_BIT);
- }
- else
- {
- e_rc |= clear_data.clearBit(PM_WINKLE_POWER_UP_EN_BIT);
- }
+ // If winkle type = 1 (deep), winkle power up sel = 1
+ // else winkle type = 0 (fast), winkle power up sel = 0
+ if (pm_winkle_type)
+ {
+ e_rc |= set_data.setBit(PM_WINKLE_POWER_OFF_SEL_BIT);
- // If winkle type = 1 (deep), winkle power up sel = 1
- // else winkle type = 0 (fast), winkle power up sel = 0
- if (pm_winkle_type)
- {
- e_rc |= set_data.setBit(PM_WINKLE_POWER_OFF_SEL_BIT);
+ }
+ else
+ {
+ e_rc |= clear_data.clearBit(PM_WINKLE_POWER_OFF_SEL_BIT);
+ }
- }
- else
- {
- e_rc |= clear_data.clearBit(PM_WINKLE_POWER_OFF_SEL_BIT);
- }
+ // Check for any errors from set/clear ops into the buffers
+ if (e_rc)
+ {
+ FAPI_ERR("eCmdDataBuffer operation failed. rc = 0x%x", (uint32_t)e_rc);
+ rc.setEcmdError(e_rc);
+ break;
+ }
- // Check for any errors from set/clear ops into the buffers
- if (e_rc)
- {
- FAPI_ERR("eCmdDataBuffer operation failed. rc = 0x%x", (uint32_t)e_rc);
- rc.setEcmdError(e_rc);
- break;
- }
+ // The set and clear vectors are built. Write them to
+ // the respective addresses.
+ FAPI_DBG("\tEX_PMGP1_WOR 0x%16llx" , set_data.getDoubleWord(0));
+ address = EX_PMGP1_REG_0_WORx100F0105 + (l_ex_number * 0x01000000);
+ rc=fapiPutScom(i_target, address, set_data);
+ if (rc)
+ {
+ FAPI_ERR("fapiPutScom(EX_PMGP1_REG_0_WORx100F0105) failed. rc = 0x%x", (uint32_t)rc);
+ break;
+ }
- // The set and clear vectors are built. Write them to
- // the respective addresses.
- FAPI_DBG("\tEX_PMGP1_WOR 0x%16llx" , set_data.getDoubleWord(0));
- address = EX_PMGP1_REG_0_WORx100F0105 + (l_ex_number * 0x01000000);
- rc=fapiPutScom(i_target, address, set_data);
- if (rc)
- {
- FAPI_ERR("fapiPutScom(EX_PMGP1_REG_0_WORx100F0105) failed. rc = 0x%x", (uint32_t)rc);
- break;
- }
+ FAPI_DBG("\tEX_PMGP1_WAND 0x%16llx" , clear_data.getDoubleWord(0));
+ address = EX_PMGP1_REG_0_WANDx100F0104 + (l_ex_number * 0x01000000);
+ rc=fapiPutScom(i_target, address, clear_data);
+ if (rc)
+ {
+ FAPI_ERR("fapiPutScom(EX_PMGP1_REG_0_WORx100F0105) failed. rc = 0x%x", (uint32_t)rc);
+ break;
+ }
- FAPI_DBG("\tEX_PMGP1_WAND 0x%16llx" , clear_data.getDoubleWord(0));
- address = EX_PMGP1_REG_0_WANDx100F0104 + (l_ex_number * 0x01000000);
- rc=fapiPutScom(i_target, address, clear_data);
- if (rc)
- {
- FAPI_ERR("fapiPutScom(EX_PMGP1_REG_0_WORx100F0105) failed. rc = 0x%x", (uint32_t)rc);
- break;
- }
+ FAPI_INF("\tDisable the PCBS Heartbeat EX %x", l_ex_number);
+ address = EX_SLAVE_CONFIG_0x100F001E + (l_ex_number * 0x01000000);
+ rc = fapiGetScom(i_target, address, data);
+ if(!rc.ok())
+ {
+ FAPI_ERR("Scom error reading PCBS Slave Config");
+ break;
+ }
- FAPI_INF("\tDisable the PCBS Heartbeat EX %x", l_ex_number);
- address = EX_SLAVE_CONFIG_0x100F001E + (l_ex_number * 0x01000000);
- rc = fapiGetScom(i_target, address, data);
- if(!rc.ok())
- {
- FAPI_ERR("Scom error reading PCBS Slave Config");
- break;
- }
+ e_rc |= data.setBit(4);
+ if (e_rc)
+ {
+ FAPI_ERR("Error (0x%x) setting up ecmdDataBufferBase", e_rc);
+ rc.setEcmdError(e_rc);
+ break;
+ }
+
+ rc=fapiPutScom(i_target, address, data);
+ if(!rc.ok())
+ {
+ FAPI_ERR("Scom error writing PCBS Slave Config");
+ break;
+ }
+
+ // --------------------------------------
+ FAPI_INF("\tSet PMGP0(46) to deal with HW259509 - winkle Pstate stepping hang");
+ // This is a spare bit in Murano and Venice DD1s but
+ // is necessary to set in Murano and Venice DD2 to deal
+ // the hang condition that is fixed. As bit 46 is spare
+ // in the previous levels, setting it on all levels is not
+ // harmful.
+ address = EX_PMGP0_OR_0x100F0102 + (l_ex_number * 0x01000000);
+ e_rc |= data.flushTo0();
+ e_rc |= data.setBit(46);
+ if (e_rc)
+ {
+ FAPI_ERR("Error (0x%x) setting up ecmdDataBufferBase", e_rc);
+ rc.setEcmdError(e_rc);
+ break;
+ }
+
+ rc=fapiPutScom(i_target, address, data);
+ if(!rc.ok())
+ {
+ FAPI_ERR("Scom error setting PMGP0");
+ break;
+ }
+
+ // --------------------------------------
+ // Check that PM function is enabled (eg not disabled).
+ // If not, remove the disable
+
+ address = EX_PMGP0_0x100F0100 + (l_ex_number * 0x01000000);
+ rc=fapiGetScom(i_target, address, data);
+ if(!rc.ok())
+ {
+ FAPI_ERR("Scom error reading PMGP0");
+ break;
+ }
- e_rc |= data.setBit(4);
+ if (data.isBitSet(PM_DISABLE))
+ {
+
+ // Activate the PCBS-PM macro by clearing the PM_DISABLE bit
+ FAPI_INF("\tActivate the PCBS-PM for EX %x", l_ex_number);
+
+ e_rc |= data.flushTo1();
+ e_rc |= data.clearBit(PM_DISABLE);
if (e_rc)
{
FAPI_ERR("Error (0x%x) setting up ecmdDataBufferBase", e_rc);
@@ -651,23 +704,29 @@ poreslw_ex_setup(const Target& i_target)
break;
}
+ address = EX_PMGP0_AND_0x100F0101 + (l_ex_number * 0x01000000);
rc=fapiPutScom(i_target, address, data);
if(!rc.ok())
{
- FAPI_ERR("Scom error writing PCBS Slave Config");
+ FAPI_ERR("Scom error writing EX_PMGP0_OR");
break;
}
+ }
+
+ // --------------------------------------
+ // Clear OCC Special Wake-up bit - only 1 bit in the register
+ address = EX_PMSpcWkupOCC_REG_0x100F010C + (l_ex_number * 0x01000000);
+ rc=fapiGetScom(i_target, address, data);
+ if(!rc.ok())
+ {
+ FAPI_ERR("Scom error clearing EX_OCC_SPWKUP");
+ break;
+ }
- // --------------------------------------
- FAPI_INF("\tSet PMGP0(46) to deal with HW259509 - winkle Pstate stepping hang");
- // This is a spare bit in Murano and Venice DD1s but
- // is necessary to set in Murano and Venice DD2 to deal
- // the hang condition that is fixed. As bit 46 is spare
- // in the previous levels, setting it on all levels is not
- // harmful.
- address = EX_PMGP0_OR_0x100F0102 + (l_ex_number * 0x01000000);
+ if (data.isBitSet(0))
+ {
+ FAPI_INF("\tClear OCC Special Wake-up for EX %x", l_ex_number);
e_rc |= data.flushTo0();
- e_rc |= data.setBit(46);
if (e_rc)
{
FAPI_ERR("Error (0x%x) setting up ecmdDataBufferBase", e_rc);
@@ -678,90 +737,25 @@ poreslw_ex_setup(const Target& i_target)
rc=fapiPutScom(i_target, address, data);
if(!rc.ok())
{
- FAPI_ERR("Scom error setting PMGP0");
- break;
- }
-
- // --------------------------------------
- // Check that PM function is enabled (eg not disabled).
- // If not, remove the disable
-
- address = EX_PMGP0_0x100F0100 + (l_ex_number * 0x01000000);
- rc=fapiGetScom(i_target, address, data);
- if(!rc.ok())
- {
- FAPI_ERR("Scom error reading PMGP0");
- break;
- }
-
- if (data.isBitSet(PM_DISABLE))
- {
-
- // Activate the PCBS-PM macro by clearing the PM_DISABLE bit
- FAPI_INF("\tActivate the PCBS-PM for EX %x", l_ex_number);
-
- e_rc |= data.flushTo1();
- e_rc |= data.clearBit(PM_DISABLE);
- if (e_rc)
- {
- FAPI_ERR("Error (0x%x) setting up ecmdDataBufferBase", e_rc);
- rc.setEcmdError(e_rc);
- break;
- }
-
- address = EX_PMGP0_AND_0x100F0101 + (l_ex_number * 0x01000000);
- rc=fapiPutScom(i_target, address, data);
- if(!rc.ok())
- {
- FAPI_ERR("Scom error writing EX_PMGP0_OR");
- break;
- }
- }
-
- // --------------------------------------
- // Clear OCC Special Wake-up bit - only 1 bit in the register
- address = EX_PMSpcWkupOCC_REG_0x100F010C + (l_ex_number * 0x01000000);
- rc=fapiGetScom(i_target, address, data);
- if(!rc.ok())
- {
FAPI_ERR("Scom error clearing EX_OCC_SPWKUP");
break;
}
+ }
- if (data.isBitSet(0))
- {
- FAPI_INF("\tClear OCC Special Wake-up for EX %x", l_ex_number);
- e_rc |= data.flushTo0();
- if (e_rc)
- {
- FAPI_ERR("Error (0x%x) setting up ecmdDataBufferBase", e_rc);
- rc.setEcmdError(e_rc);
- break;
- }
-
- rc=fapiPutScom(i_target, address, data);
- if(!rc.ok())
- {
- FAPI_ERR("Scom error clearing EX_OCC_SPWKUP");
- break;
- }
- }
-
- // --------------------------------------
- // Initialize the special wake-up tracking attributes
- FAPI_INF("\tInitialize the special wake-up tracking attributes");
+ // --------------------------------------
+ // Initialize the special wake-up tracking attributes
+ FAPI_INF("\tInitialize the special wake-up tracking attributes");
- FAPI_EXEC_HWP(rc, p8_cpu_special_wakeup,
- l_exChiplets[j],
- SPCWKUP_INIT,
- SPW_ALL);
- if(rc)
- {
- FAPI_ERR("Special wake-up initialization error");
- break;
- }
+ FAPI_EXEC_HWP(rc, p8_cpu_special_wakeup,
+ l_exChiplets[j],
+ SPCWKUP_INIT,
+ SPW_ALL);
+ if(rc)
+ {
+ FAPI_ERR("Special wake-up initialization error");
+ break;
+ }
- } // Chiplet Enabled
} // chiplet loop
} while(0);
diff --git a/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.H b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.H
index ab0e7ed4a..3f7ee62a3 100644
--- a/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.H
+++ b/src/usr/hwpf/hwp/build_winkle_images/p8_set_pore_bar/p8_poreslw_init.H
@@ -5,7 +5,7 @@
/* */
/* IBM CONFIDENTIAL */
/* */
-/* COPYRIGHT International Business Machines Corp. 2012 */
+/* COPYRIGHT International Business Machines Corp. 2012,2013 */
/* */
/* p1 */
/* */
diff --git a/src/usr/hwpf/hwp/occ/occ_procedures/p8_pm_prep_for_reset.C b/src/usr/hwpf/hwp/occ/occ_procedures/p8_pm_prep_for_reset.C
index 7e5c6e518..d114e29bc 100644
--- a/src/usr/hwpf/hwp/occ/occ_procedures/p8_pm_prep_for_reset.C
+++ b/src/usr/hwpf/hwp/occ/occ_procedures/p8_pm_prep_for_reset.C
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: p8_pm_prep_for_reset.C,v 1.21 2013/08/02 19:12:40 stillgs Exp $
+// $Id: p8_pm_prep_for_reset.C,v 1.22 2013/09/25 22:36:37 stillgs Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/p8_pm_prep_for_reset.C,v $
//------------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2011
@@ -168,6 +168,7 @@ p8_pm_prep_for_reset( const fapi::Target &i_primary_chip_target,
if ( i_primary_chip_target.getType() == TARGET_TYPE_NONE )
{
FAPI_ERR("Set primay target properly for SCM " );
+ const fapi::Target PRIMARY_TARGET = i_primary_chip_target;
FAPI_SET_HWP_ERROR(rc, RC_PROCPM_PREP_TARGET_ERR);
break;
}
diff --git a/src/usr/hwpf/hwp/occ/occ_procedures/p8_poregpe_init.C b/src/usr/hwpf/hwp/occ/occ_procedures/p8_poregpe_init.C
index 05a8ef333..ede0878c7 100755..100644
--- a/src/usr/hwpf/hwp/occ/occ_procedures/p8_poregpe_init.C
+++ b/src/usr/hwpf/hwp/occ/occ_procedures/p8_poregpe_init.C
@@ -21,7 +21,7 @@
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: p8_poregpe_init.C,v 1.4 2013/08/02 19:09:35 stillgs Exp $
+// $Id: p8_poregpe_init.C,v 1.5 2013/09/25 22:36:40 stillgs Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/p8_poregpe_init.C,v $
//------------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2011
@@ -108,10 +108,12 @@ p8_poregpe_init(const Target& i_target, uint32_t mode, uint32_t engine)
if (!(engine == GPE0 || engine == GPE1 || engine == GPEALL) )
{
- FAPI_ERR("Unknown engine passed to p8_poregpe_init. Engine %x ....",
+ FAPI_ERR("Unknown engine passed to p8_poregpe_init. Engine %x ....",
engine);
- FAPI_SET_HWP_ERROR(l_rc, RC_PROCPM_GPE_BAD_ENGINE);
- break;
+ const fapi::Target & CHIP = i_target;
+ const uint32_t & IENGINE = engine;
+ FAPI_SET_HWP_ERROR(l_rc, RC_PROCPM_GPE_BAD_ENGINE);
+ break;
}
/// -------------------------------
@@ -163,8 +165,10 @@ p8_poregpe_init(const Target& i_target, uint32_t mode, uint32_t engine)
else
{
- FAPI_ERR("Unknown mode passed to p8_poregpe_init. Mode %x ....", mode);
- FAPI_SET_HWP_ERROR(l_rc, RC_PROCPM_GPE_CODE_BAD_MODE);
+ FAPI_ERR("Unknown mode passed to p8_poregpe_init. Mode %x ....", mode);
+ const fapi::Target & CHIP = i_target;
+ uint32_t & IMODE = mode;
+ FAPI_SET_HWP_ERROR(l_rc, RC_PROCPM_GPE_CODE_BAD_MODE);
}
} while(0);
@@ -212,6 +216,8 @@ poregpe_reset(const Target& i_target, const uint32_t engine)
else
{
FAPI_ERR("Invalid engine parm passed to poregpe_reset");
+ const fapi::Target & CHIP = i_target;
+ const uint32_t & IENGINE = engine;
FAPI_SET_HWP_ERROR(l_rc, RC_PROCPM_GPE_BAD_ENGINE);
break;
}
@@ -295,7 +301,11 @@ poregpe_reset(const Target& i_target, const uint32_t engine)
if(!wait_state_detected)
{
FAPI_ERR("GPE%x reset failed ", engine);
- FAPI_SET_HWP_ERROR(l_rc, RC_PROCPM_GPE0_RESET_TIMEOUT);
+ const fapi::Target & CHIP = i_target;
+ uint32_t & POLLCOUNT = poll_count;
+ const uint32_t & MAXPOLLS = max_polls;
+ const uint32_t & IENGINE = engine;
+ FAPI_SET_HWP_ERROR(l_rc, RC_PROCPM_GPE_RESET_TIMEOUT);
}
} while(0);
diff --git a/src/usr/hwpf/hwp/occ/occ_procedures/p8_pss_init.C b/src/usr/hwpf/hwp/occ/occ_procedures/p8_pss_init.C
index 125bedb85..5e44b7801 100755
--- a/src/usr/hwpf/hwp/occ/occ_procedures/p8_pss_init.C
+++ b/src/usr/hwpf/hwp/occ/occ_procedures/p8_pss_init.C
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: p8_pss_init.C,v 1.6 2013/08/02 19:11:20 stillgs Exp $
+// $Id: p8_pss_init.C,v 1.7 2013/09/25 22:36:42 stillgs Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/p8_pss_init.C,v $
//------------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2011
@@ -140,7 +140,8 @@ p8_pss_init(const Target &i_target, uint32_t mode)
else
{
FAPI_ERR("Unknown mode passed to p8_pss_init. Mode %x ....", mode);
- uint32_t & MODE = mode;
+ const fapi::Target & CHIP = i_target;
+ uint32_t & IMODE = mode;
FAPI_SET_HWP_ERROR(rc, RC_PROCPM_PSS_CODE_BAD_MODE);
}
@@ -710,44 +711,27 @@ pss_init(const Target& i_target)
fapi::ReturnCode
pss_reset(const Target& i_target)
{
- fapi::ReturnCode rc;
+ fapi::ReturnCode rc;
uint32_t e_rc = 0;
ecmdDataBufferBase data(64);
- uint32_t attr_proc_pss_init_nest_frequency;
- float pss_cycle_ns;
- uint32_t pollcount=0;
- float max_polls;
- uint32_t pss_timeout_us = 1000;
+ uint32_t pollcount = 0;
+ uint32_t max_polls;
+ const uint32_t pss_timeout_us = 10000; // 10 millisecond. Far longer than needed
+ const uint32_t pss_poll_interval_us = 10;
FAPI_INF("PSS reset start...");
do
{
- // Determine the PowerBus frequency to determine the clock speed
- // of the PSS logic. This determines the number of polls needed
- // for a given timeout interval.
- GETATTR( rc,
- ATTR_FREQ_PB,
- "ATTR_FREQ_PB",
- NULL,
- attr_proc_pss_init_nest_frequency);
-
- pss_cycle_ns = ((1/(float)attr_proc_pss_init_nest_frequency)*4);
- FAPI_DBG("pss_cycle_ns = %f; pss_nest_freq = %d",
- pss_cycle_ns, attr_proc_pss_init_nest_frequency);
- max_polls = (pss_timeout_us / (pss_cycle_ns / 1000));
- FAPI_DBG("computed max polls = %f; pss_timeout_us = %d; pss_cycle_ns = %f",
- max_polls, pss_timeout_us, pss_cycle_ns);
-
// ******************************************************************
- // - Poll status register for ongoing or errors to give the
+ // - Poll status register for ongoing or no errors to give the
// chance for on-going operations to complete
// ******************************************************************
FAPI_DBG("Polling for ADC on-going to go low ... ");
-
- do
+ max_polls = pss_timeout_us / pss_poll_interval_us;
+ for (pollcount = 0; pollcount < max_polls; pollcount++)
{
rc = fapiGetScom(i_target, SPIPSS_ADC_STATUS_REG_0x00070003, data );
if (rc)
@@ -755,21 +739,39 @@ pss_reset(const Target& i_target)
FAPI_ERR("fapiGetScom(SPIPSS_ADC_STATUS_REG_0x00070003) failed.");
break;
}
- FAPI_INF(".");
- pollcount++;
- } while (data.isBitSet(0) && data.isBitClear(5) && pollcount < max_polls);
+ // Ongoing is not set OR an error
+ if (data.isBitClear(0) || data.isBitSet(7))
+ {
+ break;
+ }
+ FAPI_DBG("Delay before next poll");
+ e_rc = fapiDelay(pss_poll_interval_us*1000, 1000); // ns, sim clocks
+ if (e_rc)
+ {
+ FAPI_ERR("fapiDelay error");
+ rc.setEcmdError(e_rc);
+ break;
+ }
+ }
if (!rc.ok())
{
break;
}
+ if (data.isBitSet(7))
+ {
+ FAPI_ERR("SPIADC error bit asserted waiting for operation to complete.");
+ const fapi::Target & CHIP = i_target;
+ FAPI_SET_HWP_ERROR(rc, RC_PROCPM_PSS_ADC_ERROR);
+ break;
+ }
if (pollcount >= max_polls)
{
- FAPI_INF("WARNING: SPI ADC did not go to idle in %d us. Reset of PSS macro is commencing anyway", pss_timeout_us);
+ FAPI_INF("WARNING: SPI ADC did not go to idle in at least %d us. Reset of PSS macro is commencing anyway", pss_timeout_us);
break;
}
else
{
- FAPI_INF("Send all the frames from ADC to the device.So now resetting it ");
+ FAPI_INF("All frames sent from ADC to the APSS device.");
}
// ******************************************************************
@@ -778,8 +780,7 @@ pss_reset(const Target& i_target)
// ******************************************************************
FAPI_INF("Polling for P2S on-going to go low ... ");
- pollcount = 0;
- do
+ for (pollcount = 0; pollcount < max_polls; pollcount++)
{
rc = fapiGetScom(i_target, SPIPSS_P2S_STATUS_REG_0x00070043, data );
if (rc)
@@ -787,28 +788,49 @@ pss_reset(const Target& i_target)
FAPI_ERR("fapiGetScom(SPIPSS_P2S_STATUS_REG_0x00070043) failed.");
break;
}
- FAPI_INF(".");
- pollcount++;
- } while (data.isBitSet(0) && data.isBitClear(5) && pollcount < max_polls);
+
+ // Ongoing is not set OR an error
+ if (data.isBitClear(0) || data.isBitSet(7))
+ {
+ break;
+ }
+ FAPI_DBG("Delay before next poll");
+ e_rc = fapiDelay(pss_poll_interval_us*1000, 1000); // ns, sim clocks
+ if (e_rc)
+ {
+ rc.setEcmdError(e_rc);
+ break;
+ }
+ }
if (!rc.ok())
{
break;
}
- if (pollcount >= max_polls)
+ if (data.isBitSet(7))
{
- FAPI_INF("WARNING: SPI P2S did not go to idle in %d us. Reset of PSS macro is commencing anyway", pss_timeout_us);
+ FAPI_ERR("SPIP2S FSM error bit asserted waiting for operation to complete.");
+ const fapi::Target & CHIP = i_target;
+ FAPI_SET_HWP_ERROR(rc, RC_PROCPM_PSS_P2S_ERROR);
break;
}
+ if (data.isBitSet(5))
+ {
+ FAPI_INF("SPIP2S Write While Bridge Busy bit asserted. Will be cleared with coming reset");
+ }
+ if (pollcount >= max_polls)
+ {
+ FAPI_INF("WARNING: SPI P2S did not go to idle in at least %d us. Reset of PSS macro is commencing anyway", pss_timeout_us);
+ }
else
{
- FAPI_INF("Sent all the frames from P2S bridge to the device.");
+ FAPI_INF("SAll frames sent from P2S to the APSS device.");
}
// ******************************************************************
// - Resetting both ADC and P2S bridge
// ******************************************************************
- FAPI_INF("Resetting P2S and ADC bridge.");
+ FAPI_INF("Resetting P2S and ADC bridges.");
e_rc=data.flushTo0();
e_rc=data.setBit(1);
diff --git a/src/usr/hwpf/hwp/proc_slw_registers.xml b/src/usr/hwpf/hwp/p8_slw_registers.xml
index 5844b8bb6..de18af592 100644
--- a/src/usr/hwpf/hwp/proc_slw_registers.xml
+++ b/src/usr/hwpf/hwp/p8_slw_registers.xml
@@ -1,7 +1,7 @@
<!-- IBM_PROLOG_BEGIN_TAG -->
<!-- This is an automatically generated prolog. -->
<!-- -->
-<!-- $Source: src/usr/hwpf/hwp/proc_slw_registers.xml $ -->
+<!-- $Source: src/usr/hwpf/hwp/p8_slw_registers.xml $ -->
<!-- -->
<!-- IBM CONFIDENTIAL -->
<!-- -->
@@ -20,7 +20,7 @@
<!-- Origin: 30 -->
<!-- -->
<!-- IBM_PROLOG_END_TAG -->
-<!-- $Id: proc_slw_registers.xml,v 1.1 2013/06/21 14:11:14 jeshua Exp $ -->
+<!-- $Id: p8_slw_registers.xml,v 1.1 2013/10/08 15:45:18 stillgs Exp $ -->
<!-- Definition of SLW registers to collect on some errors -->
<hwpErrors>
<registerFfdc>
@@ -52,4 +52,10 @@
<scomRegister>PORE_SLW_I2C_E1_PARAM_0x00068018</scomRegister>
<scomRegister>PORE_SLW_I2C_E2_PARAM_0x00068019</scomRegister>
</registerFfdc>
+ <registerFfdc>
+ <id>REG_FFDC_PROC_SLW_FIR_REGISTERS</id>
+ <scomRegister>PMC_LFIR_0x01010840</scomRegister>
+ <scomRegister>OCC_LFIR_0x01010800</scomRegister>
+ <scomRegister>PBA_FIR_0x02010840</scomRegister>
+ </registerFfdc>
</hwpErrors>
diff --git a/src/usr/hwpf/hwp/runtime_errors/p8_gpe_registers.xml b/src/usr/hwpf/hwp/runtime_errors/p8_gpe_registers.xml
new file mode 100644
index 000000000..a3df227de
--- /dev/null
+++ b/src/usr/hwpf/hwp/runtime_errors/p8_gpe_registers.xml
@@ -0,0 +1,75 @@
+<!-- IBM_PROLOG_BEGIN_TAG -->
+<!-- This is an automatically generated prolog. -->
+<!-- -->
+<!-- $Source: src/usr/hwpf/hwp/runtime_errors/p8_gpe_registers.xml $ -->
+<!-- -->
+<!-- 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_gpe_registers.xml,v 1.1 2013/10/08 15:45:17 stillgs Exp $ -->
+<!-- Definition of GPE registers to collect on some errors -->
+<hwpErrors>
+ <registerFfdc>
+ <id>REG_FFDC_PROC_GPE_REGISTERS</id>
+ <scomRegister>PORE_GPE0_STATUS_0x00060000</scomRegister>
+ <scomRegister>PORE_GPE0_CONTROL_0x00060001</scomRegister>
+ <scomRegister>PORE_GPE0_RESET_0x00060002</scomRegister>
+ <scomRegister>PORE_GPE0_ERROR_MASK_0x00060003</scomRegister>
+ <scomRegister>PORE_GPE0_PRV_BASE_ADDRESS0_0x00060004</scomRegister>
+ <scomRegister>PORE_GPE0_PRV_BASE_ADDRESS1_0x00060005</scomRegister>
+ <scomRegister>PORE_GPE0_OCI_BASE_ADDRESS0_0x00060006</scomRegister>
+ <scomRegister>PORE_GPE0_OCI_BASE_ADDRESS1_0x00060007</scomRegister>
+ <scomRegister>PORE_GPE0_TABLE_BASE_ADDR_0x00060008</scomRegister>
+ <scomRegister>PORE_GPE0_EXE_TRIGGER_0x00060009</scomRegister>
+ <scomRegister>PORE_GPE0_SCRATCH0_0x0006000A</scomRegister>
+ <scomRegister>PORE_GPE0_SCRATCH1_0x0006000B</scomRegister>
+ <scomRegister>PORE_GPE0_SCRATCH2_0x0006000C</scomRegister>
+ <scomRegister>PORE_GPE0_IBUF_01_0x0006000D</scomRegister>
+ <scomRegister>PORE_GPE0_IBUF_2_0x0006000E</scomRegister>
+ <scomRegister>PORE_GPE0_DBG0_0x0006000F</scomRegister>
+ <scomRegister>PORE_GPE0_DBG1_0x00060010</scomRegister>
+ <scomRegister>PORE_GPE0_PC_STACK0_0x00060011</scomRegister>
+ <scomRegister>PORE_GPE0_PC_STACK1_0x00060012</scomRegister>
+ <scomRegister>PORE_GPE0_PC_STACK2_0x00060013</scomRegister>
+ <scomRegister>PORE_GPE0_ID_FLAGS_0x00060014</scomRegister>
+ <scomRegister>PORE_GPE0_DATA0_0x00060015</scomRegister>
+ <scomRegister>PORE_GPE0_MEMORY_RELOC_0x00060016</scomRegister>
+ <scomRegister>PORE_GPE1_STATUS_0x00060020</scomRegister>
+ <scomRegister>PORE_GPE1_CONTROL_0x00060021</scomRegister>
+ <scomRegister>PORE_GPE1_RESET_0x00060022</scomRegister>
+ <scomRegister>PORE_GPE1_ERROR_MASK_0x00060023</scomRegister>
+ <scomRegister>PORE_GPE1_PRV_BASE_ADDRESS0_0x00060024</scomRegister>
+ <scomRegister>PORE_GPE1_PRV_BASE_ADDRESS1_0x00060025</scomRegister>
+ <scomRegister>PORE_GPE1_OCI_BASE_ADDRESS0_0x00060026</scomRegister>
+ <scomRegister>PORE_GPE1_OCI_BASE_ADDRESS1_0x00060027</scomRegister>
+ <scomRegister>PORE_GPE1_TABLE_BASE_ADDR_0x00060028</scomRegister>
+ <scomRegister>PORE_GPE1_EXE_TRIGGER_0x00060029</scomRegister>
+ <scomRegister>PORE_GPE1_SCRATCH0_0x0006002A</scomRegister>
+ <scomRegister>PORE_GPE1_SCRATCH1_0x0006002B</scomRegister>
+ <scomRegister>PORE_GPE1_SCRATCH2_0x0006002C</scomRegister>
+ <scomRegister>PORE_GPE1_IBUF_01_0x0006002D</scomRegister>
+ <scomRegister>PORE_GPE1_IBUF_2_0x0006002E</scomRegister>
+ <scomRegister>PORE_GPE1_DBG0_0x0006002F</scomRegister>
+ <scomRegister>PORE_GPE1_DBG1_0x00060030</scomRegister>
+ <scomRegister>PORE_GPE1_PC_STACK0_0x00060031</scomRegister>
+ <scomRegister>PORE_GPE1_PC_STACK1_0x00060032</scomRegister>
+ <scomRegister>PORE_GPE1_PC_STACK2_0x00060033</scomRegister>
+ <scomRegister>PORE_GPE1_ID_FLAGS_0x00060034</scomRegister>
+ <scomRegister>PORE_GPE1_DATA0_0x00060035</scomRegister>
+ <scomRegister>PORE_GPE1_MEMORY_RELOC_0x00060036</scomRegister>
+ </registerFfdc>
+</hwpErrors>
diff --git a/src/usr/hwpf/hwp/runtime_errors/p8_pm_prep_for_reset_errors.xml b/src/usr/hwpf/hwp/runtime_errors/p8_pm_prep_for_reset_errors.xml
index 9896f2bb3..a28228783 100644
--- a/src/usr/hwpf/hwp/runtime_errors/p8_pm_prep_for_reset_errors.xml
+++ b/src/usr/hwpf/hwp/runtime_errors/p8_pm_prep_for_reset_errors.xml
@@ -20,74 +20,28 @@
<!-- Origin: 30 -->
<!-- -->
<!-- IBM_PROLOG_END_TAG -->
-<!-- $Id: p8_pm_prep_for_reset_errors.xml,v 1.4 2013/08/02 19:15:40 stillgs Exp $ -->
-<!-- Error definitions for proc_pcbs_init procedure -->
+<!-- $Id: p8_pm_prep_for_reset_errors.xml,v 1.6 2013-10-15 17:29:30 dcrowell Exp $ -->
+<!-- Error definitions for p8_pm_prep_for_reset procedure -->
<hwpErrors>
<!-- *********************************************************************** -->
<hwpError>
<rc>RC_PROCPM_PREP_UNSUPPORTED_MODE_ERR</rc>
<description>Mode parameter value not supported</description>
<ffdc>MODE</ffdc>
+ <callout>
+ <procedure>CODE</procedure>
+ <priority>HIGH</priority>
+ </callout>
</hwpError>
<!-- *********************************************************************** -->
<hwpError>
<rc>RC_PROCPM_PREP_TARGET_ERR</rc>
- <description>Errors in Targets passed -- PM_RESET-MODE</description>
- </hwpError>
- <!-- *********************************************************************** -->
- <hwpError>
- <rc>RC_PROCPM_PREP_CODE_PROC_OCC</rc>
- <description>Errors in proc_occ_control.C -- PM_RESET-MODE</description>
- </hwpError>
- <!-- *********************************************************************** -->
- <hwpError>
- <rc>RC_PROCPM_PREP_CODE_PROC_CPU</rc>
- <description>Errors in proc_cpu_special_wakeup.C -- PM_RESET-MODE</description>
- </hwpError>
- <!-- *********************************************************************** -->
- <hwpError>
- <rc>RC_PROCPM_PREP_CODE_PROC_PMC_FORCE</rc>
- <description>Errors in proc_pmc_force_vsafe.C -- PM_RESET-MODE</description>
- </hwpError>
- <!-- *********************************************************************** -->
- <hwpError>
- <rc>RC_PROCPM_PREP_CODE_PROC_PCBS</rc>
- <description>Errors in proc__pcbs_init.C -- PM_RESET-MODE</description>
- </hwpError>
- <!-- *********************************************************************** -->
- <hwpError>
- <rc>RC_PROCPM_PREP_CODE_PROC_PMC_INIT</rc>
- <description>Errors in proc_pmc_init.C -- PM_RESET-MODE</description>
- </hwpError>
- <!-- *********************************************************************** -->
- <hwpError>
- <rc>RC_PROCPM_PREP_CODE_PROC_PORESW</rc>
- <description>Errors in proc_poresw_init.C -- PM_RESET-MODE</description>
- </hwpError>
- <!-- *********************************************************************** -->
- <hwpError>
- <rc>RC_PROCPM_PREP_CODE_PROC_POREGPE</rc>
- <description>Errors in proc_poregpe_init.C -- PM_RESET-MODE</description>
- </hwpError>
- <!-- *********************************************************************** -->
- <hwpError>
- <rc>RC_PROCPM_PREP_CODE_PROC_OHA</rc>
- <description>Errors in proc_oha_init.C -- PM_RESET-MODE</description>
- </hwpError>
- <!-- *********************************************************************** -->
- <hwpError>
- <rc>RC_PROCPM_PREP_CODE_PROC_PBA</rc>
- <description>Errors in proc_pba_init.C -- PM_RESET-MODE</description>
- </hwpError>
- <!-- *********************************************************************** -->
- <hwpError>
- <rc>RC_PROCPM_PREP_CODE_PROC_OCC_SRAM</rc>
- <description>Errors in proc_occ_sram_init.C -- PM_RESET-MODE</description>
- </hwpError>
- <!-- *********************************************************************** -->
- <hwpError>
- <rc>RC_PROCPM_PREP_CODE_PROC_OCB</rc>
- <description>Errors in proc_ocb_init.C -- PM_RESET-MODE</description>
+ <description>Primary target must be set to a valid value in the SCM case.</description>
+ <ffdc>PRIMARY_TARGET</ffdc>
+ <callout>
+ <procedure>CODE</procedure>
+ <priority>HIGH</priority>
+ </callout>
</hwpError>
<!-- *********************************************************************** -->
</hwpErrors>
diff --git a/src/usr/hwpf/hwp/runtime_errors/p8_pmc_deconfig_setup_errors.xml b/src/usr/hwpf/hwp/runtime_errors/p8_pmc_deconfig_setup_errors.xml
new file mode 100644
index 000000000..21210120f
--- /dev/null
+++ b/src/usr/hwpf/hwp/runtime_errors/p8_pmc_deconfig_setup_errors.xml
@@ -0,0 +1,29 @@
+<!-- IBM_PROLOG_BEGIN_TAG -->
+<!-- This is an automatically generated prolog. -->
+<!-- -->
+<!-- $Source: src/usr/hwpf/hwp/runtime_errors/p8_pmc_deconfig_setup_errors.xml $ -->
+<!-- -->
+<!-- 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_pmc_deconfig_setup_errors.xml,v 1.3 2013-10-15 17:36:08 dcrowell Exp $ -->
+<!-- Error definitions for p8_pmc_deconfig_setup procedure -->
+<hwpErrors>
+ <!-- *********************************************************************** -->
+ <!-- No errors yet, keeping as placeholder -->
+ <!-- *********************************************************************** -->
+</hwpErrors>
diff --git a/src/usr/hwpf/hwp/runtime_errors/p8_poregpe_errors.xml b/src/usr/hwpf/hwp/runtime_errors/p8_poregpe_errors.xml
index 97c314aec..d6b72e356 100644
--- a/src/usr/hwpf/hwp/runtime_errors/p8_poregpe_errors.xml
+++ b/src/usr/hwpf/hwp/runtime_errors/p8_poregpe_errors.xml
@@ -20,27 +20,45 @@
<!-- Origin: 30 -->
<!-- -->
<!-- IBM_PROLOG_END_TAG -->
-<!-- $Id: p8_poregpe_errors.xml,v 1.2 2013/05/23 18:44:30 stillgs Exp $ -->
+<!-- $Id: p8_poregpe_errors.xml,v 1.4 2013-10-15 17:36:07 dcrowell Exp $ -->
<!-- Error definitions for proc_poregpe procedure -->
<hwpErrors>
<!-- *********************************************************************** -->
<hwpError>
- <rc>RC_PROCPM_GPE0_RESET_TIMEOUT</rc>
- <description>GPE0 reset failed in proc_poregpe_init.</description>
- </hwpError>
- <!-- *********************************************************************** -->
- <hwpError>
- <rc>RC_PROCPM_GPE1_RESET_TIMEOUT</rc>
- <description>GPE1 reset failed in proc_poregpe_init.</description>
+ <rc>RC_PROCPM_GPE_RESET_TIMEOUT</rc>
+ <description>GPE reset failed in proc_poregpe_init.</description>
+ <ffdc>POLLCOUNT</ffdc>
+ <ffdc>MAXPOLLS</ffdc>
+ <ffdc>IENGINE</ffdc>
+ <collectRegisterFfdc>
+ <id>REG_FFDC_PROC_GPE_REGISTERS</id>
+ <target>CHIP</target>
+ </collectRegisterFfdc>
+ <callout>
+ <target>CHIP</target>
+ <priority>HIGH</priority>
+ </callout>
</hwpError>
<!-- *********************************************************************** -->
<hwpError>
<rc>RC_PROCPM_GPE_CODE_BAD_MODE</rc>
<description>Unknown mode passed to proc_poregpe_init.</description>
+ <ffdc>IMODE</ffdc>
+ <ffdc>CHIP</ffdc>
+ <callout>
+ <procedure>CODE</procedure>
+ <priority>HIGH</priority>
+ </callout>
</hwpError>
<!-- *********************************************************************** -->
<hwpError>
<rc>RC_PROCPM_GPE_BAD_ENGINE</rc>
<description>Unknown engine passed to proc_poregpe_init. </description>
+ <ffdc>IENGINE</ffdc>
+ <ffdc>CHIP</ffdc>
+ <callout>
+ <procedure>CODE</procedure>
+ <priority>HIGH</priority>
+ </callout>
</hwpError>
</hwpErrors>
diff --git a/src/usr/hwpf/hwp/runtime_errors/p8_pss_errors.xml b/src/usr/hwpf/hwp/runtime_errors/p8_pss_errors.xml
index 04f3a7c36..e1c7f0ed5 100644
--- a/src/usr/hwpf/hwp/runtime_errors/p8_pss_errors.xml
+++ b/src/usr/hwpf/hwp/runtime_errors/p8_pss_errors.xml
@@ -20,19 +20,45 @@
<!-- Origin: 30 -->
<!-- -->
<!-- IBM_PROLOG_END_TAG -->
-<!-- $Id: p8_pss_errors.xml,v 1.3 2013/08/02 19:15:43 stillgs Exp $ -->
-<!-- Error definitions for proc_pmc_init procedure -->
+<!-- $Id: p8_pss_errors.xml,v 1.5 2013-10-15 17:39:44 dcrowell Exp $ -->
+<!-- Error definitions for proc_pss_init procedure -->
<hwpErrors>
<!-- *********************************************************************** -->
<hwpError>
<rc>RC_PROCPM_PSS_CODE_BAD_MODE</rc>
<description>Unknown mode passed to proc_pss_init.</description>
- <ffdc>MODE</ffdc>
- </hwpError>
- <!-- *********************************************************************** -->
+ <ffdc>IMODE</ffdc>
+ <ffdc>CHIP</ffdc>
+ <callout>
+ <procedure>CODE</procedure>
+ <priority>HIGH</priority>
+ </callout>
+ </hwpError>
+ <!-- *********************************************************************** -->
+ <hwpError>
+ <rc>RC_PROCPM_PSS_ADC_ERROR</rc>
+ <description>SPIADC error bit asserted waiting for operation to complete."</description>
+ <collectRegisterFfdc>
+ <id>REG_FFDC_PROC_PSS_REGISTERS</id>
+ <target>CHIP</target>
+ </collectRegisterFfdc>
+ <callout>
+ <target>CHIP</target>
+ <priority>HIGH</priority>
+ </callout>
+ </hwpError>
+ <!-- *********************************************************************** -->
<hwpError>
- <rc>RC_PROCPM_PSS_WRONG_DEVICE</rc>
- <description>wrong device taget : make sure that you use 0xA=APSS and 0XD=DPSS no other value works.</description>
- </hwpError>
+ <rc>RC_PROCPM_PSS_P2S_ERROR</rc>
+ <description>SPIP2S error bit asserted waiting for operation to complete."</description>
+ <collectRegisterFfdc>
+ <id>REG_FFDC_PROC_PSS_REGISTERS</id>
+ <target>CHIP</target>
+ </collectRegisterFfdc>
+ <callout>
+ <target>CHIP</target>
+ <priority>HIGH</priority>
+ </callout>
+ </hwpError>
<!-- *********************************************************************** -->
</hwpErrors>
diff --git a/src/usr/hwpf/hwp/runtime_errors/p8_pss_registers.xml b/src/usr/hwpf/hwp/runtime_errors/p8_pss_registers.xml
new file mode 100644
index 000000000..52381e6b7
--- /dev/null
+++ b/src/usr/hwpf/hwp/runtime_errors/p8_pss_registers.xml
@@ -0,0 +1,49 @@
+<!-- IBM_PROLOG_BEGIN_TAG -->
+<!-- This is an automatically generated prolog. -->
+<!-- -->
+<!-- $Source: src/usr/hwpf/hwp/runtime_errors/p8_pss_registers.xml $ -->
+<!-- -->
+<!-- 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_pss_registers.xml,v 1.1 2013/10/08 15:45:12 stillgs Exp $ -->
+<!-- Definition of PSS registers to collect on some errors -->
+<hwpErrors>
+ <registerFfdc>
+ <id>REG_FFDC_PROC_PSS_REGISTERS</id>
+ <scomRegister>SPIPSS_ADC_CTRL_REG0_0x00070000</scomRegister>
+ <scomRegister>SPIPSS_ADC_CTRL_REG1_0x00070001</scomRegister>
+ <scomRegister>SPIPSS_ADC_CTRL_REG2_0x00070002</scomRegister>
+ <scomRegister>SPIPSS_ADC_STATUS_REG_0x00070003</scomRegister>
+ <scomRegister>SPIPSS_ADC_CMD_REG_0x00070004</scomRegister>
+ <scomRegister>SPIPSS_ADC_WDATA_REG_0x00070010</scomRegister>
+ <scomRegister>SPIPSS_ADC_RDATA_REG0_0x00070020</scomRegister>
+ <scomRegister>SPIPSS_ADC_RDATA_REG1_0x00070021</scomRegister>
+ <scomRegister>SPIPSS_ADC_RDATA_REG2_0x00070022</scomRegister>
+ <scomRegister>SPIPSS_ADC_RDATA_REG3_0x00070023</scomRegister>
+ <scomRegister>SPIPSS_100NS_REG_0x00070028</scomRegister>
+ <scomRegister>SPIPSS_P2S_CTRL_REG0_0x00070040</scomRegister>
+ <scomRegister>SPIPSS_P2S_CTRL_REG1_0x00070041</scomRegister>
+ <scomRegister>SPIPSS_P2S_CTRL_REG2_0x00070042</scomRegister>
+ <scomRegister>SPIPSS_P2S_STATUS_REG_0x00070043</scomRegister>
+ <scomRegister>SPIPSS_P2S_COMMAND_REG_0x00070044</scomRegister>
+ <scomRegister>SPIPSS_P2S_WDATA_REG_0x00070050</scomRegister>
+ <scomRegister>SPIPSS_P2S_RDATA_REG_0x00070060</scomRegister>
+ <scomRegister>SPIPSS_ADC_RESET_REGISTER_0x00070005</scomRegister>
+ <scomRegister>SPIPSS_P2S_RESET_REGISTER_0x00070045</scomRegister>
+ </registerFfdc>
+</hwpErrors>
diff --git a/src/usr/hwpf/makefile b/src/usr/hwpf/makefile
index 0a282126b..39ac9bd04 100644
--- a/src/usr/hwpf/makefile
+++ b/src/usr/hwpf/makefile
@@ -89,7 +89,7 @@ HWP_ERROR_XML_FILES = hwp/fapiHwpErrorInfo.xml \
hwp/pstates/pstates/p8_build_pstate_datablock_errors.xml \
hwp/pstates/pstates/proc_get_voltage_errors.xml \
hwp/proc_cfam_registers.xml \
- hwp/proc_slw_registers.xml \
+ hwp/p8_slw_registers.xml \
hwp/proc_sbe_select_ex_errors.xml \
hwp/utility_procedures/memory_mss_maint_cmds.xml \
hwp/mc_config/mss_volt/memory_mss_volt.xml \
@@ -121,7 +121,10 @@ HWP_ERROR_XML_FILES = hwp/fapiHwpErrorInfo.xml \
hwp/mc_config/mss_eff_config/memory_mss_eff_config_termination.xml \
hwp/build_winkle_images/p8_block_wakeup_intr/p8_block_wakeup_intr_errors.xml \
hwp/build_winkle_images/proc_mailbox_utils/p8_mailbox_utils_errors.xml \
- hwp/proc_otprom_registers.xml
+ hwp/proc_otprom_registers.xml \
+ hwp/runtime_errors/p8_gpe_registers.xml \
+ hwp/runtime_errors/p8_pmc_deconfig_setup_errors.xml \
+ hwp/runtime_errors/p8_pss_registers.xml
## these get generated into obj/genfiles/AttributeIds.H
HWP_ATTR_XML_FILES = hwp/memory_attributes.xml \
OpenPOWER on IntegriCloud