diff options
author | Brian Stegmiller <bjs@us.ibm.com> | 2018-01-09 16:00:51 -0600 |
---|---|---|
committer | Zane C. Shelley <zshelle@us.ibm.com> | 2018-01-26 11:36:23 -0500 |
commit | adc84473391ddea2a5b494cfe384e69c482fa2e3 (patch) | |
tree | 1140932f6728953f09aa18a6626e40850e7b453c /src/usr | |
parent | d55a6fa5234f5eff4ebb55b71fb8ff6e399654ec (diff) | |
download | talos-hostboot-adc84473391ddea2a5b494cfe384e69c482fa2e3.tar.gz talos-hostboot-adc84473391ddea2a5b494cfe384e69c482fa2e3.zip |
PRD: Call hostboot for SBE errors
Change-Id: I3d2e564380cfb4dfac5500a0f3aed48beb9be608
RTC: 175796
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/51695
Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com>
Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52672
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr')
4 files changed, 39 insertions, 4 deletions
diff --git a/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule b/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule index 653d8916f..99421142a 100644 --- a/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule +++ b/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule @@ -2172,7 +2172,7 @@ group gTP_LFIR filter singlebit, cs_root_cause /** TP_LFIR[26] * FIR error from SBE */ - (rTP_LFIR, bit(26)) ? defaultMaskedError; + (rTP_LFIR, bit(26)) ? sbe_vital_attn; /** TP_LFIR[27] * FIR error from SBE diff --git a/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule b/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule index 60f174192..8b610cb31 100644 --- a/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule +++ b/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule @@ -2231,7 +2231,7 @@ group gTP_LFIR filter singlebit, cs_root_cause /** TP_LFIR[26] * PPE in halt state driven by RAMDBG bit 0 */ - (rTP_LFIR, bit(26)) ? defaultMaskedError; + (rTP_LFIR, bit(26)) ? sbe_vital_attn; /** TP_LFIR[27] * PPE debug: Watchdog timer proc rst/halt diff --git a/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule b/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule index be2be0192..7a6359900 100644 --- a/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule +++ b/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2017 +# Contributors Listed Below - COPYRIGHT 2017,2018 # [+] International Business Machines Corp. # # @@ -103,3 +103,9 @@ actionclass deadmanTimer funccall("handleDeadmanTimer"); }; +actionclass sbe_vital_attn +{ + threshold_and_mask_self; + funccall("handleSbeVital"); +}; + diff --git a/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C b/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C index 6bae441b4..c85a01cfb 100644 --- a/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C +++ b/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2017 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -36,6 +36,8 @@ #ifdef __HOSTBOOT_MODULE #include <prdfPlatServices_ipl.H> +#include <prdfErrlUtil.H> +#include <sbeio/sbeioif.H> #endif // Platform includes @@ -376,6 +378,33 @@ PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, handleDeadmanTimer ); //------------------------------------------------------------------------------ +/** Call hostboot to indicate SBE bad, extract FFDC and handle recovery */ +int32_t handleSbeVital( ExtensibleChip * i_chip, + STEP_CODE_DATA_STRUCT & io_sc ) +{ + // Hostboot code is suppose to handle all Vital attentions + // and initiate recovery with FSP,etc... if needed +#ifdef __HOSTBOOT_MODULE + TARGETING::TargetHandle_t l_target = i_chip->getTrgt(); + + PRDF_ERR("Invoking HB SBE vital routine"); + errlHndl_t l_elog = SBEIO::handleVitalAttn( l_target ); + + // commit any failures + if (nullptr != l_elog) + { + PRDF_ERR("handleVitalAttn failure"); + PRDF_COMMIT_ERRL( l_elog, ERRL_ACTION_REPORT ); + } +#endif + + return SUCCESS; +} +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, handleSbeVital ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, handleSbeVital ); + +//------------------------------------------------------------------------------ + /** * @brief Used when the chip has a CHECK_STOP to see if there * is also a UNIT_CS present |