summaryrefslogtreecommitdiffstats
path: root/src/import
diff options
context:
space:
mode:
authorSoma BhanuTej <soma.bhanu@in.ibm.com>2017-04-19 07:18:21 -0400
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-04-28 14:17:42 -0400
commit70907451b700daaa7c3960e03dc7fd69dc478270 (patch)
tree00fb009624e35415753a481f11b0766f7f8f9c80 /src/import
parentf2cf9b470331c9607d11881108fc4fa74f20b4a4 (diff)
downloadtalos-hostboot-70907451b700daaa7c3960e03dc7fd69dc478270.tar.gz
talos-hostboot-70907451b700daaa7c3960e03dc7fd69dc478270.zip
Additional checks in p9_extract_sbe_rc
Change-Id: I2aa4320dd7e9daec474971bae15510ef631191c8 RTC:173031 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39416 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: SRINIVAS V. POLISETTY <srinivan@in.ibm.com> Reviewed-by: Manish K. Chowdhary <manichow@in.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/39421 Reviewed-by: Hostboot Team <hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import')
-rw-r--r--src/import/chips/p9/procedures/hwp/perv/p9_extract_sbe_rc.C30
-rw-r--r--src/import/chips/p9/procedures/hwp/perv/p9_extract_sbe_rc.H2
-rw-r--r--src/import/chips/p9/procedures/xml/error_info/p9_extract_sbe_rc_errors.xml19
3 files changed, 47 insertions, 4 deletions
diff --git a/src/import/chips/p9/procedures/hwp/perv/p9_extract_sbe_rc.C b/src/import/chips/p9/procedures/hwp/perv/p9_extract_sbe_rc.C
index e529945f7..cd825990c 100644
--- a/src/import/chips/p9/procedures/hwp/perv/p9_extract_sbe_rc.C
+++ b/src/import/chips/p9/procedures/hwp/perv/p9_extract_sbe_rc.C
@@ -35,6 +35,7 @@
/// 6) Read the value of XIRAMEDR 0xE0004 & Store IR and EDR
/// 7) Check for Machine Check State(MCS) i.e XSR (29:31)
/// 8) if MCS=0x4, Report error as Program Interrupt for the address stored in EDR
+/// Look for IAR range and report specific memory program error
/// 9) if MCS=0x1, 0x2, 0x3, Set the flag as Data Machine Check - l_data_mchk
/// Level 2 :
/// 1) Based on IAR value identifying the Memory Address range
@@ -59,8 +60,8 @@
/// Level 4 :
/// 1) If Data Machine Check error is true then look for the edr data range in SEEPROM/PIBMEM/OTPROM scope
/// 2) Collect the SIB Info from 0xE0006
-/// 3) If in OTPROM data range report error if RSP_INFO is non-Zero response (0x7-PIB timeout Error, else-Scom Err)
-/// 3) If in PIBMEM data range, read MEM_Info (E0007) and report error if RSP_INFO is non-Zero response as Scom Err
+/// 3) If in OTPROM data range report error if RSP_INFO is non-Zero response (0x6-Ecc Error, 0x7-PIB timeout Error, else-Scom Err)
+/// 3) If in PIBMEM data range, read MEM_Info (E0007) and report error if RSP_INFO is non-Zero response (0x6-Ecc Error, else-Scom Err)
/// 4) If in SEEPROM data range, report error if RSP_INFO is non-zero response (0x7-FI2C timeout Error, 0x4-FI2C Seeprom cfg Err, else-FI2C PIB Err)
///
/// DEFAULT) If non of the above errors are detected then report as UNKNOWN_ERROR
@@ -260,6 +261,23 @@ fapi2::ReturnCode p9_extract_sbe_rc(const fapi2::Target<fapi2::TARGET_TYPE_PROC_
if(MCS == 0x4)
{
+ if((OTPROM_MIN_RANGE <= l_data32_iar) && (l_data32_iar <= OTPROM_MAX_RANGE))
+ {
+ FAPI_DBG("p9_extract_sbe_rc : Program Interrupt occured in OTPROM memory program");
+ }
+ else if((PIBMEM_MIN_RANGE <= l_data32_iar) && (l_data32_iar <= PIBMEM_MAX_RANGE))
+ {
+ FAPI_DBG("p9_extract_sbe_rc : Program Interrupt occured in PIBMEM memory program");
+ }
+ else if((SEEPROM_MIN_RANGE <= l_data32_iar) && (l_data32_iar <= SEEPROM_MAX_RANGE))
+ {
+ FAPI_DBG("p9_extract_sbe_rc : Program Interrupt occured in SEEPROM memory program");
+ }
+ else
+ {
+ FAPI_ERR("ERROR: IAR %08lX is out of range when MCS reported a Program Interrupt", l_data32_iar);
+ }
+
o_return_action = P9_EXTRACT_SBE_RC::RESTART_SBE;
FAPI_ASSERT(FAIL, fapi2::EXTRACT_SBE_RC_PROGRAM_INTERRUPT(), "ERROR:Program interrupt promoted for Address=%08lX",
l_data32_edr);
@@ -667,6 +685,10 @@ fapi2::ReturnCode p9_extract_sbe_rc(const fapi2::Target<fapi2::TARGET_TYPE_PROC_
if(otprom_data_range)
{
+ o_return_action = P9_EXTRACT_SBE_RC::NO_RECOVERY_ACTION;
+ FAPI_ASSERT((!(sib_rsp_info == 0x6)), fapi2::EXTRACT_SBE_RC_OTP_PARITY_ERR(),
+ "Parity/ECC error detected in OTPROM memory, Check if OTPROM programmed correctly by dumping content");
+
o_return_action = P9_EXTRACT_SBE_RC::RESTART_CBS;
FAPI_ASSERT((!(sib_rsp_info == 0x7)), fapi2::EXTRACT_SBE_RC_PIB_TIMEOUT(), "PIB Timeout error detected");
@@ -685,6 +707,10 @@ fapi2::ReturnCode p9_extract_sbe_rc(const fapi2::Target<fapi2::TARGET_TYPE_PROC_
l_data64_mib_mem_info.extractToRight(l_data32, PU_MIB_XIMEM_MEM_ERROR, PU_MIB_XIMEM_MEM_ERROR_LEN);
mem_error = l_data32;
+ o_return_action = P9_EXTRACT_SBE_RC::NO_RECOVERY_ACTION;
+ FAPI_ASSERT((!(mem_error == 0x6)), fapi2::EXTRACT_SBE_RC_PIBMEM_ECC_ERR(),
+ "ECC error detected during pibmem access, Run PIBMEM REPAIR test..");
+
o_return_action = P9_EXTRACT_SBE_RC::RESTART_CBS;
FAPI_ASSERT((!(mem_error != 0x0)), fapi2::EXTRACT_SBE_RC_PIBMEM_ERR(), "Error detected during pibmem access");
}
diff --git a/src/import/chips/p9/procedures/hwp/perv/p9_extract_sbe_rc.H b/src/import/chips/p9/procedures/hwp/perv/p9_extract_sbe_rc.H
index 60403a801..e5c91f66f 100644
--- a/src/import/chips/p9/procedures/hwp/perv/p9_extract_sbe_rc.H
+++ b/src/import/chips/p9/procedures/hwp/perv/p9_extract_sbe_rc.H
@@ -50,7 +50,7 @@ enum RETURN_ACTION
RESTART_CBS = 2, // Trigger Warm ipl where we don't switch off VSB just toggle start_cbs from FSP
REIPL_BKP_SEEPROM = 3, // Run IPL by selecting backup seeprom
RE_IPL = 4, // Reload/update of SEEPROM required or deconfig the chip
- NO_RECOVERY_ACTION = 5, // No recovery action possible to correct this error, Replace the chip with new one
+ NO_RECOVERY_ACTION = 5, // No recovery action possible to correct this error
PPE_RUNNING = 6 // Return action when PPE is in Running state
};
};
diff --git a/src/import/chips/p9/procedures/xml/error_info/p9_extract_sbe_rc_errors.xml b/src/import/chips/p9/procedures/xml/error_info/p9_extract_sbe_rc_errors.xml
index 6f6936bb3..daac51862 100644
--- a/src/import/chips/p9/procedures/xml/error_info/p9_extract_sbe_rc_errors.xml
+++ b/src/import/chips/p9/procedures/xml/error_info/p9_extract_sbe_rc_errors.xml
@@ -5,7 +5,7 @@
<!-- -->
<!-- OpenPOWER HostBoot Project -->
<!-- -->
-<!-- Contributors Listed Below - COPYRIGHT 2016 -->
+<!-- Contributors Listed Below - COPYRIGHT 2016,2017 -->
<!-- [+] International Business Machines Corp. -->
<!-- -->
<!-- -->
@@ -134,6 +134,14 @@
<!-- Halt codes for Data Machine Check -->
<!-- ******************************************************************** -->
<hwpError>
+ <rc>RC_EXTRACT_SBE_RC_OTP_PARITY_ERR</rc>
+ <description>
+ PIB Parity error detected in OTPROM memory
+ Action:No recovery action possible to correct this error [NO_RECOVERY_ACTION]
+ </description>
+ </hwpError>
+ <!-- ******************************************************************** -->
+ <hwpError>
<rc>RC_EXTRACT_SBE_RC_PIB_TIMEOUT</rc>
<description>
PIB Timeout error detected
@@ -150,6 +158,15 @@
</hwpError>
<!-- ******************************************************************** -->
<hwpError>
+ <rc>RC_EXTRACT_SBE_RC_PIBMEM_ECC_ERR</rc>
+ <description>
+ ECC error detected during pibmem access, Check if REPAIR solution is applied
+ Action:No recovery action possible to correct this error [NO_RECOVERY_ACTION]
+ </description>
+ </hwpError>
+
+ <!-- ******************************************************************** -->
+ <hwpError>
<rc>RC_EXTRACT_SBE_RC_PIBMEM_ERR</rc>
<description>
Error detected during pibmem access
OpenPOWER on IntegriCloud