diff options
author | Soma BhanuTej <soma.bhanu@in.ibm.com> | 2017-04-19 07:18:21 -0400 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-04-28 14:17:42 -0400 |
commit | 70907451b700daaa7c3960e03dc7fd69dc478270 (patch) | |
tree | 00fb009624e35415753a481f11b0766f7f8f9c80 | |
parent | f2cf9b470331c9607d11881108fc4fa74f20b4a4 (diff) | |
download | blackbird-hostboot-70907451b700daaa7c3960e03dc7fd69dc478270.tar.gz blackbird-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>
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 |