diff options
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 |