summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/usr/diag/prdf/common/framework/service/prdf_ras_services.C15
-rwxr-xr-xsrc/usr/diag/prdf/test/makefile3
-rw-r--r--src/usr/diag/prdf/test/prdfTest_CentCs.H87
3 files changed, 99 insertions, 6 deletions
diff --git a/src/usr/diag/prdf/common/framework/service/prdf_ras_services.C b/src/usr/diag/prdf/common/framework/service/prdf_ras_services.C
index b613cb5f4..ff99980a7 100755
--- a/src/usr/diag/prdf/common/framework/service/prdf_ras_services.C
+++ b/src/usr/diag/prdf/common/framework/service/prdf_ras_services.C
@@ -633,10 +633,12 @@ errlHndl_t ErrDataService::GenerateSrcPfa(ATTENTION_TYPE attn_type,
HW = true; // Hardware callout
TargetHandle_t target = thiscallout.getTarget();
- if ( TYPE_MEMBUF == PlatServices::getTargetType(target) )
+ if (( TYPE_MEMBUF == PlatServices::getTargetType(target) ) ||
+ ( TYPE_MBA == PlatServices::getTargetType(target) ))
l_memBuffInCallouts = true;
- // If we are in Concurrent Maintenance Mode, we will need to disable the
+ // If we are in Concurrent Maintenance Mode,
+ // we will need to disable the
// Deferred Deconfig, if the callouts are not HOM_CM_FUNCTIONAL.
// FIXME PlatServices::inCMMode() not avaialble yet
#if 0
@@ -1060,11 +1062,13 @@ errlHndl_t ErrDataService::GenerateSrcPfa(ATTENTION_TYPE attn_type,
//Check if this is last functional core
if ( PlatServices::checkLastFuncCore(l_dumpHandle) )
{
- PRDF_TRAC( PRDF_FUNC"Last Func Core from Gard was true." );
+ PRDF_TRAC( PRDF_FUNC"Last Func Core: %x was true.",
+ PlatServices::getHuid(l_dumpHandle) );
ForceTerminate = true;
pfaData.LAST_CORE_TERMINATE = true;
errLog->setSev(ERRL_SEV_UNRECOVERABLE); //Update Errl Severity
- pfaData.PFA_errlSeverity = ERRL_SEV_UNRECOVERABLE; //Update PFA data
+ //Update PFA data
+ pfaData.PFA_errlSeverity = ERRL_SEV_UNRECOVERABLE;
}
}
}
@@ -1251,11 +1255,12 @@ will also be removed. Need to confirm if this code is required anymore.
}
}
else if (l_targetType == TYPE_MEMBUF ||
+ l_targetType == TYPE_MBA ||
l_targetType == TYPE_MCS)
{
// Centaur Checkstop
TargetHandle_t centaurHandle = l_dumpHandle;
- if (l_targetType == TYPE_MCS)
+ if (l_targetType != TYPE_MEMBUF)
{
centaurHandle = PlatServices::getConnected(l_dumpHandle,
TYPE_MEMBUF) [0];
diff --git a/src/usr/diag/prdf/test/makefile b/src/usr/diag/prdf/test/makefile
index da748999e..e8d72bada 100755
--- a/src/usr/diag/prdf/test/makefile
+++ b/src/usr/diag/prdf/test/makefile
@@ -70,6 +70,7 @@ TESTS = prdfTest_ABus.H \
prdfTest_McsMciFir.H \
prdfTest_ProcCentFir.H \
prdfTest_ProcMbsFir.H \
- prdfTest_ProcTpLFir.H
+ prdfTest_ProcTpLFir.H \
+ prdfTest_CentCs.H
include ${ROOTPATH}/config.mk
diff --git a/src/usr/diag/prdf/test/prdfTest_CentCs.H b/src/usr/diag/prdf/test/prdfTest_CentCs.H
new file mode 100644
index 000000000..2d72a5431
--- /dev/null
+++ b/src/usr/diag/prdf/test/prdfTest_CentCs.H
@@ -0,0 +1,87 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/diag/prdf/test/prdfTest_CentCs.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2012,2013 */
+/* */
+/* p1 */
+/* */
+/* Object Code Only (OCO) source materials */
+/* Licensed Internal Code Source Materials */
+/* IBM HostBoot Licensed Internal Code */
+/* */
+/* The source code for this program is not published or otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
+
+#ifndef __TEST_PRDFCENTCSTEST_H
+#define __TEST_PRDFCENTCSTEST_H
+
+#ifdef __HOSTBOOT_MODULE
+ #include <cxxtest/TestSuite.H>
+ #include <errl/errlentry.H>
+ #include <errl/errlmanager.H>
+#else
+ #include <cxxtest/TestSuite.h>
+ #include <fsp/FipsGlobalFixture.H>
+ #include <errlentry.H>
+#endif
+
+#include <prdfTrace.H>
+#include <prdfMain.H>
+#include "prdfsimMacros.H"
+
+class CentaurCS:public CxxTest::TestSuite
+{
+ public:
+
+ void TestCentaurCheckstop(void)
+ {
+ PRDS_BEGIN("Centaur CS");
+ PRDS_ERROR_ENTRY("NODE{0}:PROC{0}", PRDF::RECOVERABLE);
+ PRDS_EXPECTED_SIGNATURE("NODE{0}:MEMBUF{4}:MBS{0}:MBA{0}", 0x43F10003);
+
+ // GLOBAL_RE_FIR set bit 1
+ PRDS_SCR_WRITE("NODE{0}:PROC{0}", 0x570F001B , 0x4000000000000000);
+
+ // TP_CHIPLET_RE_FIR set bit 7
+ PRDS_SCR_WRITE("NODE{0}:PROC{0}", 0x01040001, 0x0100000000000000);
+
+ // MCIFIR
+ PRDS_SCR_WRITE("NODE{0}:PROC{0}:MCS{4}", 0x02011840, 0x0008000100000000);
+ // MCIFIR_ACT0
+ PRDS_SCR_WRITE("NODE{0}:PROC{0}:MCS{4}", 0x02011846, 0x0001c00000000000);
+ // MCIFIR_ACT1
+ PRDS_SCR_WRITE("NODE{0}:PROC{0}:MCS{4}", 0x02011847, 0x8ee80b1018800000);
+
+ // GLOBAL_CS_FIR
+ PRDS_SCR_WRITE("NODE{0}:MEMBUF{4}", 0x570F001C, 0x1000000000000000);
+
+ // MEM_CHIPLET_CS_FIR
+ PRDS_SCR_WRITE("NODE{0}:MEMBUF{4}", 0x03040000, 0x8400000000000000);
+
+ // MBAFIR
+ PRDS_SCR_WRITE("NODE{0}:MEMBUF{4}:MBS{0}:MBA{0}", 0x03010600, 0x1000000000000000);
+ // MBAFIR_ACT0
+ PRDS_SCR_WRITE("NODE{0}:MEMBUF{4}:MBS{0}:MBA{0}", 0x03010606, 0x0000000000000000);
+ // MBAFIR_ACT1
+ PRDS_SCR_WRITE("NODE{0}:MEMBUF{4}:MBS{0}:MBA{0}", 0x03010607, 0x0000000000000000);
+
+ PRDS_START_SIM();
+ if(!(PRDS_END()))
+ {
+ TS_FAIL("Expected Signature Failed Centaur CS");
+ }
+ }
+
+};
+
+
+#endif
OpenPOWER on IntegriCloud