diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/usr/diag/prdf/common/framework/service/prdf_ras_services.C | 15 | ||||
-rwxr-xr-x | src/usr/diag/prdf/test/makefile | 3 | ||||
-rw-r--r-- | src/usr/diag/prdf/test/prdfTest_CentCs.H | 87 |
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 |