From 7e236aac934843e875280b3f9456f026466bc68b Mon Sep 17 00:00:00 2001 From: Zane Shelley Date: Tue, 30 Apr 2013 13:09:49 -0500 Subject: PRD: Additional support for Centaur checkstops Change-Id: I31cee1c3b4678140d2728e3615a8ca6614a8d054 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4294 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4309 --- src/usr/diag/prdf/common/plat/pegasus/Mba.rule | 50 ++++++------------ src/usr/diag/prdf/common/plat/pegasus/Mcs.rule | 6 ++- src/usr/diag/prdf/common/plat/pegasus/Membuf.rule | 12 +++-- .../prdf/common/plat/pegasus/Membuf_acts_MEM.rule | 5 ++ .../prdf/common/plat/pegasus/Membuf_acts_NEST.rule | 31 ++++++++++-- .../prdf/common/plat/pegasus/Membuf_acts_TP.rule | 1 + .../prdf/common/plat/pegasus/Membuf_regs_NEST.rule | 29 +---------- .../diag/prdf/common/plat/pegasus/prdfCenMembuf.C | 59 ++++++++++++++++++++++ src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C | 8 ++- src/usr/diag/prdf/test/prdfTest_Mba.H | 4 +- src/usr/diag/prdf/test/prdfTest_Mcs.H | 6 +-- src/usr/diag/prdf/test/prdfTest_McsMciFir.H | 2 +- src/usr/diag/prdf/test/prdfTest_ProcMbsFir.H | 2 +- 13 files changed, 135 insertions(+), 80 deletions(-) (limited to 'src') diff --git a/src/usr/diag/prdf/common/plat/pegasus/Mba.rule b/src/usr/diag/prdf/common/plat/pegasus/Mba.rule index 3e8c67925..f70185446 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Mba.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Mba.rule @@ -97,38 +97,13 @@ chip Mba # MEM Chiplet MBASECUREFIR ############################################################################ + # This register is hardwired to channel failure (checkstop) and we cannot + # mask or change the state of the action registers. register MBASECUREFIR { name "MBU.MBA01.MBA_SRQ.MBASIRQ"; scomaddr 0x0301041b; reset (&, 0x0301041c); - # This is a special register in which we are not able to mask. All bits - # in this register should be set to checkstop so we will not need to - # mask anyway. - capture group default; - }; - - register MBASECUREFIR_MASK - { - name "MBU.MBA01.MBA_SRQ.MBASIRMASK"; - scomaddr 0x0301041e; - capture type secondary; - capture group default; - }; - - register MBASECUREFIR_ACT0 - { - name "MBU.MBA01.MBA_SRQ.MBASIRACT0"; - scomaddr 0x03010421; - capture type secondary; - capture group default; - }; - - register MBASECUREFIR_ACT1 - { - name "MBU.MBA01.MBA_SRQ.MBASIRACT1"; - scomaddr 0x03010422; - capture type secondary; capture group default; }; @@ -311,22 +286,23 @@ chip Mba rule tmpMbaFir { CHECK_STOP: MBAFIR & ~MBAFIR_MASK & ~MBAFIR_ACT0 & ~MBAFIR_ACT1; + UNIT_CS: MBAFIR & ~MBAFIR_MASK & ~MBAFIR_ACT0 & ~MBAFIR_ACT1; RECOVERABLE: MBAFIR & ~MBAFIR_MASK & ~MBAFIR_ACT0 & MBAFIR_ACT1; SPECIAL: MBAFIR; # See note above. }; rule tmpMbaSecureFir { - CHECK_STOP: - MBASECUREFIR & ~MBASECUREFIR_MASK & ~MBASECUREFIR_ACT0 & ~MBASECUREFIR_ACT1; # NOTE: This secure FIR will only report checkstop attentions. - SPECIAL: - MBASECUREFIR; # See note above. + CHECK_STOP: MBASECUREFIR; + UNIT_CS: MBASECUREFIR; + SPECIAL: MBASECUREFIR; # See note above. }; rule tmpMbaCalFir { CHECK_STOP: MBACALFIR & ~MBACALFIR_MASK & ~MBACALFIR_ACT0 & ~MBACALFIR_ACT1; + UNIT_CS: MBACALFIR & ~MBACALFIR_MASK & ~MBACALFIR_ACT0 & ~MBACALFIR_ACT1; RECOVERABLE: MBACALFIR & ~MBACALFIR_MASK & ~MBACALFIR_ACT0 & MBACALFIR_ACT1; SPECIAL: MBACALFIR; # See note above. }; @@ -335,13 +311,15 @@ rule tmpMbaDdrPhyFir { CHECK_STOP: MBADDRPHYFIR & ~MBADDRPHYFIR_MASK & ~MBADDRPHYFIR_ACT0 & ~MBADDRPHYFIR_ACT1; + UNIT_CS: + MBADDRPHYFIR & ~MBADDRPHYFIR_MASK & ~MBADDRPHYFIR_ACT0 & ~MBADDRPHYFIR_ACT1; RECOVERABLE: MBADDRPHYFIR & ~MBADDRPHYFIR_MASK & ~MBADDRPHYFIR_ACT0 & MBADDRPHYFIR_ACT1; SPECIAL: MBADDRPHYFIR; # See note above. }; -group gMBA attntype CHECK_STOP, RECOVERABLE filter singlebit +group gMBA attntype CHECK_STOP, RECOVERABLE, UNIT_CS filter singlebit { (tmpMbaFir, bit( 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10|11|12|13|14|15|16|17|18|19| @@ -383,6 +361,7 @@ group gMBA attntype CHECK_STOP, RECOVERABLE filter singlebit rule MbaFir { CHECK_STOP: MBAFIR & ~MBAFIR_MASK & ~MBAFIR_ACT0 & ~MBAFIR_ACT1; + UNIT_CS: MBAFIR & ~MBAFIR_MASK & ~MBAFIR_ACT0 & ~MBAFIR_ACT1; RECOVERABLE: MBAFIR & ~MBAFIR_MASK & ~MBAFIR_ACT0 & MBAFIR_ACT1; }; @@ -445,9 +424,9 @@ group gMbaFir filter singlebit rule MbaSecureFir { - CHECK_STOP: - MBASECUREFIR & ~MBASECUREFIR_MASK & ~MBASECUREFIR_ACT0 & ~MBASECUREFIR_ACT1; # NOTE: This secure FIR will only report checkstop attentions. + CHECK_STOP: MBASECUREFIR; + UNIT_CS: MBASECUREFIR; }; group gMbaSecureFir filter singlebit @@ -491,6 +470,8 @@ rule MbaDdrPhyFir { CHECK_STOP: MBADDRPHYFIR & ~MBADDRPHYFIR_MASK & ~MBADDRPHYFIR_ACT0 & ~MBADDRPHYFIR_ACT1; + UNIT_CS: + MBADDRPHYFIR & ~MBADDRPHYFIR_MASK & ~MBADDRPHYFIR_ACT0 & ~MBADDRPHYFIR_ACT1; RECOVERABLE: MBADDRPHYFIR & ~MBADDRPHYFIR_MASK & ~MBADDRPHYFIR_ACT0 & MBADDRPHYFIR_ACT1; }; @@ -560,6 +541,7 @@ group gMbaDdrPhyFir filter singlebit rule MbaCalFir { CHECK_STOP: MBACALFIR & ~MBACALFIR_MASK & ~MBACALFIR_ACT0 & ~MBACALFIR_ACT1; + UNIT_CS: MBACALFIR & ~MBACALFIR_MASK & ~MBACALFIR_ACT0 & ~MBACALFIR_ACT1; RECOVERABLE: MBACALFIR & ~MBACALFIR_MASK & ~MBACALFIR_ACT0 & MBACALFIR_ACT1; }; diff --git a/src/usr/diag/prdf/common/plat/pegasus/Mcs.rule b/src/usr/diag/prdf/common/plat/pegasus/Mcs.rule index f8a703088..ef118c038 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Mcs.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Mcs.rule @@ -128,9 +128,13 @@ rule MciFir CHECK_STOP: MCIFIR & ~MCIFIR_MASK & ~MCIFIR_ACT0 & ~MCIFIR_ACT1; RECOVERABLE: MCIFIR & ~MCIFIR_MASK & ~MCIFIR_ACT0 & MCIFIR_ACT1; SPECIAL: MCIFIR & ~MCIFIR_MASK & MCIFIR_ACT0 & ~MCIFIR_ACT1; + + # All of the Centaur CS (channel fail) bits set as recoverable. + UNIT_CS: MCIFIR & ~MCIFIR_MASK & ~MCIFIR_ACT0 & MCIFIR_ACT1; }; -group gMciFir attntype CHECK_STOP, RECOVERABLE, SPECIAL filter singlebit +group gMciFir attntype CHECK_STOP, RECOVERABLE, SPECIAL, UNIT_CS + filter priority( 0, 1, 6, 8, 9, 12, 22, 23, 40 ) # Centaur CS FIR bits { /** MCIFIR[0] * MCIFIRQ_REPLAY_TIMEOUT diff --git a/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule b/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule index d5453df73..9707d9caa 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule @@ -88,11 +88,10 @@ chip Membuf .include "Membuf_regs_NEST.rule" .include "Membuf_regs_MEM.rule" - ######################################################################## - # + ############################################################################ # Non-existant Registers for Capture - # - ######################################################################## + ############################################################################ + register VPD_FAILED_LANES_0TO63 { name "Bit map 0-63 of failed lanes read from VPD"; @@ -146,9 +145,12 @@ rule GlobalFir { CHECK_STOP: GLOBAL_CS_FIR; RECOVERABLE: GLOBAL_RE_FIR; + + # All of the Centaur CS (channel fail) bits are set as checkstop. + UNIT_CS: GLOBAL_CS_FIR; }; -group gGlobalFir attntype CHECK_STOP, RECOVERABLE filter singlebit +group gGlobalFir attntype CHECK_STOP, RECOVERABLE, UNIT_CS filter singlebit { /** GLOBAL_FIR[1] * Attention from TP chiplet diff --git a/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_MEM.rule b/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_MEM.rule index 42e45c6e0..48b4dab7f 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_MEM.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_MEM.rule @@ -29,6 +29,8 @@ rule MemChipletFir { CHECK_STOP: (MEM_CHIPLET_CS_FIR & `17fc000000000000`) & ~MEM_CHIPLET_FIR_MASK; + UNIT_CS: + (MEM_CHIPLET_CS_FIR & `17fc000000000000`) & ~MEM_CHIPLET_FIR_MASK; RECOVERABLE: ((MEM_CHIPLET_RE_FIR >> 2) & `17f0000000000000`) & ~MEM_CHIPLET_FIR_MASK; }; @@ -111,6 +113,7 @@ group gMemChipletSpa filter singlebit rule MemLFir { CHECK_STOP: MEM_LFIR & ~MEM_LFIR_MASK & ~MEM_LFIR_ACT0 & ~MEM_LFIR_ACT1; + UNIT_CS: MEM_LFIR & ~MEM_LFIR_MASK & ~MEM_LFIR_ACT0 & ~MEM_LFIR_ACT1; RECOVERABLE: MEM_LFIR & ~MEM_LFIR_MASK & ~MEM_LFIR_ACT0 & MEM_LFIR_ACT1; }; @@ -175,6 +178,8 @@ rule MemFbistFir { CHECK_STOP: MEMFBISTFIR & ~MEMFBISTFIR_MASK & ~MEMFBISTFIR_ACT0 & ~MEMFBISTFIR_ACT1; + UNIT_CS: + MEMFBISTFIR & ~MEMFBISTFIR_MASK & ~MEMFBISTFIR_ACT0 & ~MEMFBISTFIR_ACT1; RECOVERABLE: MEMFBISTFIR & ~MEMFBISTFIR_MASK & ~MEMFBISTFIR_ACT0 & MEMFBISTFIR_ACT1; }; diff --git a/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule b/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule index d70afcef7..b9372490f 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule @@ -29,6 +29,8 @@ rule NestChipletFir { CHECK_STOP: (NEST_CHIPLET_CS_FIR & `17fe000000000000`) & ~NEST_CHIPLET_FIR_MASK; + UNIT_CS: + (NEST_CHIPLET_CS_FIR & `17fe000000000000`) & ~NEST_CHIPLET_FIR_MASK; RECOVERABLE: ((NEST_CHIPLET_RE_FIR >> 2) & `17fc000000000000`) & ~NEST_CHIPLET_FIR_MASK; }; @@ -88,6 +90,7 @@ group gNestChipletFir filter singlebit rule NestLFir { CHECK_STOP: NEST_LFIR & ~NEST_LFIR_MASK & ~NEST_LFIR_ACT0 & ~NEST_LFIR_ACT1; + UNIT_CS: NEST_LFIR & ~NEST_LFIR_MASK & ~NEST_LFIR_ACT0 & ~NEST_LFIR_ACT1; RECOVERABLE: NEST_LFIR & ~NEST_LFIR_MASK & ~NEST_LFIR_ACT0 & NEST_LFIR_ACT1; }; @@ -151,6 +154,7 @@ group gNestLFir filter singlebit rule DmiFir { CHECK_STOP: DMIFIR & ~DMIFIR_MASK & ~DMIFIR_ACT0 & ~DMIFIR_ACT1; + UNIT_CS: DMIFIR & ~DMIFIR_MASK & ~DMIFIR_ACT0 & ~DMIFIR_ACT1; RECOVERABLE: DMIFIR & ~DMIFIR_MASK & ~DMIFIR_ACT0 & DMIFIR_ACT1; }; @@ -313,8 +317,15 @@ group gDmiFir filter singlebit rule SensorCacheFir { - CHECK_STOP: SENSORCACHEFIR & ~SENSORCACHEFIR_MASK & ~SENSORCACHEFIR_ACT0 & ~SENSORCACHEFIR_ACT1; - RECOVERABLE: SENSORCACHEFIR & ~SENSORCACHEFIR_MASK & ~SENSORCACHEFIR_ACT0 & SENSORCACHEFIR_ACT1; + CHECK_STOP: + SENSORCACHEFIR & ~SENSORCACHEFIR_MASK & + ~SENSORCACHEFIR_ACT0 & ~SENSORCACHEFIR_ACT1; + UNIT_CS: + SENSORCACHEFIR & ~SENSORCACHEFIR_MASK & + ~SENSORCACHEFIR_ACT0 & ~SENSORCACHEFIR_ACT1; + RECOVERABLE: + SENSORCACHEFIR & ~SENSORCACHEFIR_MASK & + ~SENSORCACHEFIR_ACT0 & SENSORCACHEFIR_ACT1; }; group gSensorCacheFir filter singlebit @@ -467,6 +478,7 @@ group gSensorCacheFir filter singlebit rule MbiFir { CHECK_STOP: MBIFIR & ~MBIFIR_MASK & ~MBIFIR_ACT0 & ~MBIFIR_ACT1; + UNIT_CS: MBIFIR & ~MBIFIR_MASK & ~MBIFIR_ACT0 & ~MBIFIR_ACT1; RECOVERABLE: MBIFIR & ~MBIFIR_MASK & ~MBIFIR_ACT0 & MBIFIR_ACT1; }; @@ -595,6 +607,7 @@ group gMbiFir filter singlebit rule MbsFir { CHECK_STOP: MBSFIR & ~MBSFIR_MASK & ~MBSFIR_ACT0 & ~MBSFIR_ACT1; + UNIT_CS: MBSFIR & ~MBSFIR_MASK & ~MBSFIR_ACT0 & ~MBSFIR_ACT1; RECOVERABLE: MBSFIR & ~MBSFIR_MASK & ~MBSFIR_ACT0 & MBSFIR_ACT1; }; @@ -764,6 +777,8 @@ rule MbsEcc01Fir { CHECK_STOP: MBSECC01FIR & ~MBSECC01FIR_MASK & ~MBSECC01FIR_ACT0 & ~MBSECC01FIR_ACT1; + UNIT_CS: + MBSECC01FIR & ~MBSECC01FIR_MASK & ~MBSECC01FIR_ACT0 & ~MBSECC01FIR_ACT1; RECOVERABLE: MBSECC01FIR & ~MBSECC01FIR_MASK & ~MBSECC01FIR_ACT0 & MBSECC01FIR_ACT1; }; @@ -772,6 +787,8 @@ rule MbsEcc23Fir { CHECK_STOP: MBSECC23FIR & ~MBSECC23FIR_MASK & ~MBSECC23FIR_ACT0 & ~MBSECC23FIR_ACT1; + UNIT_CS: + MBSECC23FIR & ~MBSECC23FIR_MASK & ~MBSECC23FIR_ACT0 & ~MBSECC23FIR_ACT1; RECOVERABLE: MBSECC23FIR & ~MBSECC23FIR_MASK & ~MBSECC23FIR_ACT0 & MBSECC23FIR_ACT1; }; @@ -1007,6 +1024,8 @@ rule Mcbist01Fir { CHECK_STOP: MCBIST01FIR & ~MCBIST01FIR_MASK & ~MCBIST01FIR_ACT0 & ~MCBIST01FIR_ACT1; + UNIT_CS: + MCBIST01FIR & ~MCBIST01FIR_MASK & ~MCBIST01FIR_ACT0 & ~MCBIST01FIR_ACT1; RECOVERABLE: MCBIST01FIR & ~MCBIST01FIR_MASK & ~MCBIST01FIR_ACT0 & MCBIST01FIR_ACT1; }; @@ -1015,6 +1034,8 @@ rule Mcbist23Fir { CHECK_STOP: MCBIST23FIR & ~MCBIST23FIR_MASK & ~MCBIST23FIR_ACT0 & ~MCBIST23FIR_ACT1; + UNIT_CS: + MCBIST23FIR & ~MCBIST23FIR_MASK & ~MCBIST23FIR_ACT0 & ~MCBIST23FIR_ACT1; RECOVERABLE: MCBIST23FIR & ~MCBIST23FIR_MASK & ~MCBIST23FIR_ACT0 & MCBIST23FIR_ACT1; }; @@ -1070,6 +1091,8 @@ rule NestFbistFir { CHECK_STOP: NESTFBISTFIR & ~NESTFBISTFIR_MASK & ~NESTFBISTFIR_ACT0 & ~NESTFBISTFIR_ACT1; + UNIT_CS: + NESTFBISTFIR & ~NESTFBISTFIR_MASK & ~NESTFBISTFIR_ACT0 & ~NESTFBISTFIR_ACT1; RECOVERABLE: NESTFBISTFIR & ~NESTFBISTFIR_MASK & ~NESTFBISTFIR_ACT0 & NESTFBISTFIR_ACT1; }; @@ -1133,9 +1156,9 @@ group gNestFbistFir filter singlebit rule MbsSecureFir { - CHECK_STOP: - MBSSECUREFIR & ~MBSSECUREFIR_MASK & ~MBSSECUREFIR_ACT0 & ~MBSSECUREFIR_ACT1; # NOTE: This secure FIR will only report checkstop attentions. + CHECK_STOP: MBSSECUREFIR; + UNIT_CS: MBSSECUREFIR; }; group gMbsSecureFir filter singlebit diff --git a/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_TP.rule b/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_TP.rule index d06232d85..9faddbf25 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_TP.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_TP.rule @@ -48,6 +48,7 @@ group gTpChipletFir filter singlebit rule TpLFir { CHECK_STOP: TP_LFIR & ~TP_LFIR_MASK & ~TP_LFIR_ACT0 & ~TP_LFIR_ACT1; + UNIT_CS: TP_LFIR & ~TP_LFIR_MASK & ~TP_LFIR_ACT0 & ~TP_LFIR_ACT1; RECOVERABLE: TP_LFIR & ~TP_LFIR_MASK & ~TP_LFIR_ACT0 & TP_LFIR_ACT1; }; diff --git a/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_NEST.rule b/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_NEST.rule index 5e6d4e31b..5c6dd316b 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_NEST.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_NEST.rule @@ -421,38 +421,13 @@ # NEST Chiplet MBSSECUREFIR ############################################################################ + # This register is hardwired to channel failure (checkstop) and we cannot + # mask or change the state of the action registers. register MBSSECUREFIR { name "MBU.MBS.ARB.RXLT.MBSSIRQ"; scomaddr 0x0201141e; reset (&, 0x0201141f); - # This is a special register in which we are not able to mask. All bits - # in this register should be set to checkstop so we will not need to - # mask anyway. - capture group default; - }; - - register MBSSECUREFIR_MASK - { - name "MBU.MBS.ARB.RXLT.MBSSIRMASK"; - scomaddr 0x02011421; - capture type secondary; - capture group default; - }; - - register MBSSECUREFIR_ACT0 - { - name "MBU.MBS.ARB.RXLT.MBSSIRACT0"; - scomaddr 0x02011424; - capture type secondary; - capture group default; - }; - - register MBSSECUREFIR_ACT1 - { - name "MBU.MBS.ARB.RXLT.MBSSIRACT1"; - scomaddr 0x02011425; - capture type secondary; capture group default; }; diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C index 7511b0e12..d19c293c6 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C @@ -211,6 +211,65 @@ int32_t MBA1_Starvation( ExtensibleChip * i_membChip, } PRDF_PLUGIN_DEFINE( Membuf, MBA1_Starvation ); +//------------------------------------------------------------------------------ + +/** + * @brief Analysis code that is called before the main analyze() function. + * @param i_mbChip A MEMBUF chip. + * @param i_sc Step Code Data structure + * @param o_analyzed TRUE if analysis has been done on this chip + * @return failure or success + */ +int32_t PreAnalysis( ExtensibleChip * i_mbChip, STEP_CODE_DATA_STRUCT & i_sc, + bool & o_analyzed ) +{ + #define PRDF_FUNC "[Membuf::PreAnalysis] " + + int32_t o_rc = SUCCESS; + + o_analyzed = false; + + // Check for a Centaur Checkstop + do + { + // Skip if we're already analyzing a unit checkstop + if ( i_sc.service_data->GetFlag(ServiceDataCollector::UNIT_CS) ) + break; + + CenMembufDataBundle * mbdb = getCenMembufDataBundle(i_mbChip); + ExtensibleChip * mcsChip = mbdb->getMcsChip(); + if ( NULL == mcsChip ) + { + PRDF_ERR( PRDF_FUNC"CenMembufDataBundle::getMcsChip() failed" ); + o_rc = FAIL; break; + } + + // Check MCIFIR[31] for presence of Centaur checkstop + SCAN_COMM_REGISTER_CLASS * fir = mcsChip->getRegister("MCIFIR"); + o_rc = fir->Read(); + if ( SUCCESS != o_rc ) + { + PRDF_ERR( PRDF_FUNC"Failed to read MCIFIR on 0x%08x", + mcsChip->GetId() ); + break; + } + + if ( !fir->IsBitSet(31) ) break; // No unit checkstop + + // Set Unit checkstop flag + i_sc.service_data->SetFlag(ServiceDataCollector::UNIT_CS); + i_sc.service_data->SetThresholdMaskId(0); + + // Set the cause attention type + i_sc.service_data->SetCauseAttentionType(UNIT_CS); + + } while (0); + + return o_rc; + + #undef PRDF_FUNC +} +PRDF_PLUGIN_DEFINE( Membuf, PreAnalysis ); //------------------------------------------------------------------------------ diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C index 1edc054fe..92d0f46b8 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C @@ -66,10 +66,11 @@ int32_t CheckCentaurCheckstop( ExtensibleChip * i_mcsChip, { int32_t l_rc = SUCCESS; - do { + do + { // Skip if we're already at Unit Checkstop in SDC if (i_sc.service_data->GetFlag(ServiceDataCollector::UNIT_CS)) - { break; } + break; // Check MCIFIR[31] for presence of Centaur checkstop SCAN_COMM_REGISTER_CLASS * l_mcifir = i_mcsChip->getRegister("MCIFIR"); @@ -88,6 +89,9 @@ int32_t CheckCentaurCheckstop( ExtensibleChip * i_mcsChip, i_sc.service_data->SetFlag(ServiceDataCollector::UNIT_CS); i_sc.service_data->SetThresholdMaskId(0); + // Set the cause attention type + i_sc.service_data->SetCauseAttentionType(UNIT_CS); + // Collect FFDC // FIXME: RTC: 63753 (CENT_XSTP_FFDC capture group still needs to be // populated with list of registers provided by Marc or Ken). diff --git a/src/usr/diag/prdf/test/prdfTest_Mba.H b/src/usr/diag/prdf/test/prdfTest_Mba.H index 0cbcccf76..eae23077a 100644 --- a/src/usr/diag/prdf/test/prdfTest_Mba.H +++ b/src/usr/diag/prdf/test/prdfTest_Mba.H @@ -45,7 +45,7 @@ class MBAFIR:public CxxTest::TestSuite { PRDS_BEGIN("MBAFIR01 recoverable attention"); PRDS_ERROR_ENTRY("NODE{0}:MEMBUF{4}", PRDF::RECOVERABLE); - PRDS_EXPECTED_SIGNATURE("NODE{0}:MEMBUF{4}:MBS{0}:MBA{0}", 0xea280003); + PRDS_EXPECTED_SIGNATURE("NODE{0}:MEMBUF{4}:MBS{0}:MBA{0}", 0x43f10003); // PRDS_EXPECTED_CALLOUT(NONE); // GLOBAL_RE_FIR PRDS_SCR_WRITE("NODE{0}:MEMBUF{4}", 0x570F001B, 0x1000000000000000); @@ -67,7 +67,7 @@ class MBAFIR:public CxxTest::TestSuite /* PRDS_BEGIN("MBAFIR01 Checkstop attention"); PRDS_ERROR_ENTRY("NODE{0}:MEMBUF{4}", PRDF::CHECK_STOP); - PRDS_EXPECTED_SIGNATURE("NODE{0}:MEMBUF{4}:MBS{0}:MBA{0}", 0xea280002); + PRDS_EXPECTED_SIGNATURE("NODE{0}:MEMBUF{4}:MBS{0}:MBA{0}", 0x43f10002); // PRDS_EXPECTED_CALLOUT(NONE); // GLOBAL_RE_FIR PRDS_SCR_WRITE("NODE{0}:MEMBUF{4}", 0x570F001C, 0x1000000000000000); diff --git a/src/usr/diag/prdf/test/prdfTest_Mcs.H b/src/usr/diag/prdf/test/prdfTest_Mcs.H index d81eb20e4..b3a7f40c5 100644 --- a/src/usr/diag/prdf/test/prdfTest_Mcs.H +++ b/src/usr/diag/prdf/test/prdfTest_Mcs.H @@ -45,7 +45,7 @@ class MCIFIR:public CxxTest::TestSuite { PRDS_BEGIN("MCI20 Recoverable attention"); PRDS_ERROR_ENTRY("NODE{0}:PROC{0}", PRDF::RECOVERABLE); - PRDS_EXPECTED_SIGNATURE("NODE{0}:PROC{0}:MCS{4}", 0xde310000); + PRDS_EXPECTED_SIGNATURE("NODE{0}:PROC{0}:MCS{4}", 0x2f270000); // GLOBAL_RE_FIR set bit 1 PRDS_SCR_WRITE("NODE{0}:PROC{0}", 0x570F001B , 0x4000000000000000); // TP_CHIPLET_RE_FIR set bit 7 @@ -66,7 +66,7 @@ class MCIFIR:public CxxTest::TestSuite /* PRDS_BEGIN("MCI20 Checkstop attention"); PRDS_ERROR_ENTRY("NODE{0}:PROC{0}", PRDF::CHECK_STOP); - PRDS_EXPECTED_SIGNATURE("NODE{0}:PROC{0}:MCS{4}", 0xde310003); + PRDS_EXPECTED_SIGNATURE("NODE{0}:PROC{0}:MCS{4}", 0x2f270003); // GLOBAL_RE_FIR set bit 1 PRDS_SCR_WRITE("NODE{0}:PROC{0}", 0x570F001C , 0x4000000000000000); // TP_CHIPLET_RE_FIR set bit 9 @@ -87,7 +87,7 @@ class MCIFIR:public CxxTest::TestSuite { PRDS_BEGIN("MCI20 Special attention"); PRDS_ERROR_ENTRY("NODE{0}:PROC{0}", PRDF::SPECIAL); - PRDS_EXPECTED_SIGNATURE("NODE{0}:PROC{0}:MCS{4}", 0xde310001); + PRDS_EXPECTED_SIGNATURE("NODE{0}:PROC{0}:MCS{4}", 0x2f270001); // GLOBAL_SPA_FIR set bit 1 PRDS_SCR_WRITE("NODE{0}:PROC{0}", 0x570F001A , 0x4000000000000000); // TP_CHIPLET_RE_FIR set bit 5 diff --git a/src/usr/diag/prdf/test/prdfTest_McsMciFir.H b/src/usr/diag/prdf/test/prdfTest_McsMciFir.H index b5d99ca49..62e3dc582 100644 --- a/src/usr/diag/prdf/test/prdfTest_McsMciFir.H +++ b/src/usr/diag/prdf/test/prdfTest_McsMciFir.H @@ -49,7 +49,7 @@ class MCSMCIFIR:public CxxTest::TestSuite PRDS_ERROR_ENTRY("NODE{0}:PROC{0}", PRDF::RECOVERABLE); - PRDS_EXPECTED_SIGNATURE("NODE{0}:PROC{0}:MCS{4}",0xde310007 ); + PRDS_EXPECTED_SIGNATURE("NODE{0}:PROC{0}:MCS{4}",0x2f270007 ); //GLOBAL_RE_FIR PRDS_SCR_WRITE("NODE{0}:PROC{0}", 0x570F001B, 0x4000000000000000); diff --git a/src/usr/diag/prdf/test/prdfTest_ProcMbsFir.H b/src/usr/diag/prdf/test/prdfTest_ProcMbsFir.H index 061106e58..537ef6938 100755 --- a/src/usr/diag/prdf/test/prdfTest_ProcMbsFir.H +++ b/src/usr/diag/prdf/test/prdfTest_ProcMbsFir.H @@ -48,7 +48,7 @@ class MBSFIR:public CxxTest::TestSuite PRDS_ERROR_ENTRY("NODE{0}:MEMBUF{4}", PRDF::RECOVERABLE); - PRDS_EXPECTED_SIGNATURE("NODE{0}:MEMBUF{4}", 0xa5a10000); + PRDS_EXPECTED_SIGNATURE("NODE{0}:MEMBUF{4}", 0x776c0000); //GLOBAL_RE_FIR PRDS_SCR_WRITE("NODE{0}:MEMBUF{4}", 0x570F001B, 0x2000000000000000); -- cgit v1.2.1