summaryrefslogtreecommitdiffstats
path: root/src/sbefw/sbeFFDC.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/sbefw/sbeFFDC.C')
-rw-r--r--src/sbefw/sbeFFDC.C24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/sbefw/sbeFFDC.C b/src/sbefw/sbeFFDC.C
index 7f1203c3..b47091ed 100644
--- a/src/sbefw/sbeFFDC.C
+++ b/src/sbefw/sbeFFDC.C
@@ -30,6 +30,7 @@
#include "sbeFFDC.H"
#include "sbe_build_info.H"
#include "sbeglobals.H"
+#include "sbecmdcntrldmt.H"
void SbeFFDCPackage::updateUserDataHeader(uint32_t i_fieldsConfig)
{
@@ -51,6 +52,29 @@ void SbeFFDCPackage::updateUserDataHeader(uint32_t i_fieldsConfig)
}
}
+uint32_t SbeFFDCPackage::collectAsyncHwpFfdc (void)
+{
+ #define SBE_FUNC "collectAsyncHwpFfdc"
+ uint32_t l_rc = SBE_SEC_OPERATION_SUCCESSFUL;
+
+ switch (SBE_GLOBAL->asyncFfdcRC)
+ {
+ case fapi2::RC_CHECK_MASTER_STOP15_DEADMAN_TIMEOUT:
+ case fapi2::RC_CHECK_MASTER_STOP15_INVALID_STATE:
+ case fapi2::RC_BLOCK_WAKEUP_INTR_CHECK_FAIL:
+ SBE_INFO (SBE_FUNC "Collecting DMT Async FFDC for RC 0x%08x",
+ SBE_GLOBAL->asyncFfdcRC);
+ l_rc = sbeCollectDeadmanFfdc ();
+ break;
+ default:
+ SBE_INFO (SBE_FUNC"No specific Async FFDC to collect");
+ break;
+ }
+
+ return l_rc;
+ #undef SBE_FUNC
+}
+
uint32_t SbeFFDCPackage::sendOverFIFO(const sbeRespGenHdr_t &i_hdr,
const uint32_t i_fieldsConfig,
uint32_t &o_bytesSent,
OpenPOWER on IntegriCloud