summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule2
-rw-r--r--src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule2
-rw-r--r--src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule8
-rw-r--r--src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C31
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
OpenPOWER on IntegriCloud