summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2013-04-30 13:09:49 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-05-01 16:17:11 -0500
commit7e236aac934843e875280b3f9456f026466bc68b (patch)
tree7ccd4c5407a7312a525f24570ed026032fa7bda1 /src/usr/diag/prdf
parent3f2083d14529ba901e5c8ac761b4c607c2856896 (diff)
downloadtalos-hostboot-7e236aac934843e875280b3f9456f026466bc68b.tar.gz
talos-hostboot-7e236aac934843e875280b3f9456f026466bc68b.zip
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 <iawillia@us.ibm.com> Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4309
Diffstat (limited to 'src/usr/diag/prdf')
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Mba.rule50
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Mcs.rule6
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Membuf.rule12
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Membuf_acts_MEM.rule5
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule31
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Membuf_acts_TP.rule1
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Membuf_regs_NEST.rule29
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C59
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C8
-rw-r--r--src/usr/diag/prdf/test/prdfTest_Mba.H4
-rw-r--r--src/usr/diag/prdf/test/prdfTest_Mcs.H6
-rw-r--r--src/usr/diag/prdf/test/prdfTest_McsMciFir.H2
-rwxr-xr-xsrc/usr/diag/prdf/test/prdfTest_ProcMbsFir.H2
13 files changed, 135 insertions, 80 deletions
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);
OpenPOWER on IntegriCloud