diff options
author | Mike Jones <mjjones@us.ibm.com> | 2014-03-26 17:07:03 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-04-03 07:22:09 -0500 |
commit | 2ecd6efcebf8d021ee2be43c92383d469338131d (patch) | |
tree | 429bda014e1930f01b633f9de30b4e7712ac217c /src/usr/hwpf/hwp | |
parent | be386b0d8ecea151a88eb4f3d21a937302072200 (diff) | |
download | talos-hostboot-2ecd6efcebf8d021ee2be43c92383d469338131d.tar.gz talos-hostboot-2ecd6efcebf8d021ee2be43c92383d469338131d.zip |
Generate HWP error with FFDC for unknown SBE error
Rather than generating a FAPI error, generate a real HWP error
that collects useful FFDC
Change-Id: I9bdc2dd00f42635b9dc34eb1a4c3f0ea91fe9b5e
CQ: SW253652
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/9928
Reviewed-by: MATTHEW A. PLOETZ <maploetz@us.ibm.com>
Reviewed-by: STEPHEN M. CPREK <smcprek@us.ibm.com>
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp')
2 files changed, 88 insertions, 25 deletions
diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc.C b/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc.C index 86b8ffb0f..9324e8ec3 100644 --- a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc.C +++ b/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc.C @@ -21,7 +21,7 @@ /* */ /* IBM_PROLOG_END_TAG */ // -*- mode: C++; c-file-style: "linux"; -*- -// $Id: proc_extract_sbe_rc.C,v 1.16 2014/03/18 14:09:27 jmcgill Exp $ +// $Id: proc_extract_sbe_rc.C,v 1.17 2014/03/24 20:34:44 jmcgill Exp $ // $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_extract_sbe_rc.C,v $ //------------------------------------------------------------------------------ // *| @@ -792,20 +792,30 @@ fapi::ReturnCode proc_extract_sbe_rc(const fapi::Target & i_target, // return soft error with lowest priority if ((i_engine == SBE) && (soft_err != eNO_ERROR)) { - if ((soft_err == eSOFT_ERR_PNOR) || (soft_err == eSOFT_ERR_BOTH)) + const fapi::Target & CHIP_IN_ERROR = i_target; + if (soft_err == eSOFT_ERR_I2CM) + { + FAPI_ERR("Recoverable ECC Error on I2C Access"); + const ecmdDataBufferBase & I2C_ECCB_STATUS = i2cm_eccb_status; + FAPI_SET_HWP_ERROR(rc, RC_PROC_EXTRACT_SBE_RC_SOFT_ECC_ERROR_I2C_SBE); + break; + } + else if (soft_err == eSOFT_ERR_PNOR) { FAPI_ERR("Recoverable ECC Error on PNOR Access"); + const ecmdDataBufferBase & PNOR_ECCB_STATUS = pnor_eccb_status; + FAPI_SET_HWP_ERROR(rc, RC_PROC_EXTRACT_SBE_RC_SOFT_ECC_ERROR_PNOR_SBE); + break; } - if ((soft_err == eSOFT_ERR_I2CM) || (soft_err == eSOFT_ERR_BOTH)) + else // (soft_err == eSOFT_ERR_BOTH) { + FAPI_ERR("Recoverable ECC Error on PNOR Access"); FAPI_ERR("Recoverable ECC Error on I2C Access"); + const ecmdDataBufferBase & PNOR_ECCB_STATUS = pnor_eccb_status; + const ecmdDataBufferBase & I2C_ECCB_STATUS = i2cm_eccb_status; + FAPI_SET_HWP_ERROR(rc, RC_PROC_EXTRACT_SBE_RC_SOFT_ECC_ERROR_I2C_AND_PNOR_SBE); + break; } - const fapi::Target & CHIP_IN_ERROR = i_target; - const soft_error_t & SOFT_ERR_STATUS = soft_err; - const ecmdDataBufferBase & PNOR_ECCB_STATUS = pnor_eccb_status; - const ecmdDataBufferBase & I2C_ECCB_STATUS = i2cm_eccb_status; - FAPI_SET_HWP_ERROR(rc, RC_PROC_EXTRACT_SBE_RC_SOFT_ECC_ERROR_SBE); - break; } } while(0); diff --git a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc_errors.xml b/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc_errors.xml index 1700a2a29..75f9eadc7 100644 --- a/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc_errors.xml +++ b/src/usr/hwpf/hwp/slave_sbe/proc_check_slave_sbe_seeprom_complete/proc_extract_sbe_rc_errors.xml @@ -20,7 +20,7 @@ <!-- Origin: 30 --> <!-- --> <!-- IBM_PROLOG_END_TAG --> -<!-- $Id: proc_extract_sbe_rc_errors.xml,v 1.12 2014/03/18 14:11:37 jmcgill Exp $ --> +<!-- $Id: proc_extract_sbe_rc_errors.xml,v 1.14 2014/03/24 20:34:12 jmcgill Exp $ --> <!-- Error definitions for proc_extract_sbe_rc procedure --> <hwpErrors> <!-- *********************************************************************** --> @@ -318,12 +318,6 @@ <target>CHIP_IN_ERROR</target> <priority>HIGH</priority> </callout> - <deconfigure> - <target>CHIP_IN_ERROR</target> - </deconfigure> - <gard> - <target>CHIP_IN_ERROR</target> - </gard> </hwpError> <!-- *********************************************************************** --> <hwpError> @@ -347,12 +341,6 @@ <target>CHIP_IN_ERROR</target> <priority>HIGH</priority> </callout> - <deconfigure> - <target>CHIP_IN_ERROR</target> - </deconfigure> - <gard> - <target>CHIP_IN_ERROR</target> - </gard> </hwpError> <!-- *********************************************************************** --> <hwpError> @@ -788,14 +776,55 @@ </hwpError> <!-- *********************************************************************** --> <hwpError> - <rc>RC_PROC_EXTRACT_SBE_RC_SOFT_ECC_ERROR_SBE</rc> + <rc>RC_PROC_EXTRACT_SBE_RC_SOFT_ECC_ERROR_I2C_SBE</rc> + <description> + Procedure: proc_extract_sbe_rc + ECCB indicates correctable ECC error threshold from I2C was exceeded during SBE execution + Reload/update of SEEPROM required + </description> + <ffdc>CHIP_IN_ERROR</ffdc> + <ffdc>I2C_ECCB_STATUS</ffdc> + <collectRegisterFfdc> + <id>REG_FFDC_PROC_STATUS_AND_SBE_VITAL_REGISTERS</id> + <id>REG_FFDC_PROC_SBE_REGISTERS</id> + <id>REG_FFDC_PROC_MBOX_REGISTERS</id> + <target>CHIP_IN_ERROR</target> + </collectRegisterFfdc> + <callout> + <target>CHIP_IN_ERROR</target> + <priority>LOW</priority> + </callout> + </hwpError> + <!-- *********************************************************************** --> + <hwpError> + <rc>RC_PROC_EXTRACT_SBE_RC_SOFT_ECC_ERROR_PNOR_SBE</rc> <description> Procedure: proc_extract_sbe_rc - ECCB indicates correctable ECC error threshold from I2C/PNOR was exceeded during SBE execution + ECCB indicates correctable ECC error threshold from PNOR was exceeded during SBE execution + Reload/update of PNOR required + </description> + <ffdc>CHIP_IN_ERROR</ffdc> + <ffdc>PNOR_ECCB_STATUS</ffdc> + <collectRegisterFfdc> + <id>REG_FFDC_PROC_STATUS_AND_SBE_VITAL_REGISTERS</id> + <id>REG_FFDC_PROC_SBE_REGISTERS</id> + <id>REG_FFDC_PROC_MBOX_REGISTERS</id> + <target>CHIP_IN_ERROR</target> + </collectRegisterFfdc> + <callout> + <target>CHIP_IN_ERROR</target> + <priority>LOW</priority> + </callout> + </hwpError> + <!-- *********************************************************************** --> + <hwpError> + <rc>RC_PROC_EXTRACT_SBE_RC_SOFT_ECC_ERROR_I2C_AND_PNOR_SBE</rc> + <description> + Procedure: proc_extract_sbe_rc + ECCB indicates correctable ECC error threshold from both I2C and PNOR was exceeded during SBE execution Reload/update of SEEPROM/PNOR required </description> <ffdc>CHIP_IN_ERROR</ffdc> - <ffdc>SOFT_ERR_STATUS</ffdc> <ffdc>I2C_ECCB_STATUS</ffdc> <ffdc>PNOR_ECCB_STATUS</ffdc> <collectRegisterFfdc> @@ -833,6 +862,30 @@ </deconfigure> </hwpError> <!-- *********************************************************************** --> + <hwpError> + <rc>RC_SBE_UNKNOWN_ERROR</rc> + <description> + Procedure: proc_extract_sbe_rc + FAPI_SET_SBE_ERROR did not resolve SBE/SLW PC to known RC. + May be caused by platform attempting to resolve engine state with mismatched binary image. + </description> + <ffdc>CHIP_IN_ERROR</ffdc> + <collectRegisterFfdc> + <id>REG_FFDC_PROC_STATUS_AND_SBE_VITAL_REGISTERS</id> + <id>REG_FFDC_PROC_SBE_REGISTERS</id> + <id>REG_FFDC_PROC_MBOX_REGISTERS</id> + <target>CHIP_IN_ERROR</target> + </collectRegisterFfdc> + <callout> + <target>CHIP_IN_ERROR</target> + <priority>LOW</priority> + </callout> + <callout> + <procedure>CODE</procedure> + <priority>HIGH</priority> + </callout> + </hwpError> + <!-- *********************************************************************** --> </hwpErrors> |