From ed55b087c5b070c99bdd4cb379e1291282d89897 Mon Sep 17 00:00:00 2001 From: Zane Shelley Date: Tue, 24 Apr 2018 11:26:06 -0500 Subject: PRD: single bit analysis support for MEMBUF target Change-Id: I9203af796be7f832d1aac1ed674252cb2df29e66 RTC: 187481 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57750 Tested-by: Jenkins Server Reviewed-by: Matt Derksen Reviewed-by: Benjamin J. Weisenbeck Reviewed-by: Caleb N. Palmer Reviewed-by: Zane C. Shelley Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57884 CI-Ready: Zane C. Shelley Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW --- src/usr/diag/prdf/common/plat/cen/cen_centaur.rule | 100 +- .../prdf/common/plat/cen/cen_centaur_actions.rule | 33 + src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C | 4 +- src/usr/diag/prdf/common/plat/pegasus/Membuf.rule | 2318 +++++++++++++++++++- .../prdf/common/plat/pegasus/Membuf_acts_MEM.rule | 207 -- .../prdf/common/plat/pegasus/Membuf_acts_NEST.rule | 1345 ------------ .../prdf/common/plat/pegasus/Membuf_acts_TP.rule | 157 -- .../prdf/common/plat/pegasus/Membuf_regs_MEM.rule | 108 +- .../prdf/common/plat/pegasus/Membuf_regs_NEST.rule | 417 ---- .../prdf/common/plat/pegasus/Membuf_regs_TP.rule | 70 +- .../common/plat/pegasus/prdfCenMbaCaptureData.C | 4 +- .../diag/prdf/common/plat/pegasus/prdfCenMembuf.C | 110 - 12 files changed, 2313 insertions(+), 2560 deletions(-) delete mode 100755 src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_MEM.rule delete mode 100755 src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_TP.rule (limited to 'src/usr/diag/prdf') diff --git a/src/usr/diag/prdf/common/plat/cen/cen_centaur.rule b/src/usr/diag/prdf/common/plat/cen/cen_centaur.rule index f75ff5791..240615c62 100644 --- a/src/usr/diag/prdf/common/plat/cen/cen_centaur.rule +++ b/src/usr/diag/prdf/common/plat/cen/cen_centaur.rule @@ -790,8 +790,12 @@ rule rNEST_CHIPLET_FIR (NEST_CHIPLET_RE_FIR >> 2) & ~NEST_CHIPLET_FIR_MASK & `1fffffffffffffff`; }; -group gNEST_CHIPLET_FIR filter singlebit +group gNEST_CHIPLET_FIR filter priority( 3, 6, 5, 7 ) { + # NOTE: The MBIFIR must be analyzed before the DMIFIR and both the MBIFIR + # and DMIFIR must be analyzed before the MBSFIR. All other FIRs will be + # analyzed in order. + /** NEST_CHIPLET_FIR[3] * Attention from NEST_LFIR */ @@ -947,7 +951,8 @@ rule rDMIFIR DMIFIR & ~DMIFIR_MASK & ~DMIFIR_ACT0 & DMIFIR_ACT1; }; -group gDMIFIR filter singlebit, cs_root_cause( 10 ) +group gDMIFIR filter priority( 10, 2, 11, 12, 9 ), + cs_root_cause( 10 ) { /** DMIFIR[0] * RX invalid state or parity error @@ -1043,7 +1048,8 @@ rule rMBIFIR MBIFIR & ~MBIFIR_MASK & ~MBIFIR_ACT0 & MBIFIR_ACT1; }; -group gMBIFIR filter singlebit, cs_root_cause( 0, 6, 8, 9 ) +group gMBIFIR filter priority( 8, 9, 19, 20, 6, 0, 16, 5, 10 ), + cs_root_cause( 0, 6, 8, 9, 19, 20 ) { /** MBIFIR[0] * Replay Timeout @@ -1078,7 +1084,7 @@ group gMBIFIR filter singlebit, cs_root_cause( 0, 6, 8, 9 ) /** MBIFIR[6] * Replay Buffer ECC UE */ - (rMBIFIR, bit(6)) ? self_th_1; + (rMBIFIR, bit(6)) ? self_th_1_UERE; /** MBIFIR[7] * MBI State Machine Timeout @@ -1088,12 +1094,12 @@ group gMBIFIR filter singlebit, cs_root_cause( 0, 6, 8, 9 ) /** MBIFIR[8] * MBI Internal Control Parity Error */ - (rMBIFIR, bit(8)) ? self_th_1; + (rMBIFIR, bit(8)) ? self_th_1_UERE; /** MBIFIR[9] * MBI Data Flow Parity Error */ - (rMBIFIR, bit(9)) ? self_th_1; + (rMBIFIR, bit(9)) ? self_th_1_UERE; /** MBIFIR[10] * CRC Performance Degradation @@ -1143,7 +1149,7 @@ group gMBIFIR filter singlebit, cs_root_cause( 0, 6, 8, 9 ) /** MBIFIR[19] * MBICFG parity error */ - (rMBIFIR, bit(19)) ? self_th_1; + (rMBIFIR, bit(19)) ? self_th_1_UERE; /** MBIFIR[20] * Replay Buffer Overrun @@ -1194,12 +1200,12 @@ group gMBSFIR filter singlebit, cs_root_cause( 0, 1, 2, 4, 6, 8, 10, 13, 16, 18, /** MBSFIR[1] * INT_PROTOCOL_ERROR */ - (rMBSFIR, bit(1)) ? self_th_1; + (rMBSFIR, bit(1)) ? self_th_1_UERE; /** MBSFIR[2] * INVALID_ADDRESS_ERROR */ - (rMBSFIR, bit(2)) ? level2_th_1; + (rMBSFIR, bit(2)) ? level2_th_1_UERE; /** MBSFIR[3] * EXTERNAL_TIMEOUT @@ -1219,7 +1225,7 @@ group gMBSFIR filter singlebit, cs_root_cause( 0, 1, 2, 4, 6, 8, 10, 13, 16, 18, /** MBSFIR[6] * INT_BUFFER_UE */ - (rMBSFIR, bit(6)) ? self_th_1; + (rMBSFIR, bit(6)) ? self_th_1_UERE; /** MBSFIR[7] * INT_BUFFER_SUE @@ -1229,7 +1235,7 @@ group gMBSFIR filter singlebit, cs_root_cause( 0, 1, 2, 4, 6, 8, 10, 13, 16, 18, /** MBSFIR[8] * INT_PARITY_ERROR */ - (rMBSFIR, bit(8)) ? self_th_1; + (rMBSFIR, bit(8)) ? self_th_1_UERE; /** MBSFIR[9] * CACHE_SRW_CE @@ -1264,12 +1270,12 @@ group gMBSFIR filter singlebit, cs_root_cause( 0, 1, 2, 4, 6, 8, 10, 13, 16, 18, /** MBSFIR[15] * DIR_CE */ - (rMBSFIR, bit(15)) ? TBDDefaultCallout; + (rMBSFIR, bit(15)) ? l4_th_32perDay; /** MBSFIR[16] * DIR_UE */ - (rMBSFIR, bit(16)) ? TBDDefaultCallout; + (rMBSFIR, bit(16)) ? l4_th_1_UERE; /** MBSFIR[17] * DIR_MEMBER_DELETED @@ -1279,17 +1285,17 @@ group gMBSFIR filter singlebit, cs_root_cause( 0, 1, 2, 4, 6, 8, 10, 13, 16, 18, /** MBSFIR[18] * DIR_ALL_MEMBERS_DELETED */ - (rMBSFIR, bit(18)) ? TBDDefaultCallout; + (rMBSFIR, bit(18)) ? l4_th_1_UERE; /** MBSFIR[19] * LRU_ERROR */ - (rMBSFIR, bit(19)) ? TBDDefaultCallout; + (rMBSFIR, bit(19)) ? l4_th_32perDay; /** MBSFIR[20] * EDRAM ERROR */ - (rMBSFIR, bit(20)) ? TBDDefaultCallout; + (rMBSFIR, bit(20)) ? l4_th_1_UERE; /** MBSFIR[21] * EMERGENCY_THROTTLE_SET @@ -1324,7 +1330,7 @@ group gMBSFIR filter singlebit, cs_root_cause( 0, 1, 2, 4, 6, 8, 10, 13, 16, 18, /** MBSFIR[27] * SRB_BUFFER_UE */ - (rMBSFIR, bit(27)) ? self_th_1; + (rMBSFIR, bit(27)) ? self_th_1_UERE; /** MBSFIR[28] * SRB_BUFFER_SUE @@ -1339,7 +1345,7 @@ group gMBSFIR filter singlebit, cs_root_cause( 0, 1, 2, 4, 6, 8, 10, 13, 16, 18, /** MBSFIR[30] * PROXIMAL_CE_UE */ - (rMBSFIR, bit(30)) ? TBDDefaultCallout; + (rMBSFIR, bit(30)) ? l4_th_1_UERE; /** MBSFIR[31:32] * Spare @@ -1414,7 +1420,7 @@ rule rMBSECCFIR_0 MBSECCFIR_0 & ~MBSECCFIR_0_MASK & ~MBSECCFIR_0_ACT0 & MBSECCFIR_0_ACT1; }; -group gMBSECCFIR_0 filter singlebit, cs_root_cause +group gMBSECCFIR_0 filter singlebit, cs_root_cause( 19, 44, 47, 49 ) { /** MBSECCFIR_0[0] * Memory chip mark on rank 0 @@ -1534,7 +1540,7 @@ group gMBSECCFIR_0 filter singlebit, cs_root_cause /** MBSECCFIR_0[44] * Memory RCD parity error */ - (rMBSECCFIR_0, bit(44)) ? self_th_1; # CUMULUS_10 + (rMBSECCFIR_0, bit(44)) ? self_th_1_UERE; # CUMULUS_10 /** MBSECCFIR_0[45] * Maintenance RCD parity error @@ -1544,32 +1550,32 @@ group gMBSECCFIR_0 filter singlebit, cs_root_cause /** MBSECCFIR_0[46] * Recoverable config reg PE */ - (rMBSECCFIR_0, bit(46)) ? TBDDefaultCallout; + (rMBSECCFIR_0, bit(46)) ? mba0_th_1; /** MBSECCFIR_0[47] * Unrecoverable config reg PE */ - (rMBSECCFIR_0, bit(47)) ? TBDDefaultCallout; + (rMBSECCFIR_0, bit(47)) ? mba0_th_1_UERE; /** MBSECCFIR_0[48] * Maskable config reg PE */ - (rMBSECCFIR_0, bit(48)) ? TBDDefaultCallout; + (rMBSECCFIR_0, bit(48)) ? threshold_and_mask_mba0; /** MBSECCFIR_0[49] * ECC datapath parity error */ - (rMBSECCFIR_0, bit(49)) ? TBDDefaultCallout; + (rMBSECCFIR_0, bit(49)) ? mba0_th_1_UERE; /** MBSECCFIR_0[50] * internal scom error */ - (rMBSECCFIR_0, bit(50)) ? TBDDefaultCallout; + (rMBSECCFIR_0, bit(50)) ? threshold_and_mask_mba0; /** MBSECCFIR_0[51] * internal scom error clone */ - (rMBSECCFIR_0, bit(51)) ? TBDDefaultCallout; + (rMBSECCFIR_0, bit(51)) ? threshold_and_mask_mba0; }; @@ -1585,7 +1591,7 @@ rule rMBSECCFIR_1 MBSECCFIR_1 & ~MBSECCFIR_1_MASK & ~MBSECCFIR_1_ACT0 & MBSECCFIR_1_ACT1; }; -group gMBSECCFIR_1 filter singlebit +group gMBSECCFIR_1 filter singlebit, cs_root_cause( 19, 44, 47, 49 ) { /** MBSECCFIR_1[0] * Memory chip mark on rank 0 @@ -1705,7 +1711,7 @@ group gMBSECCFIR_1 filter singlebit /** MBSECCFIR_1[44] * Memory RCD parity error */ - (rMBSECCFIR_1, bit(44)) ? self_th_1; # CUMULUS_10 + (rMBSECCFIR_1, bit(44)) ? self_th_1_UERE; # CUMULUS_10 /** MBSECCFIR_1[45] * Maintenance RCD parity error @@ -1715,32 +1721,32 @@ group gMBSECCFIR_1 filter singlebit /** MBSECCFIR_1[46] * Recoverable config reg PE */ - (rMBSECCFIR_1, bit(46)) ? TBDDefaultCallout; + (rMBSECCFIR_1, bit(46)) ? mba1_th_1; /** MBSECCFIR_1[47] * Unrecoverable config reg PE */ - (rMBSECCFIR_1, bit(47)) ? TBDDefaultCallout; + (rMBSECCFIR_1, bit(47)) ? mba1_th_1_UERE; /** MBSECCFIR_1[48] * Maskable config reg PE */ - (rMBSECCFIR_1, bit(48)) ? TBDDefaultCallout; + (rMBSECCFIR_1, bit(48)) ? threshold_and_mask_mba1; /** MBSECCFIR_1[49] * ECC datapath parity error */ - (rMBSECCFIR_1, bit(49)) ? TBDDefaultCallout; + (rMBSECCFIR_1, bit(49)) ? mba1_th_1_UERE; /** MBSECCFIR_1[50] * internal scom error */ - (rMBSECCFIR_1, bit(50)) ? TBDDefaultCallout; + (rMBSECCFIR_1, bit(50)) ? threshold_and_mask_mba1; /** MBSECCFIR_1[51] * internal scom error clone */ - (rMBSECCFIR_1, bit(51)) ? TBDDefaultCallout; + (rMBSECCFIR_1, bit(51)) ? threshold_and_mask_mba1; }; @@ -1756,7 +1762,7 @@ rule rSCACFIR SCACFIR & ~SCACFIR_MASK & ~SCACFIR_ACT0 & SCACFIR_ACT1; }; -group gSCACFIR filter singlebit, cs_root_cause +group gSCACFIR filter singlebit, cs_root_cause( 25, 26 ) { /** SCACFIR[0] * I2CM(0) Invalid Address @@ -1871,12 +1877,12 @@ group gSCACFIR filter singlebit, cs_root_cause /** SCACFIR[25] * Parity Error on Internal Register */ - (rSCACFIR, bit(25)) ? self_th_1; + (rSCACFIR, bit(25)) ? self_th_1_UERE; /** SCACFIR[26] * Parity Error on Pib Target Register */ - (rSCACFIR, bit(26)) ? self_th_1; + (rSCACFIR, bit(26)) ? self_th_1_UERE; /** SCACFIR[27:31] * Reserved @@ -1922,17 +1928,17 @@ rule rMCBISTFIR_0 MCBISTFIR_0 & ~MCBISTFIR_0_MASK & ~MCBISTFIR_0_ACT0 & MCBISTFIR_0_ACT1; }; -group gMCBISTFIR_0 filter singlebit, cs_root_cause +group gMCBISTFIR_0 filter singlebit, cs_root_cause( 0, 1 ) { /** MCBISTFIR_0[0] * SCOM Parity Errors */ - (rMCBISTFIR_0, bit(0)) ? TBDDefaultCallout; + (rMCBISTFIR_0, bit(0)) ? mba0_th_1_UERE; /** MCBISTFIR_0[1] * MBX parity errors */ - (rMCBISTFIR_0, bit(1)) ? TBDDefaultCallout; + (rMCBISTFIR_0, bit(1)) ? mba0_th_1_UERE; /** MCBISTFIR_0[2] * DRAM event 0 error @@ -1952,12 +1958,12 @@ group gMCBISTFIR_0 filter singlebit, cs_root_cause /** MCBISTFIR_0[15] * SCOM FIR error */ - (rMCBISTFIR_0, bit(15)) ? TBDDefaultCallout; + (rMCBISTFIR_0, bit(15)) ? threshold_and_mask_mba0; /** MCBISTFIR_0[16] * SCOM FIR error clone */ - (rMCBISTFIR_0, bit(16)) ? TBDDefaultCallout; + (rMCBISTFIR_0, bit(16)) ? threshold_and_mask_mba0; }; @@ -1973,17 +1979,17 @@ rule rMCBISTFIR_1 MCBISTFIR_1 & ~MCBISTFIR_1_MASK & ~MCBISTFIR_1_ACT0 & MCBISTFIR_1_ACT1; }; -group gMCBISTFIR_1 filter singlebit, cs_root_cause +group gMCBISTFIR_1 filter singlebit, cs_root_cause( 0, 1 ) { /** MCBISTFIR_1[0] * SCOM Parity Errors */ - (rMCBISTFIR_1, bit(0)) ? TBDDefaultCallout; + (rMCBISTFIR_1, bit(0)) ? mba1_th_1_UERE; /** MCBISTFIR_1[1] * MBX parity errors */ - (rMCBISTFIR_1, bit(1)) ? TBDDefaultCallout; + (rMCBISTFIR_1, bit(1)) ? mba1_th_1_UERE; /** MCBISTFIR_1[2] * DRAM event 0 error @@ -2003,12 +2009,12 @@ group gMCBISTFIR_1 filter singlebit, cs_root_cause /** MCBISTFIR_1[15] * SCOM FIR error */ - (rMCBISTFIR_1, bit(15)) ? TBDDefaultCallout; + (rMCBISTFIR_1, bit(15)) ? threshold_and_mask_mba1; /** MCBISTFIR_1[16] * SCOM FIR error clone */ - (rMCBISTFIR_1, bit(16)) ? TBDDefaultCallout; + (rMCBISTFIR_1, bit(16)) ? threshold_and_mask_mba1; }; diff --git a/src/usr/diag/prdf/common/plat/cen/cen_centaur_actions.rule b/src/usr/diag/prdf/common/plat/cen/cen_centaur_actions.rule index 9ee085a9b..47a75bfad 100644 --- a/src/usr/diag/prdf/common/plat/cen/cen_centaur_actions.rule +++ b/src/usr/diag/prdf/common/plat/cen/cen_centaur_actions.rule @@ -23,9 +23,42 @@ # # IBM_PROLOG_END_TAG +/** Callout the connected MBA 0 */ +actionclass calloutMba0 { callout(connected(TYPE_MBA, 0), MRU_MED); }; + +/** Callout the connected MBA 1 */ +actionclass calloutMba1 { callout(connected(TYPE_MBA, 1), MRU_MED); }; + +/** Callout the connected MBA 0, threshold 1 */ +actionclass mba0_th_1 { calloutMba0; threshold1; }; + +/** Callout the connected MBA 1, threshold 1 */ +actionclass mba1_th_1 { calloutMba1; threshold1; }; + +/** Callout the connected MBA 0, threshold 1, SUE source */ +actionclass mba0_th_1_UERE { mba0_th_1; SueSource; }; + +/** Callout the connected MBA 1, threshold 1, SUE source */ +actionclass mba1_th_1_UERE { mba1_th_1; SueSource; }; + +/** Threshold and mask policy (MBA 0) */ +actionclass threshold_and_mask_mba0 { calloutMba0; threshold_and_mask; }; + +/** Threshold and mask policy (MBA 1) */ +actionclass threshold_and_mask_mba1 { calloutMba1; threshold_and_mask; }; + /** Callout the connected L4 */ actionclass calloutL4 { callout(connected(TYPE_L4), MRU_MED); }; +/** Callout the connected L4, threshold 1 */ +actionclass l4_th_1 { calloutL4; threshold1; }; + +/** Callout the connected L4, threshold 32/day */ +actionclass l4_th_32perDay { calloutL4; threshold32pday; }; + +/** Callout the connected L4, threshold 1, SUE source */ +actionclass l4_th_1_UERE { l4_th_1; SueSource; }; + /** L4 cache SRW CE */ actionclass l4_cache_srw_ce { diff --git a/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C b/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C index 9b715c8a7..7f47b5d9c 100755 --- a/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C +++ b/src/usr/diag/prdf/common/plat/mem/prdfMemUtils.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2013,2017 */ +/* Contributors Listed Below - COPYRIGHT 2013,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -648,7 +648,7 @@ int32_t chnlCsCleanup( ExtensibleChip *i_mbChip, l_tpfirmask = i_mbChip->getRegister("TP_CHIPLET_FIR_MASK"); l_nestfirmask = i_mbChip->getRegister("NEST_CHIPLET_FIR_MASK"); l_memfirmask = i_mbChip->getRegister("MEM_CHIPLET_FIR_MASK"); - l_memspamask = i_mbChip->getRegister("MEM_CHIPLET_SPA_MASK"); + l_memspamask = i_mbChip->getRegister("MEM_CHIPLET_SPA_FIR_MASK"); l_tpfirmask->setAllBits(); o_rc |= l_tpfirmask->Write(); l_nestfirmask->setAllBits(); o_rc |= l_nestfirmask->Write(); diff --git a/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule b/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule index f99345328..b499a2981 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule @@ -5,7 +5,9 @@ # # OpenPOWER HostBoot Project # -# COPYRIGHT International Business Machines Corp. 2012,2014 +# Contributors Listed Below - COPYRIGHT 2012,2018 +# [+] International Business Machines Corp. +# # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,27 +23,11 @@ # # IBM_PROLOG_END_TAG -################################################################################ -# -# Scope: -# Registers and actions for the following chiplets: -# -# Chiplet Register Adddresses Description -# ======= ======================= ============================================ -# TP 0x01000000 - 0x01FFFFFF TP pervasive logic -# NEST 0x02000000 - 0x02FFFFFF NEST pervasive logic -# MEM 0x03000000 - 0x03FFFFFF MEM pervasive logic, note that this does -# include the SCOM addresses characterized by -# the MBA target. See Mba.rule for those -# address ranges. -# -################################################################################ - -chip Membuf +chip cen_centaur { - name "Centaur Chip"; + name "Centaur chip"; targettype TYPE_MEMBUF; - sigoff 0x8000; + sigoff 0x9000; dump DUMP_CONTENT_HW; scomlen 64; @@ -62,138 +48,2268 @@ chip Membuf ############################################################################# ############################################################################ - # Global Broadcast Registers + # Global Attention FIR ############################################################################ register GLOBAL_CS_FIR { name "Global Checkstop Attention FIR"; - scomaddr 0x570F001C; + scomaddr 0x500F001C; capture group default; }; register GLOBAL_RE_FIR { name "Global Recoverable Attention FIR"; - scomaddr 0x570F001B; + scomaddr 0x500F001B; capture group default; }; - register GLOBAL_SPA + ############################################################################ + # Global Special Attention FIR + ############################################################################ + + register GLOBAL_SPA_FIR { name "Global Special Attention FIR"; - scomaddr 0x570F001A; + scomaddr 0x500F001A; capture group default; }; -# Import all of the chiplet registers -.include "Membuf_regs_TP.rule" -.include "Membuf_regs_NEST.rule" -.include "Membuf_regs_MEM.rule" + ############################################################################ + # TP Chiplet FIR + ############################################################################ + + register TP_CHIPLET_CS_FIR + { + name "TP Chiplet Checkstop FIR"; + scomaddr 0x01040000; + capture group default; + capture group FirRegs; + }; + + register TP_CHIPLET_RE_FIR + { + name "TP Chiplet Recoverable FIR"; + scomaddr 0x01040001; + capture group default; + capture group FirRegs; + }; + + register TP_CHIPLET_FIR_MASK + { + name "TP Chiplet FIR MASK"; + scomaddr 0x01040002; + capture group default; + capture group FirRegs; + }; ############################################################################ - # Non-existent Registers for Capture + # Centaur chip TP_LFIR ############################################################################ - register VPD_FAILED_LANES_0TO63 + register TP_LFIR { - name "Bit map 0-63 of failed lanes read from VPD"; - scomaddr 0xFFFF0001; - access no_access; - capture group never; + name "Centaur chip TP_LFIR"; + scomaddr 0x0104000A; + reset (&, 0x0104000B); + mask (|, 0x0104000F); + capture group default; + capture group FirRegs; }; - register VPD_FAILED_LANES_64TO127 + register TP_LFIR_MASK { - name "Bit map 64-127 of failed lanes read from VPD"; - scomaddr 0xFFFF0002; - access no_access; - capture group never; + name "Centaur chip TP_LFIR MASK"; + scomaddr 0x0104000D; + capture group default; + capture group FirRegs; }; - register ALL_FAILED_LANES_0TO63 + register TP_LFIR_ACT0 { - name "Bit map 0-63 of failed lanes from io_read_erepair"; - scomaddr 0xFFFF0003; - access no_access; - capture group never; + name "Centaur chip TP_LFIR ACT0"; + scomaddr 0x01040010; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("TP_LFIR"); }; - register ALL_FAILED_LANES_64TO127 + register TP_LFIR_ACT1 { - name "Bit map 64-127 of failed lanes from io_read_erepair"; - scomaddr 0xFFFF0004; - access no_access; - capture group never; + name "Centaur chip TP_LFIR ACT1"; + scomaddr 0x01040011; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("TP_LFIR"); }; ############################################################################ - # PLL Registers + # NEST Chiplet FIR ############################################################################ - register CFAM_FSI_STATUS + register NEST_CHIPLET_CS_FIR { - name "VI.FSI.STATUS"; - scomaddr 0x00001007; - capture group never; + name "NEST Chiplet Checkstop FIR"; + scomaddr 0x02040000; + capture group default; + capture group FirRegs; }; + register NEST_CHIPLET_RE_FIR + { + name "NEST Chiplet Recoverable FIR"; + scomaddr 0x02040001; + capture group default; + capture group FirRegs; + }; -}; + register NEST_CHIPLET_FIR_MASK + { + name "NEST Chiplet FIR MASK"; + scomaddr 0x02040002; + capture group default; + capture group FirRegs; + }; - ############################################################################## - # # - # #### # # - # # # # # # ##### ### # # # ## ##### ### ### # # ### # - # # # # # # # # # # # # # # # # # ## # # # - # #### # # # #### ### # ####### # # # # # # # # ### # - # # # # # # # # # # # # # # # # # # ## # # - # # # ### #### ##### ### # # # ## # ### ### # # ### # - # # - ############################################################################## + ############################################################################ + # Centaur chip NEST_LFIR + ############################################################################ -################################################################################ -# Global Broadcast Registers -################################################################################ + register NEST_LFIR + { + name "Centaur chip NEST_LFIR"; + scomaddr 0x0204000A; + reset (&, 0x0204000B); + mask (|, 0x0204000F); + capture group default; + capture group FirRegs; + }; -rule GlobalFir -{ - CHECK_STOP: GLOBAL_CS_FIR; - RECOVERABLE: GLOBAL_RE_FIR; + register NEST_LFIR_MASK + { + name "Centaur chip NEST_LFIR MASK"; + scomaddr 0x0204000D; + capture group default; + capture group FirRegs; + }; - # All of the Centaur CS (channel fail) bits are set as checkstop. - UNIT_CS: GLOBAL_CS_FIR; -}; + register NEST_LFIR_ACT0 + { + name "Centaur chip NEST_LFIR ACT0"; + scomaddr 0x02040010; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("NEST_LFIR"); + }; -group gGlobalFir attntype CHECK_STOP, RECOVERABLE, UNIT_CS filter singlebit -{ - /** GLOBAL_FIR[1] - * Attention from TP chiplet - */ - (GlobalFir, bit(1)) ? analyze(gTpChipletFir); + register NEST_LFIR_ACT1 + { + name "Centaur chip NEST_LFIR ACT1"; + scomaddr 0x02040011; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("NEST_LFIR"); + }; - /** GLOBAL_FIR[2] - * Attention from NEST chiplet - */ - (GlobalFir, bit(2)) ? analyze(gNestChipletFir); + ############################################################################ + # Centaur chip DMIFIR + ############################################################################ - /** GLOBAL_FIR[3] - * Attention from MEM chiplet - */ - (GlobalFir, bit(3)) ? analyze(gMemChipletFir); -}; + register DMIFIR + { + name "Centaur chip DMIFIR"; + scomaddr 0x02010400; + reset (&, 0x02010401); + mask (|, 0x02010405); + capture group default; + capture group FirRegs; + }; -rule GlobalSpa -{ - SPECIAL: GLOBAL_SPA; -}; + register DMIFIR_MASK + { + name "Centaur chip DMIFIR MASK"; + scomaddr 0x02010403; + capture group default; + capture group FirRegs; + }; + + register DMIFIR_ACT0 + { + name "Centaur chip DMIFIR ACT0"; + scomaddr 0x02010406; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("DMIFIR"); + }; + + register DMIFIR_ACT1 + { + name "Centaur chip DMIFIR ACT1"; + scomaddr 0x02010407; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("DMIFIR"); + }; + + ############################################################################ + # Centaur chip MBIFIR + ############################################################################ + + register MBIFIR + { + name "Centaur chip MBIFIR"; + scomaddr 0x02010800; + reset (&, 0x02010801); + mask (|, 0x02010805); + capture group default; + capture group FirRegs; + }; + + register MBIFIR_MASK + { + name "Centaur chip MBIFIR MASK"; + scomaddr 0x02010803; + capture group default; + capture group FirRegs; + }; + + register MBIFIR_ACT0 + { + name "Centaur chip MBIFIR ACT0"; + scomaddr 0x02010806; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("MBIFIR"); + }; + + register MBIFIR_ACT1 + { + name "Centaur chip MBIFIR ACT1"; + scomaddr 0x02010807; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("MBIFIR"); + }; + + ############################################################################ + # Centaur chip MBSFIR + ############################################################################ + + register MBSFIR + { + name "Centaur chip MBSFIR"; + scomaddr 0x02011400; + reset (&, 0x02011401); + mask (|, 0x02011405); + capture group default; + capture group FirRegs; + }; + + register MBSFIR_MASK + { + name "Centaur chip MBSFIR MASK"; + scomaddr 0x02011403; + capture group default; + capture group FirRegs; + }; + + register MBSFIR_ACT0 + { + name "Centaur chip MBSFIR ACT0"; + scomaddr 0x02011406; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("MBSFIR"); + }; + + register MBSFIR_ACT1 + { + name "Centaur chip MBSFIR ACT1"; + scomaddr 0x02011407; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("MBSFIR"); + }; + + ############################################################################ + # Centaur chip MBSSECUREFIR + ############################################################################ + + # This register is hardwired to channel failure (checkstop) and we cannot + # mask or change the state of the action registers. + register MBSSECUREFIR + { + name "Centaur chip MBSSECUREFIR"; + scomaddr 0x0201141e; + reset (&, 0x0201141f); + capture group default; + capture group FirRegs; + }; + + ############################################################################ + # Centaur chip MBSECCFIR 0 + ############################################################################ + + register MBSECCFIR_0 + { + name "Centaur chip MBSECCFIR 0"; + scomaddr 0x02011440; + reset (&, 0x02011441); + mask (|, 0x02011445); + capture group default; + capture group FirRegs; + capture group MaintCmdRegs_mba0; + }; + + register MBSECCFIR_0_MASK + { + name "Centaur chip MBSECCFIR 0 MASK"; + scomaddr 0x02011443; + capture group default; + capture group FirRegs; + capture group MaintCmdRegs_mba0; + }; + + register MBSECCFIR_0_ACT0 + { + name "Centaur chip MBSECCFIR 0 ACT0"; + scomaddr 0x02011446; + capture type secondary; + capture group default; + capture group FirRegs; + capture group MaintCmdRegs_mba0; + capture req nonzero("MBSECCFIR_0"); + }; + + register MBSECCFIR_0_ACT1 + { + name "Centaur chip MBSECCFIR 0 ACT1"; + scomaddr 0x02011447; + capture type secondary; + capture group default; + capture group FirRegs; + capture group MaintCmdRegs_mba0; + capture req nonzero("MBSECCFIR_0"); + }; + + ############################################################################ + # Centaur chip MBSECCFIR 1 + ############################################################################ + + register MBSECCFIR_1 + { + name "Centaur chip MBSECCFIR 1"; + scomaddr 0x02011480; + reset (&, 0x02011481); + mask (|, 0x02011485); + capture group default; + capture group FirRegs; + capture group MaintCmdRegs_mba1; + }; + + register MBSECCFIR_1_MASK + { + name "Centaur chip MBSECCFIR 1 MASK"; + scomaddr 0x02011483; + capture group default; + capture group FirRegs; + capture group MaintCmdRegs_mba1; + }; + + register MBSECCFIR_1_ACT0 + { + name "Centaur chip MBSECCFIR 1 ACT0"; + scomaddr 0x02011486; + capture type secondary; + capture group default; + capture group FirRegs; + capture group MaintCmdRegs_mba1; + capture req nonzero("MBSECCFIR_1"); + }; + + register MBSECCFIR_1_ACT1 + { + name "Centaur chip MBSECCFIR 1 ACT1"; + scomaddr 0x02011487; + capture type secondary; + capture group default; + capture group FirRegs; + capture group MaintCmdRegs_mba1; + capture req nonzero("MBSECCFIR_1"); + }; + + ############################################################################ + # Centaur chip SCACFIR + ############################################################################ + + register SCACFIR + { + name "Centaur chip SCACFIR"; + scomaddr 0x020115c0; + reset (&, 0x020115c1); + mask (|, 0x020115c5); + capture group default; + capture group FirRegs; + }; + + register SCACFIR_MASK + { + name "Centaur chip SCACFIR MASK"; + scomaddr 0x020115c3; + capture group default; + capture group FirRegs; + }; + + register SCACFIR_ACT0 + { + name "Centaur chip SCACFIR ACT0"; + scomaddr 0x020115c6; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("SCACFIR"); + }; + + register SCACFIR_ACT1 + { + name "Centaur chip SCACFIR ACT1"; + scomaddr 0x020115c7; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("SCACFIR"); + }; + + ############################################################################ + # Centaur chip MCBISTFIR 0 + ############################################################################ + + register MCBISTFIR_0 + { + name "Centaur chip MCBISTFIR 0"; + scomaddr 0x02011600; + reset (&, 0x02011601); + mask (|, 0x02011605); + capture group default; + capture group FirRegs; + }; + + register MCBISTFIR_0_MASK + { + name "Centaur chip MCBISTFIR 0 MASK"; + scomaddr 0x02011603; + capture group default; + capture group FirRegs; + }; + + register MCBISTFIR_0_ACT0 + { + name "Centaur chip MCBISTFIR 0 ACT0"; + scomaddr 0x02011606; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("MCBISTFIR_0"); + }; + + register MCBISTFIR_0_ACT1 + { + name "Centaur chip MCBISTFIR 0 ACT1"; + scomaddr 0x02011607; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("MCBISTFIR_0"); + }; + + ############################################################################ + # Centaur chip MCBISTFIR 1 + ############################################################################ + + register MCBISTFIR_1 + { + name "Centaur chip MCBISTFIR 1"; + scomaddr 0x02011700; + reset (&, 0x02011701); + mask (|, 0x02011705); + capture group default; + capture group FirRegs; + }; + + register MCBISTFIR_1_MASK + { + name "Centaur chip MCBISTFIR 1 MASK"; + scomaddr 0x02011703; + capture group default; + capture group FirRegs; + }; + + register MCBISTFIR_1_ACT0 + { + name "Centaur chip MCBISTFIR 1 ACT0"; + scomaddr 0x02011706; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("MCBISTFIR_1"); + }; + + register MCBISTFIR_1_ACT1 + { + name "Centaur chip MCBISTFIR 1 ACT1"; + scomaddr 0x02011707; + capture type secondary; + capture group default; + capture group FirRegs; + capture req nonzero("MCBISTFIR_1"); + }; + + ############################################################################ + # MEM Chiplet FIR + ############################################################################ + + register MEM_CHIPLET_CS_FIR + { + name "MEM Chiplet Checkstop FIR"; + scomaddr 0x03040000; + capture group FirRegs; + capture group MemChipletRegs; + }; + + register MEM_CHIPLET_RE_FIR + { + name "MEM Chiplet Recoverable FIR"; + scomaddr 0x03040001; + capture group FirRegs; + capture group MemChipletRegs; + }; + + register MEM_CHIPLET_FIR_MASK + { + name "MEM Chiplet FIR MASK"; + scomaddr 0x03040002; + capture group FirRegs; + capture group MemChipletRegs; + }; + + ############################################################################ + # MEM Chiplet Special Attention FIR + ############################################################################ + + register MEM_CHIPLET_SPA_FIR + { + name "MEM Chiplet Special Attention FIR"; + scomaddr 0x03040004; + capture group FirRegs; + capture group MemChipletRegs; + }; + + register MEM_CHIPLET_SPA_FIR_MASK + { + name "MEM Chiplet Special Attention FIR MASK"; + scomaddr 0x03040007; + capture group FirRegs; + capture group MemChipletRegs; + }; + + ############################################################################ + # Centaur chip MEM_LFIR + ############################################################################ + + register MEM_LFIR + { + name "Centaur chip MEM_LFIR"; + scomaddr 0x0304000A; + reset (&, 0x0304000B); + mask (|, 0x0304000F); + capture group FirRegs; + capture group MemChipletRegs; + }; + + register MEM_LFIR_MASK + { + name "Centaur chip MEM_LFIR MASK"; + scomaddr 0x0304000D; + capture group FirRegs; + capture group MemChipletRegs; + }; + + register MEM_LFIR_ACT0 + { + name "Centaur chip MEM_LFIR ACT0"; + scomaddr 0x03040010; + capture type secondary; + capture group FirRegs; + capture group MemChipletRegs; + capture req nonzero("MEM_LFIR"); + }; + + register MEM_LFIR_ACT1 + { + name "Centaur chip MEM_LFIR ACT1"; + scomaddr 0x03040011; + capture type secondary; + capture group FirRegs; + capture group MemChipletRegs; + capture req nonzero("MEM_LFIR"); + }; + +# Import all of the chiplet registers +.include "Membuf_regs_TP.rule" +.include "Membuf_regs_NEST.rule" +.include "Membuf_regs_MEM.rule" + +}; + + ############################################################################## + # # + # #### # # + # # # # # # ##### ### # # # ## ##### ### ### # # ### # + # # # # # # # # # # # # # # # # # ## # # # + # #### # # # #### ### # ####### # # # # # # # # ### # + # # # # # # # # # # # # # # # # # # ## # # + # # # ### #### ##### ### # # # ## # ### ### # # ### # + # # + ############################################################################## + +################################################################################ +# Global Attention FIR +################################################################################ + +rule rGLOBAL_FIR +{ + UNIT_CS: + GLOBAL_CS_FIR; + RECOVERABLE: + GLOBAL_RE_FIR; +}; + +group gGLOBAL_FIR attntype UNIT_CS, RECOVERABLE filter singlebit +{ + /** GLOBAL_FIR[1] + * Attention from TP chiplet + */ + (rGLOBAL_FIR, bit(1)) ? analyze(gTP_CHIPLET_FIR); + + /** GLOBAL_FIR[2] + * Attention from NEST chiplet + */ + (rGLOBAL_FIR, bit(2)) ? analyze(gNEST_CHIPLET_FIR); + + /** GLOBAL_FIR[3] + * Attention from MEM chiplet + */ + (rGLOBAL_FIR, bit(3)) ? analyze(gMEM_CHIPLET_FIR); + +}; + +################################################################################ +# Global Special Attention FIR +################################################################################ + +rule rGLOBAL_SPA_FIR +{ + HOST_ATTN: + GLOBAL_SPA_FIR; +}; + +group gGLOBAL_SPA_FIR attntype HOST_ATTN filter singlebit +{ + /** GLOBAL_SPA_FIR[3] + * Attention from MEM chiplet + */ + (rGLOBAL_SPA_FIR, bit(3)) ? analyze(gMEM_CHIPLET_SPA_FIR); + +}; + +################################################################################ +# TP Chiplet FIR +################################################################################ + +rule rTP_CHIPLET_FIR +{ + UNIT_CS: + TP_CHIPLET_CS_FIR & ~TP_CHIPLET_FIR_MASK & `1fffffffffffffff`; + RECOVERABLE: + (TP_CHIPLET_RE_FIR >> 2) & ~TP_CHIPLET_FIR_MASK & `1fffffffffffffff`; +}; + +group gTP_CHIPLET_FIR filter singlebit +{ + /** TP_CHIPLET_FIR[3] + * Attention from TP_LFIR + */ + (rTP_CHIPLET_FIR, bit(3)) ? analyze(gTP_LFIR); + +}; + +################################################################################ +# Centaur chip TP_LFIR +################################################################################ + +rule rTP_LFIR +{ + 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; +}; + +group gTP_LFIR filter singlebit, cs_root_cause( 19, 20 ) +{ + /** TP_LFIR[0] + * CFIR internal parity error + */ + (rTP_LFIR, bit(0)) ? threshold_and_mask_self; + + /** TP_LFIR[1] + * GPIO (PCB error) + */ + (rTP_LFIR, bit(1)) ? defaultMaskedError; + + /** TP_LFIR[2] + * CC (PCB error) + */ + (rTP_LFIR, bit(2)) ? defaultMaskedError; + + /** TP_LFIR[3] + * CC (OPCG, parity, scan collision, ...) + */ + (rTP_LFIR, bit(3)) ? defaultMaskedError; + + /** TP_LFIR[4] + * PSC (PCB error) + */ + (rTP_LFIR, bit(4)) ? defaultMaskedError; + + /** TP_LFIR[5] + * PSC (parity error) + */ + (rTP_LFIR, bit(5)) ? defaultMaskedError; + + /** TP_LFIR[6] + * Thermal (parity error) + */ + (rTP_LFIR, bit(6)) ? defaultMaskedError; + + /** TP_LFIR[7] + * Thermal (PCB error) + */ + (rTP_LFIR, bit(7)) ? defaultMaskedError; + + /** TP_LFIR[8] + * Thermal (critical trip error) + */ + (rTP_LFIR, bit(8)) ? defaultMaskedError; + + /** TP_LFIR[9] + * Thermal (fatal trip error) + */ + (rTP_LFIR, bit(9)) ? defaultMaskedError; + + /** TP_LFIR[10] + * Thermal (voltage trip error) + */ + (rTP_LFIR, bit(10)) ? defaultMaskedError; + + /** TP_LFIR[11] + * Trace Array ( error) + */ + (rTP_LFIR, bit(11)) ? defaultMaskedError; + + /** TP_LFIR[12] + * Trace Array ( error) + */ + (rTP_LFIR, bit(12)) ? defaultMaskedError; + + /** TP_LFIR[13:14] + * ITR + */ + (rTP_LFIR, bit(13|14)) ? threshold_and_mask_self; + + /** TP_LFIR[15] + * ITR (itr_tc_pcbsl_slave_fir_err) + */ + (rTP_LFIR, bit(15)) ? defaultMaskedError; + + /** TP_LFIR[16:18] + * PIB + */ + (rTP_LFIR, bit(16|17|18)) ? defaultMaskedError; + + /** TP_LFIR[19] + * NEST PLL unlock + */ + (rTP_LFIR, bit(19)) ? pll_unlock_UERE; + + /** TP_LFIR[20] + * MEM PLL unlock + */ + (rTP_LFIR, bit(20)) ? pll_unlock_UERE; + + /** TP_LFIR[21:39] + * Reserved + */ + (rTP_LFIR, bit(21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39)) ? defaultMaskedError; + + /** TP_LFIR[40] + * malfunction alert (local xstop in another chiplet) + */ + (rTP_LFIR, bit(40)) ? defaultMaskedError; + +}; + +################################################################################ +# NEST Chiplet FIR +################################################################################ + +rule rNEST_CHIPLET_FIR +{ + UNIT_CS: + NEST_CHIPLET_CS_FIR & ~NEST_CHIPLET_FIR_MASK & `1fffffffffffffff`; + RECOVERABLE: + (NEST_CHIPLET_RE_FIR >> 2) & ~NEST_CHIPLET_FIR_MASK & `1fffffffffffffff`; +}; + +group gNEST_CHIPLET_FIR filter priority( 3, 6, 5, 7 ) +{ + # NOTE: The MBIFIR must be analyzed before the DMIFIR and both the MBIFIR + # and DMIFIR must be analyzed before the MBSFIR. All other FIRs will be + # analyzed in order. + + /** NEST_CHIPLET_FIR[3] + * Attention from NEST_LFIR + */ + (rNEST_CHIPLET_FIR, bit(3)) ? analyze(gNEST_LFIR); + + /** NEST_CHIPLET_FIR[5] + * Attention from DMIFIR + */ + (rNEST_CHIPLET_FIR, bit(5)) ? analyze(gDMIFIR); + + /** NEST_CHIPLET_FIR[6] + * Attention from MBIFIR + */ + (rNEST_CHIPLET_FIR, bit(6)) ? analyze(gMBIFIR); + + /** NEST_CHIPLET_FIR[7] + * Attention from MBSFIR + */ + (rNEST_CHIPLET_FIR, bit(7)) ? analyze(gMBSFIR); + + /** NEST_CHIPLET_FIR[8] + * Attention from MCBISTFIR + */ + (rNEST_CHIPLET_FIR, bit(8)) ? analyze(gMCBISTFIR_0); + + /** NEST_CHIPLET_FIR[9] + * Attention from MCBISTFIR + */ + (rNEST_CHIPLET_FIR, bit(9)) ? analyze(gMCBISTFIR_1); + + /** NEST_CHIPLET_FIR[10] + * Attention from MBSECCFIR + */ + (rNEST_CHIPLET_FIR, bit(10)) ? analyze(gMBSECCFIR_0); + + /** NEST_CHIPLET_FIR[11] + * Attention from MBSECCFIR + */ + (rNEST_CHIPLET_FIR, bit(11)) ? analyze(gMBSECCFIR_1); + + /** NEST_CHIPLET_FIR[13] + * Attention from SCACFIR + */ + (rNEST_CHIPLET_FIR, bit(13)) ? analyze(gSCACFIR); + + /** NEST_CHIPLET_FIR[14] + * Attention from MBSSECUREFIR + */ + (rNEST_CHIPLET_FIR, bit(14)) ? analyze(gMBSSECUREFIR); + +}; + +################################################################################ +# Centaur chip NEST_LFIR +################################################################################ + +rule rNEST_LFIR +{ + 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; +}; + +group gNEST_LFIR filter singlebit, cs_root_cause +{ + /** NEST_LFIR[0] + * CFIR internal parity error + */ + (rNEST_LFIR, bit(0)) ? threshold_and_mask_self; + + /** NEST_LFIR[1] + * GPIO (PCB error) + */ + (rNEST_LFIR, bit(1)) ? defaultMaskedError; + + /** NEST_LFIR[2] + * CC (PCB error) + */ + (rNEST_LFIR, bit(2)) ? defaultMaskedError; + + /** NEST_LFIR[3] + * CC (OPCG, parity, scan collision, ...) + */ + (rNEST_LFIR, bit(3)) ? defaultMaskedError; + + /** NEST_LFIR[4] + * PSC (PCB error) + */ + (rNEST_LFIR, bit(4)) ? defaultMaskedError; + + /** NEST_LFIR[5] + * PSC (parity error) + */ + (rNEST_LFIR, bit(5)) ? defaultMaskedError; + + /** NEST_LFIR[6] + * Thermal (parity error) + */ + (rNEST_LFIR, bit(6)) ? defaultMaskedError; + + /** NEST_LFIR[7] + * Thermal (PCB error) + */ + (rNEST_LFIR, bit(7)) ? defaultMaskedError; + + /** NEST_LFIR[8] + * Thermal (critical trip error) + */ + (rNEST_LFIR, bit(8)) ? defaultMaskedError; + + /** NEST_LFIR[9] + * Thermal (fatal trip error) + */ + (rNEST_LFIR, bit(9)) ? defaultMaskedError; + + /** NEST_LFIR[10] + * Thermal (voltage trip error) + */ + (rNEST_LFIR, bit(10)) ? defaultMaskedError; + + /** NEST_LFIR[11] + * Trace Array ( error) + */ + (rNEST_LFIR, bit(11)) ? defaultMaskedError; + + /** NEST_LFIR[12] + * Trace Array ( error) + */ + (rNEST_LFIR, bit(12)) ? defaultMaskedError; + + /** NEST_LFIR[13:39] + * Reserved + */ + (rNEST_LFIR, bit(13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39)) ? defaultMaskedError; + + /** NEST_LFIR[40] + * malfunction alert (local xstop in another chiplet) + */ + (rNEST_LFIR, bit(40)) ? defaultMaskedError; + +}; + +################################################################################ +# Centaur chip DMIFIR +################################################################################ + +rule rDMIFIR +{ + UNIT_CS: + DMIFIR & ~DMIFIR_MASK & ~DMIFIR_ACT0 & ~DMIFIR_ACT1; + RECOVERABLE: + DMIFIR & ~DMIFIR_MASK & ~DMIFIR_ACT0 & DMIFIR_ACT1; +}; + +group gDMIFIR filter priority( 10, 2, 11, 12, 9 ), + cs_root_cause( 10 ) +{ + /** DMIFIR[0] + * RX invalid state or parity error + */ + (rDMIFIR, bit(0)) ? defaultMaskedError; + + /** DMIFIR[1] + * TX invalid state or parity error + */ + (rDMIFIR, bit(1)) ? defaultMaskedError; + + /** DMIFIR[2] + * GCR hang error + */ + (rDMIFIR, bit(2)) ? self_th_1; + + /** DMIFIR[3:7] + * Reserved + */ + (rDMIFIR, bit(3|4|5|6|7)) ? defaultMaskedError; + + /** DMIFIR[8] + * Training error + */ + (rDMIFIR, bit(8)) ? defaultMaskedError; + + /** DMIFIR[9] + * Spare lane deployed + */ + (rDMIFIR, bit(9)) ? spareDeployed_dmibus; + + /** DMIFIR[10] + * Max spares exceeded + */ + (rDMIFIR, bit(10)) ? maxSparesExceeded_dmibus_UERE; + + /** DMIFIR[11] + * Recal or dynamic repair error + */ + (rDMIFIR, bit(11)) ? calloutBusInterface_dmibus_th1; + + /** DMIFIR[12] + * Too many bus errors + */ + (rDMIFIR, bit(12)) ? tooManyBusErrors_dmibus; + + /** DMIFIR[13:15] + * Reserved + */ + (rDMIFIR, bit(13|14|15)) ? defaultMaskedError; + + /** DMIFIR[16:23] + * Bus 1 - unused + */ + (rDMIFIR, bit(16|17|18|19|20|21|22|23)) ? defaultMaskedError; + + /** DMIFIR[24:31] + * Bus 2 - unused + */ + (rDMIFIR, bit(24|25|26|27|28|29|30|31)) ? defaultMaskedError; + + /** DMIFIR[32:39] + * Bus 3 - unused + */ + (rDMIFIR, bit(32|33|34|35|36|37|38|39)) ? defaultMaskedError; + + /** DMIFIR[40:47] + * Bus 4 - unused + */ + (rDMIFIR, bit(40|41|42|43|44|45|46|47)) ? defaultMaskedError; + + /** DMIFIR[48] + * scom error + */ + (rDMIFIR, bit(48)) ? threshold_and_mask_self; + + /** DMIFIR[49] + * scom error + */ + (rDMIFIR, bit(49)) ? threshold_and_mask_self; + +}; + +################################################################################ +# Centaur chip MBIFIR +################################################################################ + +rule rMBIFIR +{ + UNIT_CS: + MBIFIR & ~MBIFIR_MASK & ~MBIFIR_ACT0 & ~MBIFIR_ACT1; + RECOVERABLE: + MBIFIR & ~MBIFIR_MASK & ~MBIFIR_ACT0 & MBIFIR_ACT1; +}; + +group gMBIFIR filter priority( 8, 9, 19, 20, 6, 0, 16, 5, 10 ), + cs_root_cause( 0, 6, 8, 9, 19, 20 ) +{ + /** MBIFIR[0] + * Replay Timeout + */ + (rMBIFIR, bit(0)) ? replayTimeOutError; + + /** MBIFIR[1] + * Channel Fail + */ + (rMBIFIR, bit(1)) ? defaultMaskedError; + + /** MBIFIR[2] + * CRC Error + */ + (rMBIFIR, bit(2)) ? defaultMaskedError; + + /** MBIFIR[3] + * Frame NoAck + */ + (rMBIFIR, bit(3)) ? defaultMaskedError; + + /** MBIFIR[4] + * Seqid Out of Order + */ + (rMBIFIR, bit(4)) ? defaultMaskedError; + + /** MBIFIR[5] + * Replay Buffer ECC CE + */ + (rMBIFIR, bit(5)) ? self_th_5perHour; + + /** MBIFIR[6] + * Replay Buffer ECC UE + */ + (rMBIFIR, bit(6)) ? self_th_1_UERE; + + /** MBIFIR[7] + * MBI State Machine Timeout + */ + (rMBIFIR, bit(7)) ? defaultMaskedError; + + /** MBIFIR[8] + * MBI Internal Control Parity Error + */ + (rMBIFIR, bit(8)) ? self_th_1_UERE; + + /** MBIFIR[9] + * MBI Data Flow Parity Error + */ + (rMBIFIR, bit(9)) ? self_th_1_UERE; + + /** MBIFIR[10] + * CRC Performance Degradation + */ + (rMBIFIR, bit(10)) ? analyzeSpareBitAndThr; + + /** MBIFIR[11] + * Global Host MC Checkstop + */ + (rMBIFIR, bit(11)) ? defaultMaskedError; + + /** MBIFIR[12] + * Host MC Tracestop + */ + (rMBIFIR, bit(12)) ? defaultMaskedError; + + /** MBIFIR[13] + * Channel Interlock Fail + */ + (rMBIFIR, bit(13)) ? defaultMaskedError; + + /** MBIFIR[14] + * Host MC Local Checkstop + */ + (rMBIFIR, bit(14)) ? defaultMaskedError; + + /** MBIFIR[15] + * FRTL Counter Overflow + */ + (rMBIFIR, bit(15)) ? defaultMaskedError; + + /** MBIFIR[16] + * SCOM Register parity error + */ + (rMBIFIR, bit(16)) ? self_th_1; + + /** MBIFIR[17] + * IO Fault + */ + (rMBIFIR, bit(17)) ? defaultMaskedError; + + /** MBIFIR[18] + * Multiple Replay + */ + (rMBIFIR, bit(18)) ? defaultMaskedError; + + /** MBIFIR[19] + * MBICFG parity error + */ + (rMBIFIR, bit(19)) ? self_th_1_UERE; + + /** MBIFIR[20] + * Replay Buffer Overrun + */ + (rMBIFIR, bit(20)) ? calloutBusInterface_dmibus_th1_UERE; + + /** MBIFIR[21] + * WAT error + */ + (rMBIFIR, bit(21)) ? defaultMaskedError; + + /** MBIFIR[22:24] + * Reserved + */ + (rMBIFIR, bit(22|23|24)) ? defaultMaskedError; + + /** MBIFIR[25] + * internal scom error + */ + (rMBIFIR, bit(25)) ? threshold_and_mask_self; + + /** MBIFIR[26] + * internal scom error clone + */ + (rMBIFIR, bit(26)) ? threshold_and_mask_self; + +}; + +################################################################################ +# Centaur chip MBSFIR +################################################################################ + +rule rMBSFIR +{ + UNIT_CS: + MBSFIR & ~MBSFIR_MASK & ~MBSFIR_ACT0 & ~MBSFIR_ACT1; + RECOVERABLE: + MBSFIR & ~MBSFIR_MASK & ~MBSFIR_ACT0 & MBSFIR_ACT1; +}; + +group gMBSFIR filter singlebit, cs_root_cause( 0, 1, 2, 4, 6, 8, 10, 13, 16, 18, 20, 27, 30 ) +{ + /** MBSFIR[0] + * HOST_PROTOCOL_ERROR + */ + (rMBSFIR, bit(0)) ? calloutBusInterface_dmibus_th1_UERE; + + /** MBSFIR[1] + * INT_PROTOCOL_ERROR + */ + (rMBSFIR, bit(1)) ? self_th_1_UERE; + + /** MBSFIR[2] + * INVALID_ADDRESS_ERROR + */ + (rMBSFIR, bit(2)) ? calloutBusInterface_dmibus_th1; + + /** MBSFIR[3] + * EXTERNAL_TIMEOUT + */ + (rMBSFIR, bit(3)) ? level2_th_1; + + /** MBSFIR[4] + * INTERNAL_TIMEOUT + */ + (rMBSFIR, bit(4)) ? internalTimeout; + + /** MBSFIR[3,4] + * EXTERNAL_TIMEOUT + */ + # NOTE: The signature will match the external timeout, but we will still + # call the internalTimeout plugin because there is extra processing + # done to handle parity errors and such. + (rMBSFIR, bit(3,4)) ? internalTimeout; + + /** MBSFIR[5] + * INT_BUFFER_CE + */ + (rMBSFIR, bit(5)) ? self_th_32perDay; + + /** MBSFIR[6] + * INT_BUFFER_UE + */ + (rMBSFIR, bit(6)) ? self_th_1_UERE; + + /** MBSFIR[7] + * INT_BUFFER_SUE + */ + (rMBSFIR, bit(7)) ? defaultMaskedError; + + /** MBSFIR[8] + * INT_PARITY_ERROR + */ + (rMBSFIR, bit(8)) ? self_th_1_UERE; + + /** MBSFIR[9] + * CACHE_SRW_CE + */ + (rMBSFIR, bit(9)) ? l4_cache_srw_ce; + + /** MBSFIR[10] + * CACHE_SRW_UE + */ + (rMBSFIR, bit(10)) ? l4_cache_srw_ue_UERE; + + /** MBSFIR[11] + * CACHE_SRW_SUE + */ + (rMBSFIR, bit(11)) ? defaultMaskedError; + + /** MBSFIR[12] + * CACHE_CO_CE + */ + (rMBSFIR, bit(12)) ? l4_cache_co_ce; + + /** MBSFIR[13] + * CACHE_CO_UE + */ + (rMBSFIR, bit(13)) ? l4_cache_co_ue_UERE; + + /** MBSFIR[14] + * CACHE_CO_SUE + */ + (rMBSFIR, bit(14)) ? defaultMaskedError; + + /** MBSFIR[15] + * DIR_CE + */ + (rMBSFIR, bit(15)) ? l4_th_32perDay; + + /** MBSFIR[16] + * DIR_UE + */ + (rMBSFIR, bit(16)) ? l4_th_1_UERE; + + /** MBSFIR[17] + * DIR_MEMBER_DELETED + */ + (rMBSFIR, bit(17)) ? defaultMaskedError; + + /** MBSFIR[18] + * DIR_ALL_MEMBERS_DELETED + */ + (rMBSFIR, bit(18)) ? l4_th_1_UERE; + + /** MBSFIR[19] + * LRU_ERROR + */ + (rMBSFIR, bit(19)) ? l4_th_32perDay; + + /** MBSFIR[20] + * EDRAM ERROR + */ + (rMBSFIR, bit(20)) ? l4_th_1_UERE; + + /** MBSFIR[21] + * EMERGENCY_THROTTLE_SET + */ + (rMBSFIR, bit(21)) ? defaultMaskedError; + + /** MBSFIR[22] + * HOST_INBAND_READ_ERROR + */ + (rMBSFIR, bit(22)) ? defaultMaskedError; + + /** MBSFIR[23] + * HOST_INBAND_WRITE_ERROR + */ + (rMBSFIR, bit(23)) ? defaultMaskedError; + + /** MBSFIR[24] + * OCC_INBAND_READ_ERROR + */ + (rMBSFIR, bit(24)) ? defaultMaskedError; + + /** MBSFIR[25] + * OCC_INBAND_WRITE_ERROR + */ + (rMBSFIR, bit(25)) ? defaultMaskedError; + + /** MBSFIR[26] + * SRB_BUFFER_CE + */ + (rMBSFIR, bit(26)) ? threshold_and_mask_self; + + /** MBSFIR[27] + * SRB_BUFFER_UE + */ + (rMBSFIR, bit(27)) ? self_th_1_UERE; + + /** MBSFIR[28] + * SRB_BUFFER_SUE + */ + (rMBSFIR, bit(28)) ? defaultMaskedError; + + /** MBSFIR[29] + * DIR_PURGE_CE + */ + (rMBSFIR, bit(29)) ? defaultMaskedError; + + /** MBSFIR[30] + * PROXIMAL_CE_UE + */ + (rMBSFIR, bit(30)) ? l4_th_1_UERE; + + /** MBSFIR[31:32] + * Spare + */ + (rMBSFIR, bit(31|32)) ? defaultMaskedError; + + /** MBSFIR[33] + * SCOM FIR error + */ + (rMBSFIR, bit(33)) ? threshold_and_mask_self; + + /** MBSFIR[34] + * SCOM FIR error clone + */ + (rMBSFIR, bit(34)) ? threshold_and_mask_self; + +}; + +################################################################################ +# Centaur chip MBSSECUREFIR +################################################################################ + +rule rMBSSECUREFIR +{ + UNIT_CS: + MBSSECUREFIR; +}; + +group gMBSSECUREFIR filter singlebit, cs_root_cause( 0, 1, 2, 3, 4, 5 ) +{ + /** MBSSECUREFIR[0] + * Invalid MBSXCR access + */ + (rMBSSECUREFIR, bit(0)) ? level2_th_1_UERE; + + /** MBSSECUREFIR[1] + * Invalid MBSXCR01 access + */ + (rMBSSECUREFIR, bit(1)) ? level2_th_1_UERE; + + /** MBSSECUREFIR[2] + * Invalid MBSXCR23 access + */ + (rMBSSECUREFIR, bit(2)) ? level2_th_1_UERE; + + /** MBSSECUREFIR[3] + * Invalid MBSXCRMS access + */ + (rMBSSECUREFIR, bit(3)) ? level2_th_1_UERE; + + /** MBSSECUREFIR[4] + * spare + */ + (rMBSSECUREFIR, bit(4)) ? level2_th_1_UERE; + + /** MBSSECUREFIR[5] + * Invalid SIR mask or action reg access + */ + (rMBSSECUREFIR, bit(5)) ? level2_th_1_UERE; + +}; + +################################################################################ +# Centaur chip MBSECCFIR 0 +################################################################################ + +rule rMBSECCFIR_0 +{ + UNIT_CS: + MBSECCFIR_0 & ~MBSECCFIR_0_MASK & ~MBSECCFIR_0_ACT0 & ~MBSECCFIR_0_ACT1; + RECOVERABLE: + MBSECCFIR_0 & ~MBSECCFIR_0_MASK & ~MBSECCFIR_0_ACT0 & MBSECCFIR_0_ACT1; +}; + +group gMBSECCFIR_0 filter priority ( 19, 41 ), + secondarybits(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, + 17,18,20,21,22,23,24,25,26,27,28,29,30,31, + 32,33,34,35,36,37,38,39,40,41,42,43,44,45, + 48,50,51) +{ + /** MBSECCFIR_0[0] + * Memory chip mark on rank 0 + */ + (rMBSECCFIR_0, bit(0)) ? analyzeFetchMpe0_0; + + /** MBSECCFIR_0[1] + * Memory chip mark on rank 1 + */ + (rMBSECCFIR_0, bit(1)) ? analyzeFetchMpe0_1; + + /** MBSECCFIR_0[2] + * Memory chip mark on rank 2 + */ + (rMBSECCFIR_0, bit(2)) ? analyzeFetchMpe0_2; + + /** MBSECCFIR_0[3] + * Memory chip mark on rank 3 + */ + (rMBSECCFIR_0, bit(3)) ? analyzeFetchMpe0_3; + + /** MBSECCFIR_0[4] + * Memory chip mark on rank 4 + */ + (rMBSECCFIR_0, bit(4)) ? analyzeFetchMpe0_4; + + /** MBSECCFIR_0[5] + * Memory chip mark on rank 5 + */ + (rMBSECCFIR_0, bit(5)) ? analyzeFetchMpe0_5; + + /** MBSECCFIR_0[6] + * Memory chip mark on rank 6 + */ + (rMBSECCFIR_0, bit(6)) ? analyzeFetchMpe0_6; + + /** MBSECCFIR_0[7] + * Memory chip mark on rank 7 + */ + (rMBSECCFIR_0, bit(7)) ? analyzeFetchMpe0_7; + + /** MBSECCFIR_0[8:15] + * Reserved + */ + (rMBSECCFIR_0, bit(8|9|10|11|12|13|14|15)) ? defaultMaskedError; + + /** MBSECCFIR_0[16] + * Memory NCE + */ + (rMBSECCFIR_0, bit(16)) ? analyzeFetchNce0; + + /** MBSECCFIR_0[17] + * Memory RCE + */ + (rMBSECCFIR_0, bit(17)) ? analyzeFetchRce0; + + /** MBSECCFIR_0[18] + * Memory SUE + */ + (rMBSECCFIR_0, bit(18)) ? defaultMaskedError; + + /** MBSECCFIR_0[19] + * Memory UE + */ + (rMBSECCFIR_0, bit(19)) ? mba0MemoryUe; + + /** MBSECCFIR_0[20:27] + * Maintenance chip mark + */ + (rMBSECCFIR_0, bit(20|21|22|23|24|25|26|27)) ? defaultMaskedError; + + /** MBSECCFIR_0[28:35] + * Reserved + */ + (rMBSECCFIR_0, bit(28|29|30|31|32|33|34|35)) ? defaultMaskedError; + + /** MBSECCFIR_0[36] + * Maintenance NCE + */ + (rMBSECCFIR_0, bit(36)) ? defaultMaskedError; + + /** MBSECCFIR_0[37] + * Maintenance SCE + */ + (rMBSECCFIR_0, bit(37)) ? defaultMaskedError; + + /** MBSECCFIR_0[38] + * Maintenance MCE + */ + (rMBSECCFIR_0, bit(38)) ? defaultMaskedError; + + /** MBSECCFIR_0[39] + * Maintenance RCE + */ + (rMBSECCFIR_0, bit(39)) ? defaultMaskedError; + + /** MBSECCFIR_0[40] + * Maintenance SUE + */ + (rMBSECCFIR_0, bit(40)) ? defaultMaskedError; + + /** MBSECCFIR_0[41] + * Maintenance UE + */ + (rMBSECCFIR_0, bit(41)) ? defaultMaskedError; + + /** MBSECCFIR_0[42] + * MPE during use maintenance mark mode + */ + (rMBSECCFIR_0, bit(42)) ? defaultMaskedError; + + /** MBSECCFIR_0[43] + * Prefetch Memory UE + */ + (rMBSECCFIR_0, bit(43)) ? analyzeFetchPreUe0; + + /** MBSECCFIR_0[44] + * Memory RCD parity error + */ + (rMBSECCFIR_0, bit(44)) ? defaultMaskedError; + + /** MBSECCFIR_0[45] + * Maintenance RCD parity error + */ + (rMBSECCFIR_0, bit(45)) ? defaultMaskedError; + + /** MBSECCFIR_0[46] + * Recoverable config reg PE + */ + (rMBSECCFIR_0, bit(46)) ? mba0_th_1; + + /** MBSECCFIR_0[47] + * Unrecoverable config reg PE + */ + (rMBSECCFIR_0, bit(47)) ? mba0_th_1_UERE; + + /** MBSECCFIR_0[48] + * Maskable config reg PE + */ + (rMBSECCFIR_0, bit(48)) ? threshold_and_mask_mba0; + + /** MBSECCFIR_0[49] + * ECC datapath parity error + */ + (rMBSECCFIR_0, bit(49)) ? mba0_th_1_UERE; + + /** MBSECCFIR_0[50] + * internal scom error + */ + (rMBSECCFIR_0, bit(50)) ? threshold_and_mask_mba0; + + /** MBSECCFIR_0[51] + * internal scom error clone + */ + (rMBSECCFIR_0, bit(51)) ? threshold_and_mask_mba0; + +}; + +################################################################################ +# Centaur chip MBSECCFIR 1 +################################################################################ + +rule rMBSECCFIR_1 +{ + UNIT_CS: + MBSECCFIR_1 & ~MBSECCFIR_1_MASK & ~MBSECCFIR_1_ACT0 & ~MBSECCFIR_1_ACT1; + RECOVERABLE: + MBSECCFIR_1 & ~MBSECCFIR_1_MASK & ~MBSECCFIR_1_ACT0 & MBSECCFIR_1_ACT1; +}; + +group gMBSECCFIR_1 filter priority ( 19, 41 ), + secondarybits(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, + 17,18,20,21,22,23,24,25,26,27,28,29,30,31, + 32,33,34,35,36,37,38,39,40,41,42,43,44,45, + 48,50,51) +{ + /** MBSECCFIR_1[0] + * Memory chip mark on rank 0 + */ + (rMBSECCFIR_1, bit(0)) ? analyzeFetchMpe1_0; + + /** MBSECCFIR_1[1] + * Memory chip mark on rank 1 + */ + (rMBSECCFIR_1, bit(1)) ? analyzeFetchMpe1_1; + + /** MBSECCFIR_1[2] + * Memory chip mark on rank 2 + */ + (rMBSECCFIR_1, bit(2)) ? analyzeFetchMpe1_2; + + /** MBSECCFIR_1[3] + * Memory chip mark on rank 3 + */ + (rMBSECCFIR_1, bit(3)) ? analyzeFetchMpe1_3; + + /** MBSECCFIR_1[4] + * Memory chip mark on rank 4 + */ + (rMBSECCFIR_1, bit(4)) ? analyzeFetchMpe1_4; + + /** MBSECCFIR_1[5] + * Memory chip mark on rank 5 + */ + (rMBSECCFIR_1, bit(5)) ? analyzeFetchMpe1_5; + + /** MBSECCFIR_1[6] + * Memory chip mark on rank 6 + */ + (rMBSECCFIR_1, bit(6)) ? analyzeFetchMpe1_6; + + /** MBSECCFIR_1[7] + * Memory chip mark on rank 7 + */ + (rMBSECCFIR_1, bit(7)) ? analyzeFetchMpe1_7; + + /** MBSECCFIR_1[8:15] + * Reserved + */ + (rMBSECCFIR_1, bit(8|9|10|11|12|13|14|15)) ? defaultMaskedError; + + /** MBSECCFIR_1[16] + * Memory NCE + */ + (rMBSECCFIR_1, bit(16)) ? analyzeFetchNce1; + + /** MBSECCFIR_1[17] + * Memory RCE + */ + (rMBSECCFIR_1, bit(17)) ? analyzeFetchRce1; + + /** MBSECCFIR_1[18] + * Memory SUE + */ + (rMBSECCFIR_1, bit(18)) ? defaultMaskedError; + + /** MBSECCFIR_1[19] + * Memory UE + */ + (rMBSECCFIR_1, bit(19)) ? mba1MemoryUe; + + /** MBSECCFIR_1[20:27] + * Maintenance chip mark + */ + (rMBSECCFIR_1, bit(20|21|22|23|24|25|26|27)) ? defaultMaskedError; + + /** MBSECCFIR_1[28:35] + * Reserved + */ + (rMBSECCFIR_1, bit(28|29|30|31|32|33|34|35)) ? defaultMaskedError; + + /** MBSECCFIR_1[36] + * Maintenance NCE + */ + (rMBSECCFIR_1, bit(36)) ? defaultMaskedError; + + /** MBSECCFIR_1[37] + * Maintenance SCE + */ + (rMBSECCFIR_1, bit(37)) ? defaultMaskedError; + + /** MBSECCFIR_1[38] + * Maintenance MCE + */ + (rMBSECCFIR_1, bit(38)) ? defaultMaskedError; + + /** MBSECCFIR_1[39] + * Maintenance RCE + */ + (rMBSECCFIR_1, bit(39)) ? defaultMaskedError; + + /** MBSECCFIR_1[40] + * Maintenance SUE + */ + (rMBSECCFIR_1, bit(40)) ? defaultMaskedError; + + /** MBSECCFIR_1[41] + * Maintenance UE + */ + (rMBSECCFIR_1, bit(41)) ? defaultMaskedError; + + /** MBSECCFIR_1[42] + * MPE during use maintenance mark mode + */ + (rMBSECCFIR_1, bit(42)) ? defaultMaskedError; + + /** MBSECCFIR_1[43] + * Prefetch Memory UE + */ + (rMBSECCFIR_1, bit(43)) ? analyzeFetchPreUe1; + + /** MBSECCFIR_1[44] + * Memory RCD parity error + */ + (rMBSECCFIR_1, bit(44)) ? defaultMaskedError; + + /** MBSECCFIR_1[45] + * Maintenance RCD parity error + */ + (rMBSECCFIR_1, bit(45)) ? defaultMaskedError; + + /** MBSECCFIR_1[46] + * Recoverable config reg PE + */ + (rMBSECCFIR_1, bit(46)) ? mba1_th_1; + + /** MBSECCFIR_1[47] + * Unrecoverable config reg PE + */ + (rMBSECCFIR_1, bit(47)) ? mba1_th_1_UERE; + + /** MBSECCFIR_1[48] + * Maskable config reg PE + */ + (rMBSECCFIR_1, bit(48)) ? threshold_and_mask_mba1; + + /** MBSECCFIR_1[49] + * ECC datapath parity error + */ + (rMBSECCFIR_1, bit(49)) ? mba1_th_1_UERE; + + /** MBSECCFIR_1[50] + * internal scom error + */ + (rMBSECCFIR_1, bit(50)) ? threshold_and_mask_mba1; + + /** MBSECCFIR_1[51] + * internal scom error clone + */ + (rMBSECCFIR_1, bit(51)) ? threshold_and_mask_mba1; + +}; + +################################################################################ +# Centaur chip SCACFIR +################################################################################ + +rule rSCACFIR +{ + UNIT_CS: + SCACFIR & ~SCACFIR_MASK & ~SCACFIR_ACT0 & ~SCACFIR_ACT1; + RECOVERABLE: + SCACFIR & ~SCACFIR_MASK & ~SCACFIR_ACT0 & SCACFIR_ACT1; +}; + +group gSCACFIR filter singlebit, cs_root_cause( 25, 26 ) +{ + /** SCACFIR[0] + * I2CM(0) Invalid Address + */ + (rSCACFIR, bit(0)) ? defaultMaskedError; + + /** SCACFIR[1] + * I2CM(1) Invalid Write + */ + (rSCACFIR, bit(1)) ? defaultMaskedError; + + /** SCACFIR[2] + * I2CM(2) Invalid Read + */ + (rSCACFIR, bit(2)) ? defaultMaskedError; + + /** SCACFIR[3] + * I2CM(3) Pib Address Parity Error + */ + (rSCACFIR, bit(3)) ? defaultMaskedError; + + /** SCACFIR[4] + * I2CM(4) Pib Parity Error + */ + (rSCACFIR, bit(4)) ? defaultMaskedError; + + /** SCACFIR[5] + * I2CM(5) LB parity error + */ + (rSCACFIR, bit(5)) ? defaultMaskedError; + + /** SCACFIR[6:9] + * spare + */ + (rSCACFIR, bit(6|7|8|9)) ? defaultMaskedError; + + /** SCACFIR[10] + * I2CM(45) : Invalid Command + */ + (rSCACFIR, bit(10)) ? defaultMaskedError; + + /** SCACFIR[11] + * I2CM(46) : Parity Error + */ + (rSCACFIR, bit(11)) ? defaultMaskedError; + + /** SCACFIR[12] + * I2CM(47): Backend Overrun Error + */ + (rSCACFIR, bit(12)) ? defaultMaskedError; + + /** SCACFIR[13] + * I2CM(48): Backend Access Error + */ + (rSCACFIR, bit(13)) ? defaultMaskedError; + + /** SCACFIR[14] + * I2CM(49): Arbitration Lost Error + */ + (rSCACFIR, bit(14)) ? defaultMaskedError; + + /** SCACFIR[15] + * I2CM(50): Nack Received Error + */ + (rSCACFIR, bit(15)) ? defaultMaskedError; + + /** SCACFIR[16] + * I2CM(53): Stop Error + */ + (rSCACFIR, bit(16)) ? defaultMaskedError; + + /** SCACFIR[17] + * Local PIB Response code 1 + */ + (rSCACFIR, bit(17)) ? defaultMaskedError; + + /** SCACFIR[18] + * Local PIB Response code 2 + */ + (rSCACFIR, bit(18)) ? defaultMaskedError; + + /** SCACFIR[19] + * Local PIB Response code 3 + */ + (rSCACFIR, bit(19)) ? defaultMaskedError; + + /** SCACFIR[20] + * Local PIB Response code 4 + */ + (rSCACFIR, bit(20)) ? defaultMaskedError; + + /** SCACFIR[21] + * Local PIB Response code 5 + */ + (rSCACFIR, bit(21)) ? defaultMaskedError; + + /** SCACFIR[22] + * Local PIB Response code 6 + */ + (rSCACFIR, bit(22)) ? defaultMaskedError; + + /** SCACFIR[23] + * Local PIB Response code 7 + */ + (rSCACFIR, bit(23)) ? defaultMaskedError; + + /** SCACFIR[24] + * Stall Threshold Error + */ + (rSCACFIR, bit(24)) ? defaultMaskedError; + + /** SCACFIR[25] + * Parity Error on Internal Register + */ + (rSCACFIR, bit(25)) ? self_th_1_UERE; + + /** SCACFIR[26] + * Parity Error on Pib Target Register + */ + (rSCACFIR, bit(26)) ? self_th_1_UERE; + + /** SCACFIR[27:31] + * Reserved + */ + (rSCACFIR, bit(27|28|29|30|31)) ? defaultMaskedError; + + /** SCACFIR[32] + * State Machine / Ctrl Logic Error + */ + (rSCACFIR, bit(32)) ? self_th_1; + + /** SCACFIR[33] + * Register access error + */ + (rSCACFIR, bit(33)) ? level2_th_1; + + /** SCACFIR[34] + * PIB error initiating RESET cmd to I2CM + */ + (rSCACFIR, bit(34)) ? defaultMaskedError; + + /** SCACFIR[35] + * Internal SCOM Error + */ + (rSCACFIR, bit(35)) ? threshold_and_mask_self; + + /** SCACFIR[36] + * Internal SCOM Error + */ + (rSCACFIR, bit(36)) ? threshold_and_mask_self; + +}; + +################################################################################ +# Centaur chip MCBISTFIR 0 +################################################################################ + +rule rMCBISTFIR_0 +{ + UNIT_CS: + MCBISTFIR_0 & ~MCBISTFIR_0_MASK & ~MCBISTFIR_0_ACT0 & ~MCBISTFIR_0_ACT1; + RECOVERABLE: + MCBISTFIR_0 & ~MCBISTFIR_0_MASK & ~MCBISTFIR_0_ACT0 & MCBISTFIR_0_ACT1; +}; + +group gMCBISTFIR_0 filter singlebit, cs_root_cause( 0, 1 ) +{ + /** MCBISTFIR_0[0] + * SCOM Parity Errors + */ + (rMCBISTFIR_0, bit(0)) ? mba0_th_1_UERE; + + /** MCBISTFIR_0[1] + * MBX parity errors + */ + (rMCBISTFIR_0, bit(1)) ? mba0_th_1_UERE; + + /** MCBISTFIR_0[2] + * DRAM event 0 error + */ + (rMCBISTFIR_0, bit(2)) ? defaultMaskedError; + + /** MCBISTFIR_0[3] + * DRAM event 1 error + */ + (rMCBISTFIR_0, bit(3)) ? defaultMaskedError; + + /** MCBISTFIR_0[4:14] + * Reserved + */ + (rMCBISTFIR_0, bit(4|5|6|7|8|9|10|11|12|13|14)) ? defaultMaskedError; + + /** MCBISTFIR_0[15] + * SCOM FIR error + */ + (rMCBISTFIR_0, bit(15)) ? threshold_and_mask_mba0; + + /** MCBISTFIR_0[16] + * SCOM FIR error clone + */ + (rMCBISTFIR_0, bit(16)) ? threshold_and_mask_mba0; + +}; + +################################################################################ +# Centaur chip MCBISTFIR 1 +################################################################################ + +rule rMCBISTFIR_1 +{ + UNIT_CS: + MCBISTFIR_1 & ~MCBISTFIR_1_MASK & ~MCBISTFIR_1_ACT0 & ~MCBISTFIR_1_ACT1; + RECOVERABLE: + MCBISTFIR_1 & ~MCBISTFIR_1_MASK & ~MCBISTFIR_1_ACT0 & MCBISTFIR_1_ACT1; +}; + +group gMCBISTFIR_1 filter singlebit, cs_root_cause( 0, 1 ) +{ + /** MCBISTFIR_1[0] + * SCOM Parity Errors + */ + (rMCBISTFIR_1, bit(0)) ? mba1_th_1_UERE; + + /** MCBISTFIR_1[1] + * MBX parity errors + */ + (rMCBISTFIR_1, bit(1)) ? mba1_th_1_UERE; + + /** MCBISTFIR_1[2] + * DRAM event 0 error + */ + (rMCBISTFIR_1, bit(2)) ? defaultMaskedError; + + /** MCBISTFIR_1[3] + * DRAM event 1 error + */ + (rMCBISTFIR_1, bit(3)) ? defaultMaskedError; + + /** MCBISTFIR_1[4:14] + * Reserved + */ + (rMCBISTFIR_1, bit(4|5|6|7|8|9|10|11|12|13|14)) ? defaultMaskedError; + + /** MCBISTFIR_1[15] + * SCOM FIR error + */ + (rMCBISTFIR_1, bit(15)) ? threshold_and_mask_mba1; + + /** MCBISTFIR_1[16] + * SCOM FIR error clone + */ + (rMCBISTFIR_1, bit(16)) ? threshold_and_mask_mba1; + +}; + +################################################################################ +# MEM Chiplet FIR +################################################################################ + +rule rMEM_CHIPLET_FIR +{ + UNIT_CS: + MEM_CHIPLET_CS_FIR & ~MEM_CHIPLET_FIR_MASK & `1fffffffffffffff`; + RECOVERABLE: + (MEM_CHIPLET_RE_FIR >> 2) & ~MEM_CHIPLET_FIR_MASK & `1fffffffffffffff`; +}; + +group gMEM_CHIPLET_FIR filter singlebit +{ + /** MEM_CHIPLET_FIR[3] + * Attention from MEM_LFIR + */ + (rMEM_CHIPLET_FIR, bit(3)) ? analyze(gMEM_LFIR); + + /** MEM_CHIPLET_FIR[5] + * Attention from MBACALFIR 0 + */ + (rMEM_CHIPLET_FIR, bit(5)) ? analyzeConnectedMBA0; + + /** MEM_CHIPLET_FIR[6] + * Attention from MBAFIR 0 + */ + (rMEM_CHIPLET_FIR, bit(6)) ? analyzeConnectedMBA0; + + /** MEM_CHIPLET_FIR[7] + * Attention from MBACALFIR 1 + */ + (rMEM_CHIPLET_FIR, bit(7)) ? analyzeConnectedMBA1; + + /** MEM_CHIPLET_FIR[8] + * Attention from MBAFIR 1 + */ + (rMEM_CHIPLET_FIR, bit(8)) ? analyzeConnectedMBA1; + + /** MEM_CHIPLET_FIR[9] + * Attention from MBADDRPHYFIR 0 + */ + (rMEM_CHIPLET_FIR, bit(9)) ? analyzeConnectedMBA0; + + /** MEM_CHIPLET_FIR[10] + * Attention from MBADDRPHYFIR 1 + */ + (rMEM_CHIPLET_FIR, bit(10)) ? analyzeConnectedMBA1; + + /** MEM_CHIPLET_FIR[12] + * Attention from MBASECUREFIR 0 + */ + (rMEM_CHIPLET_FIR, bit(12)) ? analyzeConnectedMBA0; + + /** MEM_CHIPLET_FIR[13] + * Attention from MBASECUREFIR 1 + */ + (rMEM_CHIPLET_FIR, bit(13)) ? analyzeConnectedMBA1; + +}; + +################################################################################ +# MEM Chiplet Special Attention FIR +################################################################################ + +rule rMEM_CHIPLET_SPA_FIR +{ + HOST_ATTN: + MEM_CHIPLET_SPA_FIR & ~MEM_CHIPLET_SPA_FIR_MASK; +}; + +group gMEM_CHIPLET_SPA_FIR filter singlebit +{ + /** MEM_CHIPLET_SPA_FIR[0] + * Attention from MBASPA 0 + */ + (rMEM_CHIPLET_SPA_FIR, bit(0)) ? analyzeConnectedMBA0; + + /** MEM_CHIPLET_SPA_FIR[1] + * Attention from MBASPA 1 + */ + (rMEM_CHIPLET_SPA_FIR, bit(1)) ? analyzeConnectedMBA1; + +}; + +################################################################################ +# Centaur chip MEM_LFIR +################################################################################ + +rule rMEM_LFIR +{ + 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; +}; + +group gMEM_LFIR filter singlebit, cs_root_cause +{ + /** MEM_LFIR[0] + * CFIR internal parity error + */ + (rMEM_LFIR, bit(0)) ? threshold_and_mask_self; + + /** MEM_LFIR[1] + * GPIO (PCB error) + */ + (rMEM_LFIR, bit(1)) ? defaultMaskedError; + + /** MEM_LFIR[2] + * CC (PCB error) + */ + (rMEM_LFIR, bit(2)) ? defaultMaskedError; + + /** MEM_LFIR[3] + * CC (OPCG, parity, scan collision, ...) + */ + (rMEM_LFIR, bit(3)) ? defaultMaskedError; + + /** MEM_LFIR[4] + * PSC (PCB error) + */ + (rMEM_LFIR, bit(4)) ? defaultMaskedError; + + /** MEM_LFIR[5] + * PSC (parity error) + */ + (rMEM_LFIR, bit(5)) ? defaultMaskedError; + + /** MEM_LFIR[6] + * Thermal (parity error) + */ + (rMEM_LFIR, bit(6)) ? defaultMaskedError; + + /** MEM_LFIR[7] + * Thermal (PCB error) + */ + (rMEM_LFIR, bit(7)) ? defaultMaskedError; + + /** MEM_LFIR[8] + * Thermal (critical trip error) + */ + (rMEM_LFIR, bit(8)) ? defaultMaskedError; + + /** MEM_LFIR[9] + * Thermal (fatal trip error) + */ + (rMEM_LFIR, bit(9)) ? defaultMaskedError; + + /** MEM_LFIR[10] + * Thermal (voltage trip error) + */ + (rMEM_LFIR, bit(10)) ? defaultMaskedError; + + /** MEM_LFIR[11] + * MBA01 Trace Array ( error) + */ + (rMEM_LFIR, bit(11)) ? defaultMaskedError; + + /** MEM_LFIR[12] + * MBA01 Trace Array ( error) + */ + (rMEM_LFIR, bit(12)) ? defaultMaskedError; + + /** MEM_LFIR[13] + * MBA23 Trace Array ( error) + */ + (rMEM_LFIR, bit(13)) ? defaultMaskedError; + + /** MEM_LFIR[14] + * MBA23 Trace Array ( error) + */ + (rMEM_LFIR, bit(14)) ? defaultMaskedError; + + /** MEM_LFIR[15:39] + * Reserved + */ + (rMEM_LFIR, bit(15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39)) ? defaultMaskedError; + + /** MEM_LFIR[40] + * malfunction alert (local xstop in another chiplet) + */ + (rMEM_LFIR, bit(40)) ? defaultMaskedError; -group gGlobalSpa attntype SPECIAL filter singlebit -{ - /** GLOBAL_SPA[3] - * Attention from MEM chiplet - */ - (GlobalSpa, bit(3)) ? analyze(gMemChipletSpa); }; # Import all of the chiplet rules and actions 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 deleted file mode 100755 index f069dc465..000000000 --- a/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_MEM.rule +++ /dev/null @@ -1,207 +0,0 @@ -# IBM_PROLOG_BEGIN_TAG -# This is an automatically generated prolog. -# -# $Source: src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_MEM.rule $ -# -# OpenPOWER HostBoot Project -# -# Contributors Listed Below - COPYRIGHT 2012,2016 -# [+] International Business Machines Corp. -# -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. See the License for the specific language governing -# permissions and limitations under the License. -# -# IBM_PROLOG_END_TAG - -################################################################################ -# MEM Chiplet Registers -################################################################################ - -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; -}; - -group gMemChipletFir filter singlebit -{ - /** MEM_CHIPLET_FIR[3] - * Attention from LFIR - */ - (MemChipletFir, bit(3)) ? analyze(gMemLFir); - - /** MEM_CHIPLET_FIR[5] - * Attention from MBACALFIR (MBA 01) - */ - (MemChipletFir, bit(5)) ? analyzeMba0; - - /** MEM_CHIPLET_FIR[6] - * Attention from MBAFIR (MBA 01) - */ - (MemChipletFir, bit(6)) ? analyzeMba0; - - /** MEM_CHIPLET_FIR[7] - * Attention from MBACALFIR (MBA 23) - */ - (MemChipletFir, bit(7)) ? analyzeMba1; - - /** MEM_CHIPLET_FIR[8] - * Attention from MBAFIR (MBA 23) - */ - (MemChipletFir, bit(8)) ? analyzeMba1; - - /** MEM_CHIPLET_FIR[9] - * Attention from DDRPHYFIR (MBA 01) - */ - (MemChipletFir, bit(9)) ? analyzeMba0; - - /** MEM_CHIPLET_FIR[10] - * Attention from DDRPHYFIR (MBA 23) - */ - (MemChipletFir, bit(10)) ? analyzeMba1; - - /** MEM_CHIPLET_FIR[11] - * Attention from MEMFBISTFIR - */ - (MemChipletFir, bit(11)) ? defaultMaskedError; - - /** MEM_CHIPLET_FIR[12] - * Attention from MBASECUREFIR (MBA 01) - */ - (MemChipletFir, bit(12)) ? analyzeMba0; # Checkstop only - - /** MEM_CHIPLET_FIR[13] - * Attention from MBASECUREFIR (MBA 23) - */ - (MemChipletFir, bit(13)) ? analyzeMba1; # Checkstop only -}; - -rule MemChipletSpa -{ - SPECIAL: MEM_CHIPLET_SPA & ~MEM_CHIPLET_SPA_MASK; -}; - -group gMemChipletSpa filter singlebit -{ - /** MEM_CHIPLET_SPA[0] - * Attention from Mba 01 - */ - (MemChipletSpa, bit(0)) ? analyzeMba0; - - /** MEM_CHIPLET_SPA[1] - * Attention from Mba 1 - */ - (MemChipletSpa, bit(1)) ? analyzeMba1; -}; - -################################################################################ -# MEM Chiplet LFIR -################################################################################ -# RAS spreadsheet: p8dd1_mss_FFDC_37_ reviewd.xls - -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; -}; - -group gMemLFir filter singlebit, - secondarybits(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,25,26,27,28,29,30,31,32, - 33,34,35,36,37,38,39,40) -{ - /** MEM_LFIR[0] - * CFIR internal parity error - */ - (MemLFir, bit(0)) ? thresholdAndMask_self; - - /** MEM_LFIR[1] - * Local errors from GPIO (PCB error) - */ - (MemLFir, bit(1)) ? defaultMaskedError; - - /** MEM_LFIR[2] - * Local errors from CC (PCB error) - */ - (MemLFir, bit(2)) ? defaultMaskedError; - - /** MEM_LFIR[3] - * Local errors from CC (OPCG, parity, scan collision, ...) - */ - (MemLFir, bit(3)) ? defaultMaskedError; - - /** MEM_LFIR[4] - * Local errors from PSC (PCB error) - */ - (MemLFir, bit(4)) ? defaultMaskedError; - - /** MEM_LFIR[5] - * Local errors from PSC (parity error) - */ - (MemLFir, bit(5)) ? defaultMaskedError; - - /** MEM_LFIR[6] - * Local errors from Thermal (parity error) - */ - (MemLFir, bit(6)) ? defaultMaskedError; - - /** MEM_LFIR[7] - * Local errors from Thermal (PCB error) - */ - (MemLFir, bit(7)) ? defaultMaskedError; - - /** MEM_LFIR[8:10] - * Local errors from Thermal (Trip error) - */ - (MemLFir, bit(8|9|10)) ? defaultMaskedError; - - /** MEM_LFIR[11:12] - * Local errors from MBA01 Trace Array ( error) - */ - (MemLFir, bit(11|12)) ? defaultMaskedError; - - /** MEM_LFIR[13:14] - * Local errors from MBA23 Trace Array ( error) - */ - (MemLFir, bit(13|14)) ? defaultMaskedError; - - /** MEM_LFIR[40] - * Malfunction alert - */ - (MemLFir, bit(40)) ? defaultMaskedError; -}; - -################################################################################ -# Actions specific to MEM chiplet -################################################################################ - -/** Analyze connected MBA0 */ -actionclass analyzeMba0 -{ - try ( funccall("MBA1_Starvation"), - analyze(connected(TYPE_MBA, 0)) ); -}; - -/** Analyze connected MBA1 */ -# No need to address starvation issue here -# because MBA0 is not at attention -actionclass analyzeMba1 -{ - analyze(connected(TYPE_MBA, 1)); -}; - 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 33c9fb1d3..920276ccd 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 @@ -23,1255 +23,10 @@ # # IBM_PROLOG_END_TAG -################################################################################ -# NEST Chiplet Registers -################################################################################ - -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; -}; - -group gNestChipletFir filter priority( 3, 6, 5, 7 ) -{ - # NOTE: The MBIFIR must be analyzed before the DMIFIR and both the MBIFIR - # and DMIFIR must be analyzed before the MBSFIR. All other FIRs will be - # analyzed in order. - - /** NEST_CHIPLET_FIR[3] - * Attention from LFIR - */ - (NestChipletFir, bit(3)) ? analyze(gNestLFir); - - /** NEST_CHIPLET_FIR[5] - * Attention from DMIFIR - */ - (NestChipletFir, bit(5)) ? analyze(gDmiFir); - - /** NEST_CHIPLET_FIR[6] - * Attention from MBIFIR - */ - (NestChipletFir, bit(6)) ? analyze(gMbiFir); - - /** NEST_CHIPLET_FIR[7] - * Attention from MBSFIR - */ - (NestChipletFir, bit(7)) ? analyze(gMbsFir); - - /** NEST_CHIPLET_FIR[8|9] - * Attention from MCBISTFIRs - */ - (NestChipletFir, bit(8|9)) ? analyze(gMcbistFir); - - /** NEST_CHIPLET_FIR[10|11] - * Attention from MBSECCFIRs - */ - (NestChipletFir, bit(10|11)) ? analyze(gMbsEccFir); - - /** NEST_CHIPLET_FIR[12] - * Attention from NESTFBISTFIR - */ - (NestChipletFir, bit(12))? defaultMaskedError; - - /** NEST_CHIPLET_FIR[13] - * Attention from SCACFIR - */ - (NestChipletFir, bit(13)) ? analyze(gScacFir); - - /** NEST_CHIPLET_FIR[14] - * Attention from MBS secure FIR - */ - (NestChipletFir, bit(14))? analyze(gMbsSecureFir); # Checkstop only -}; - -################################################################################ -# NEST Chiplet LFIR -################################################################################ -# RAS spreadsheet: p8dd1_mss_FFDC_37_ reviewd.xls - -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; -}; - -group gNestLFir filter singlebit, - secondarybits(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, - 17,18,19,20,21,22,23,24,25,26,27,28,29,30, - 31,32,33,34,35,36,37,38,39,40) -{ - /** NEST_LFIR[0] - * CFIR internal parity error - */ - (NestLFir, bit(0)) ? thresholdAndMask_self; - - /** NEST_LFIR[1] - * Local errors from GPIO (PCB error) - */ - (NestLFir, bit(1)) ? defaultMaskedError; - - /** NEST_LFIR[2] - * Local errors from CC (PCB error) - */ - (NestLFir, bit(2)) ? defaultMaskedError; - - /** NEST_LFIR[3] - * Local errors from CC (OPCG, parity, scan collision, ...) - */ - (NestLFir, bit(3)) ? defaultMaskedError; - - /** NEST_LFIR[4] - * Local errors from PSC (PCB error) - */ - (NestLFir, bit(4)) ? defaultMaskedError; - - /** NEST_LFIR[5] - * Local errors from PSC (parity error) - */ - (NestLFir, bit(5)) ? defaultMaskedError; - - /** NEST_LFIR[6] - * Local errors from Thermal (parity error) - */ - (NestLFir, bit(6)) ? defaultMaskedError; - - /** NEST_LFIR[7] - * Local errors from Thermal (PCB error) - */ - (NestLFir, bit(7)) ? defaultMaskedError; - - /** NEST_LFIR[8:10] - * Local errors from Thermal (Trip error) - */ - (NestLFir, bit(8|9|10)) ? defaultMaskedError; - - /** NEST_LFIR[11:12] - * Local errors from Trace Array ( error) - */ - (NestLFir, bit(11|12)) ? defaultMaskedError; - - /** NEST_LFIR[40] - * Malfunction alert - */ - (NestLFir, bit(40)) ? defaultMaskedError; -}; - -################################################################################ -# NEST Chiplet DMIFIR -################################################################################ -# RAS spreadsheet: p8dd1_mss_FFDC_37_ reviewd.xls - -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; -}; - -group gDmiFir filter priority( 10, # Channel failure - 2, 11, 12, 9 ), # Recoverable - secondarybits(0,1,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19, - 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34, - 35,36,37,38,39,40,41,42,43,44,45,46,47,48,49) -{ - /** DMIFIR[0] - * FIR_RX_INVALID_STATE_OR_PARITY_ERROR - */ - (DmiFir, bit(0)) ? defaultMaskedError; - - /** DMIFIR[1] - * FIR_TX_INVALID_STATE_OR_PARITY_ERROR - */ - (DmiFir, bit(1)) ? defaultMaskedError; - - /** DMIFIR[2] - * FIR_GCR_HANG_ERROR - */ - (DmiFir, bit(2)) ? SelfHighThr1; - - /** DMIFIR[3:7] - * Reserved - */ - (DmiFir, bit(3|4|5|6|7)) ? defaultMaskedError; - - /** DMIFIR[8] - * Training Error - */ - (DmiFir, bit(8)) ? defaultMaskedError; - - /** DMIFIR[9] - * Spare Deployed - */ - (DmiFir, bit(9)) ? spareDeployed; - - /** DMIFIR[10] - * Max Spares Exceeded - */ - (DmiFir, bit(10)) ? maxSparesExceeded; - - /** DMIFIR[11] - * Recalibration or Dynamic Repair Error - */ - (DmiFir, bit(11)) ? calloutDmiBusTh1; - - /** DMIFIR[12] - * Too Many Bus Errors - */ - (DmiFir, bit(12)) ? calloutDmiBusTh1; - - /** DMIFIR[13:15] - * Reserved - */ - (DmiFir, bit(13|14|15)) ? defaultMaskedError; - - /** DMIFIR[16:23] - * FIR_RX_BUS1 unused - */ - (DmiFir, bit(16|17|18|19|20|21|22|23)) ? defaultMaskedError; - - /** DMIFIR[24:31] - * FIR_RX_BUS2 unused - */ - (DmiFir, bit(24|25|26|27|28|29|30|31)) ? defaultMaskedError; - - /** DMIFIR[32:39] - * FIR_RX_BUS3 unused - */ - (DmiFir, bit(32|33|34|35|36|37|38|39)) ? defaultMaskedError; - - /** DMIFIR[40:47] - * FIR_RX_BUS4 unused - */ - (DmiFir, bit(40|41|42|43|44|45|46|47)) ? defaultMaskedError; - - /** DMIFIR[48] - * FIR_SCOMFIR_ERROR - */ - (DmiFir, bit(48)) ? thresholdAndMask_self; - - /** DMIFIR[49] - * FIR_SCOMFIR_ERROR_CLONE - */ - (DmiFir, bit(49)) ? thresholdAndMask_self; -}; - -################################################################################ -# NEST Chiplet ScacFir -################################################################################ - -rule ScacFir -{ - CHECK_STOP: SCACFIR & ~SCACFIR_MASK & ~SCACFIR_ACT0 & ~SCACFIR_ACT1; - UNIT_CS: SCACFIR & ~SCACFIR_MASK & ~SCACFIR_ACT0 & ~SCACFIR_ACT1; - RECOVERABLE: SCACFIR & ~SCACFIR_MASK & ~SCACFIR_ACT0 & SCACFIR_ACT1; -}; - -group gScacFir filter singlebit, - secondarybits(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, - 18,19,20,21,22,23,24,27,28,29,30,31,32,33, - 34,35,36) -{ - /** SCACFIR[0] - * SCAC_LFIR_I2CMINVADDR - */ - (ScacFir, bit(0)) ? defaultMaskedError; - - /** SCACFIR[1] - * SCAC_LFIR_I2CMINVWRITE - */ - (ScacFir, bit(1)) ? defaultMaskedError; - - /** SCACFIR[2] - * SCAC_LFIR_I2CMINVREAD - */ - (ScacFir, bit(2)) ? defaultMaskedError; - - /** SCACFIR[3] - * SCAC_LFIR_I2CMAPAR - */ - (ScacFir, bit(3)) ? defaultMaskedError; - - /** SCACFIR[4] - * SCAC_LFIR_I2CMPAR - */ - (ScacFir, bit(4)) ? defaultMaskedError; - - /** SCACFIR[5] - * SCAC_LFIR_I2CMLBPAR - */ - (ScacFir, bit(5)) ? defaultMaskedError; - - /** SCACFIR[6:9] - * Expansion (Reserved at 0 for exernal macro expansion reporting) - */ - (ScacFir, bit(6|7|8|9)) ? defaultMaskedError; - - /** SCACFIR[10] - * SCAC_LFIR_I2CMINVCMD - */ - (ScacFir, bit(10)) ? defaultMaskedError; - - /** SCACFIR[11] - * SCAC_LFIR_I2CMPERR - */ - (ScacFir, bit(11)) ? defaultMaskedError; - - /** SCACFIR[12] - * SCAC_LFIR_I2CMOVERRUN - */ - (ScacFir, bit(12)) ? defaultMaskedError; - - /** SCACFIR[13] - * SCAC_LFIR_I2CMACCESS - */ - (ScacFir, bit(13)) ? defaultMaskedError; - - /** SCACFIR[14] - * SCAC_LFIR_I2CMARB - */ - (ScacFir, bit(14)) ? defaultMaskedError; - - /** SCACFIR[15] - * SCAC_LFIR_I2CMNACK - */ - (ScacFir, bit(15)) ? defaultMaskedError; - - /** SCACFIR[16] - * SCAC_LFIR_I2CMSTOP - */ - (ScacFir, bit(16)) ? defaultMaskedError; - - /** SCACFIR[17] - * SCAC_LFIR_LOCALPIB1 - */ - (ScacFir, bit(17)) ? defaultMaskedError; - - /** SCACFIR[18] - * SCAC_LFIR_LOCALPIB2 - */ - (ScacFir, bit(18)) ? defaultMaskedError; - - /** SCACFIR[19] - * SCAC_LFIR_LOCALPIB3 - */ - (ScacFir, bit(19)) ? defaultMaskedError; - - /** SCACFIR[20] - * SCAC_LFIR_LOCALPIB4 - */ - (ScacFir, bit(20)) ? defaultMaskedError; - - /** SCACFIR[21] - * SCAC_LFIR_LOCALPIB5 - */ - (ScacFir, bit(21)) ? defaultMaskedError; - - /** SCACFIR[22] - * SCAC_LFIR_LOCALPIB6 - */ - (ScacFir, bit(22)) ? defaultMaskedError; - - /** SCACFIR[23] - * SCAC_LFIR_LOCALPIB7 - */ - (ScacFir, bit(23)) ? defaultMaskedError; - - /** SCACFIR[24] - * SCAC_LFIR_STALLERROR - */ - (ScacFir, bit(24)) ? defaultMaskedError; - - /** SCACFIR[25] - * SCAC_LFIR_REGPARERR - */ - (ScacFir, bit(25)) ? SelfMedThr1UE; - - /** SCACFIR[26] - * SCAC_LFIR_REGPARERRX - */ - (ScacFir, bit(26)) ? SelfMedThr1UE; - - /** SCACFIR[32] - * SCAC_LFIR_SMERR - */ - (ScacFir, bit(32)) ? SelfMedThr1; - - /** SCACFIR[33] - * SCAC_LFIR_REGACCERR - */ - (ScacFir, bit(33)) ? callout2ndLvlMedThr1dumpSh; - - /** SCACFIR[34] - * SCAC_LFIR_RESETERR - */ - (ScacFir, bit(34)) ? defaultMaskedError; - - /** SCACFIR[35] - * SCAC_LFIR_INTERNAL_SCOM_ERROR - */ - (ScacFir, bit(35)) ? thresholdAndMask_self; - - /** SCACFIR[36] - * SCAC_LFIR_INTERNAL_SCOM_ERROR_CLONE - */ - (ScacFir, bit(36)) ? thresholdAndMask_self; -}; - -################################################################################ -# NEST Chiplet MBIFIR -################################################################################ -# RAS spreadsheet: p8dd1_mss_FFDC_37_ reviewd.xls - -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; -}; - -group gMbiFir filter priority( 8, 9, 19, 20, 6, 0, # Channel failure - 16, 5, 10 ), # Recoverable - secondarybits(1,2,3,4,5,7,10,11,12,13,14,15,16,17,18,21,22, - 23,24,25,26) -{ - /** MBIFIR[0] - * MBIFIRQ_REPLAY_TIMEOUT - */ - (MbiFir, bit(0)) ? replayTimeOutError; - - /** MBIFIR[1] - * MBIFIRQ_CHANNEL_FAIL - */ - (MbiFir, bit(1)) ? defaultMaskedError; - - /** MBIFIR[2] - * MBIFIRQ_CRC_ERROR - */ - (MbiFir, bit(2)) ? defaultMaskedError; - - /** MBIFIR[3] - * MBIFIRQ_FRAME_NOACK - */ - (MbiFir, bit(3)) ? defaultMaskedError; - - /** MBIFIR[4] - * MBIFIRQ_SEQID_OUT_OF_ORDER - */ - (MbiFir, bit(4)) ? defaultMaskedError; - - /** MBIFIR[5] - * MBIFIRQ_REPLAY_BUFFER_ECC_CE - */ - (MbiFir, bit(5)) ? SelfMedThr5PerHour; - - /** MBIFIR[6] - * MBIFIRQ_REPLAY_BUFFER_ECC_UE - */ - (MbiFir, bit(6)) ? SelfMedThr1UE; - - /** MBIFIR[7] - * MBIFIRQ_MBI_STATE_MACHINE_TIMEOUT - */ - (MbiFir, bit(7)) ? defaultMaskedError; - - /** MBIFIR[8] - * MBIFIRQ_MBI_INTERNAL_CONTROL_PARITY_ERROR - */ - (MbiFir, bit(8)) ? SelfMedThr1UE; - - /** MBIFIR[9] - * MBIFIRQ_MBI_DATA_FLOW_PARITY_ERROR - */ - (MbiFir, bit(9)) ? SelfMedThr1UE; - - /** MBIFIR[10] - * MBIFIRQ_CRC_PERFORMANCE_DEGRADATION - */ - (MbiFir, bit(10)) ? analyzeSpareBitAndThr; - - /** MBIFIR[11] - * MBIFIRQ_HOST_MC_GLOBAL_CHECKSTOP - */ - (MbiFir, bit(11)) ? defaultMaskedError; - - /** MBIFIR[12] - * MBIFIRQ_HOST_MC_TRACESTOP - */ - (MbiFir, bit(12)) ? defaultMaskedError; - - /** MBIFIR[13] - * MBIFIRQ_CHANNEL_INTERLOCK_FAIL - */ - (MbiFir, bit(13)) ? defaultMaskedError; - - /** MBIFIR[14] - * MBIFIRQ_HOST_MC_LOCAL_CHECKSTOP - */ - (MbiFir, bit(14)) ? defaultMaskedError; - - /** MBIFIR[15] - * MBIFIRQ_FRTL_CONTER_OVERFLOW - */ - (MbiFir, bit(15)) ? defaultMaskedError; - - /** MBIFIR[16] - * MBIFIRQ_SCOM_REGISTER_PARITY_ERROR - */ - (MbiFir, bit(16)) ? SelfMedThr1; - - /** MBIFIR[17] - * MBIFIRQ_IO_FAULT: IO to MBI - */ - (MbiFir, bit(17)) ? defaultMaskedError; - - /** MBIFIR[18] - * MBIFIRQ_MULTIPLE_REPLAY - */ - (MbiFir, bit(18)) ? defaultMaskedError; - - /** MBIFIR[19] - * MBIFIRQ_MBICFG_PARITY_SCOM_ERROR - */ - (MbiFir, bit(19)) ? SelfMedThr1UE; - - /** MBIFIR[20] - * MBIFIRQ_BUFFER_OVERRUN_ERROR - */ - (MbiFir, bit(20)) ? calloutDmiBusTh1UE; - - # This is for DD2 only - /** MBIFIR[21] - * MBIFIRQ_WAT_ERROR - */ - (MbiFir, bit(21)) ? defaultMaskedError; - - /** MBIFIR[22:24] - * Reserved - */ - (MbiFir, bit(22|23|24)) ? defaultMaskedError; - - /** MBIFIR[25] - * MBIFIRQ_INTERNAL_SCOM_ERROR_CLONE - */ - (MbiFir, bit(25)) ? thresholdAndMask_self; - - /** MBIFIR[26] - * MBIFIRQ_INTERNAL_SCOM_ERROR_CLONE_COPY - */ - (MbiFir, bit(26)) ? thresholdAndMask_self; -}; - -################################################################################ -# NEST Chiplet MBSFIR -################################################################################ -# RAS spreadsheet: p8dd1_mss_FFDC_37_ reviewd.xls -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; -}; - -group gMbsFir filter singlebit, - secondarybits(3,5,7,9,11,12,14,15,17,19,21,22,23,24,25,26, - 28,29,31,32,33,34) -{ - /** MBSFIR[0] - * MBS_FIR_REG_HOST_PROTOCOL_ERROR - */ - (MbsFir, bit(0)) ? calloutDmiBusTh1UE; - - /** MBSFIR[1] - * MBS_FIR_REG_INT_PROTOCOL_ERROR - */ - (MbsFir, bit(1)) ? SelfMedThr1UE; - - /** MBSFIR[2] - * MBS_FIR_REG_INVALID_ADDRESS_ERROR - */ - (MbsFir, bit(2)) ? calloutDmiBusTh1; - - /** MBSFIR[3] - * MBS_FIR_REG_EXTERNAL_TIMEOUT - */ - (MbsFir, bit(3)) ? callout2ndLvlMedThr1; - - /** MBSFIR[4] - * MBS_FIR_REG_INTERNAL_TIMEOUT - */ - (MbsFir, bit(4)) ? internalTimeout; - - /** MBSFIR[3,4] - * MBS_FIR_REG_EXTERNAL_TIMEOUT - */ - # NOTE: The signature will match the external timeout, but we will still - # call the internalTimeout plugin because there is extra processing - # done to handle parity errors and such. - (MbsFir, bit(3,4)) ? internalTimeout; - - /** MBSFIR[5] - * MBS_FIR_REG_INT_BUFFER_CE - */ - (MbsFir, bit(5)) ? SelfMedThr32PerDay; - - /** MBSFIR[6] - * MBS_FIR_REG_INT_BUFFER_UE - */ - (MbsFir, bit(6)) ? SelfMedThr1UE; - - /** MBSFIR[7] - * MBS_FIR_REG_INT_BUFFER_SUE - */ - (MbsFir, bit(7)) ? defaultMaskedError; - - /** MBSFIR[8] - * MBS_FIR_REG_INT_PARITY_ERROR - */ - (MbsFir, bit(8)) ? SelfMedThr1UE; - - /** MBSFIR[9] - * MBS_FIR_REG_CACHE_SRW_CE - */ - (MbsFir, bit(9)) ? l4_cache_srw_ce; - - /** MBSFIR[10] - * MBS_FIR_REG_CACHE_SRW_UE - */ - (MbsFir, bit(10)) ? l4_cache_srw_ue_UERE; - - /** MBSFIR[11] - * MBS_FIR_REG_CACHE_SRW_SUE - */ - (MbsFir, bit(11)) ? defaultMaskedError; - - /** MBSFIR[12] - * MBS_FIR_REG_CACHE_CO_CE - */ - (MbsFir, bit(12)) ? l4_cache_co_ce; - - /** MBSFIR[13] - * MBS_FIR_REG_CACHE_CO_UE - */ - (MbsFir, bit(13)) ? l4_cache_co_ue_UERE; - - /** MBSFIR[14] - * MBS_FIR_REG_CACHE_CO_SUE - */ - (MbsFir, bit(14)) ? defaultMaskedError; - - /** MBSFIR[15] - * MBS_FIR_REG_DIR_CE - */ - (MbsFir, bit(15)) ? L4CalloutMedThr32PerDay; - - /** MBSFIR[16] - * MBS_FIR_REG_DIR_UE - */ - (MbsFir, bit(16)) ? L4CalloutMedThr1UE; - - /** MBSFIR[17] - * MBS_FIR_REG_DIR_MEMBER_DELETED - */ - (MbsFir, bit(17)) ? defaultMaskedError; - - /** MBSFIR[18] - * MBS_FIR_REG_DIR_ALL_MEMBERS_DELETED - */ - (MbsFir, bit(18)) ? L4CalloutMedThr1UE; - - /** MBSFIR[19] - * MBS_FIR_REG_LRU_ERROR - */ - (MbsFir, bit(19)) ? L4CalloutMedThr32PerDay; - - /** MBSFIR[20] - * MBS_FIR_REG_EDRAM_ERROR - */ - (MbsFir, bit(20)) ? L4CalloutMedThr1UE; - - /** MBSFIR[21] - * MBS_FIR_REG_EMERGENCY_THROTTLE_SET - */ - (MbsFir, bit(21)) ? defaultMaskedError; - - /** MBSFIR[22] - * MBS_FIR_REG_HOST_INBAND_READ_ERROR - */ - (MbsFir, bit(22)) ? defaultMaskedError; - - /** MBSFIR[23] - * MBS_FIR_REG_HOST_INBAND_WRITE_ERROR - */ - (MbsFir, bit(23)) ? defaultMaskedError; - - /** MBSFIR[24] - * MBS_FIR_REG_OCC_INBAND_READ_ERROR - */ - (MbsFir, bit(24)) ? defaultMaskedError; - - /** MBSFIR[25] - * MBS_FIR_REG_OCC_INBAND_WRITE_ERROR - */ - (MbsFir, bit(25)) ? defaultMaskedError; - - /** MBSFIR[26] - * MBS_FIR_REG_SRB_BUFFER_CE - */ - (MbsFir, bit(26)) ? thresholdAndMask_self; - - /** MBSFIR[27] - * MBS_FIR_REG_SRB_BUFFER_UE - */ - (MbsFir, bit(27)) ? SelfMedThr1UE; - - /** MBSFIR[28] - * MBS_FIR_REG_SRB_BUFFER_SUE - */ - (MbsFir, bit(28)) ? defaultMaskedError; - - /** MBSFIR[29] - * DD1: MBS_FIR_REG_INTERNAL_SCOM_ERROR - */ - (MbsFir, bit(29)) ? thresholdAndMask_self; # DD1 action, masked for DD2+ - - /** MBSFIR[30] - * MBS_FIR_REG_PROXIMAL_CE_UE - */ - (MbsFir, bit(30)) ? mbsfirBit30; - - # This is for DD2 only - /** MBSFIR[31] - * MBS_FIR_REG_SPARE_FIR31 - */ - (MbsFir, bit(31)) ? defaultMaskedError; - - # This is for DD2 only - /** MBSFIR[32] - * MBS_FIR_REG_SPARE_FIR32 - */ - (MbsFir, bit(32)) ? defaultMaskedError; - - # This is for DD2 only - /** MBSFIR[33] - * MBS_FIR_REG_INTERNAL_SCOM_ERROR - */ - (MbsFir, bit(33)) ? thresholdAndMask_self; - - # This is for DD2 only - /** MBSFIR[34] - * MBS_FIR_REG_INTERNAL_SCOM_ERROR_COPY - */ - (MbsFir, bit(34)) ? thresholdAndMask_self; -}; - -################################################################################ -# NEST Chiplet MBSECCFIRs -################################################################################ -# RAS spreadsheet: p8dd1_mss_FFDC_37_ reviewd.xls - -rule Mba0_MbsEccFir -{ - CHECK_STOP: MBSECCFIR_0 & ~MBSECCFIR_0_MASK & - ~MBSECCFIR_0_ACT0 & ~MBSECCFIR_0_ACT1; - UNIT_CS: MBSECCFIR_0 & ~MBSECCFIR_0_MASK & - ~MBSECCFIR_0_ACT0 & ~MBSECCFIR_0_ACT1; - RECOVERABLE: MBSECCFIR_0 & ~MBSECCFIR_0_MASK & - ~MBSECCFIR_0_ACT0 & MBSECCFIR_0_ACT1; -}; - -rule Mba1_MbsEccFir -{ - CHECK_STOP: MBSECCFIR_1 & ~MBSECCFIR_1_MASK & - ~MBSECCFIR_1_ACT0 & ~MBSECCFIR_1_ACT1; - UNIT_CS: MBSECCFIR_1 & ~MBSECCFIR_1_MASK & - ~MBSECCFIR_1_ACT0 & ~MBSECCFIR_1_ACT1; - RECOVERABLE: MBSECCFIR_1 & ~MBSECCFIR_1_MASK & - ~MBSECCFIR_1_ACT0 & MBSECCFIR_1_ACT1; -}; - -group gMbsEccFir filter priority ( 19, 41 ), - secondarybits(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, - 17,18,20,21,22,23,24,25,26,27,28,29,30,31, - 32,33,34,35,36,37,38,39,40,41,42,43,44,45, - 48,50,51) -{ - /** MBSECCFIR_0[0] - * Memory chip mark on rank 0 - */ - (Mba0_MbsEccFir, bit(0)) ? analyzeFetchMpe0_0; - - /** MBSECCFIR_1[0] - * Memory chip mark on rank 0 - */ - (Mba1_MbsEccFir, bit(0)) ? analyzeFetchMpe1_0; - - /** MBSECCFIR_0[1] - * Memory chip mark on rank 1 - */ - (Mba0_MbsEccFir, bit(1)) ? analyzeFetchMpe0_1; - - /** MBSECCFIR_1[1] - * Memory chip mark on rank 1 - */ - (Mba1_MbsEccFir, bit(1)) ? analyzeFetchMpe1_1; - - /** MBSECCFIR_0[2] - * Memory chip mark on rank 2 - */ - (Mba0_MbsEccFir, bit(2)) ? analyzeFetchMpe0_2; - - /** MBSECCFIR_1[2] - * Memory chip mark on rank 2 - */ - (Mba1_MbsEccFir, bit(2)) ? analyzeFetchMpe1_2; - - /** MBSECCFIR_0[3] - * Memory chip mark on rank 3 - */ - (Mba0_MbsEccFir, bit(3)) ? analyzeFetchMpe0_3; - - /** MBSECCFIR_1[3] - * Memory chip mark on rank 3 - */ - (Mba1_MbsEccFir, bit(3)) ? analyzeFetchMpe1_3; - - /** MBSECCFIR_0[4] - * Memory chip mark on rank 4 - */ - (Mba0_MbsEccFir, bit(4)) ? analyzeFetchMpe0_4; - - /** MBSECCFIR_1[4] - * Memory chip mark on rank 4 - */ - (Mba1_MbsEccFir, bit(4)) ? analyzeFetchMpe1_4; - - /** MBSECCFIR_0[5] - * Memory chip mark on rank 5 - */ - (Mba0_MbsEccFir, bit(5)) ? analyzeFetchMpe0_5; - - /** MBSECCFIR_1[5] - * Memory chip mark on rank 5 - */ - (Mba1_MbsEccFir, bit(5)) ? analyzeFetchMpe1_5; - - /** MBSECCFIR_0[6] - * Memory chip mark on rank 6 - */ - (Mba0_MbsEccFir, bit(6)) ? analyzeFetchMpe0_6; - - /** MBSECCFIR_1[6] - * Memory chip mark on rank 6 - */ - (Mba1_MbsEccFir, bit(6)) ? analyzeFetchMpe1_6; - - /** MBSECCFIR_0[7] - * Memory chip mark on rank 7 - */ - (Mba0_MbsEccFir, bit(7)) ? analyzeFetchMpe0_7; - - /** MBSECCFIR_1[7] - * Memory chip mark on rank 7 - */ - (Mba1_MbsEccFir, bit(7)) ? analyzeFetchMpe1_7; - - /** MBSECCFIR_0[8:15] - * Reserved - */ - (Mba0_MbsEccFir, bit(8|9|10|11|12|13|14|15)) ? defaultMaskedError; - - /** MBSECCFIR_1[8:15] - * Reserved - */ - (Mba1_MbsEccFir, bit(8|9|10|11|12|13|14|15)) ? defaultMaskedError; - - /** MBSECCFIR_0[16] - * Memory NCE - */ - (Mba0_MbsEccFir, bit(16)) ? analyzeFetchNce0; - - /** MBSECCFIR_1[16] - * Memory NCE - */ - (Mba1_MbsEccFir, bit(16)) ? analyzeFetchNce1; - - /** MBSECCFIR_0[17] - * Memory RCE - */ - (Mba0_MbsEccFir, bit(17)) ? analyzeFetchRce0; - - /** MBSECCFIR_1[17] - * Memory RCE - */ - (Mba1_MbsEccFir, bit(17)) ? analyzeFetchRce1; - - /** MBSECCFIR_0[18] - * Memory SUE - */ - (Mba0_MbsEccFir, bit(18)) ? defaultMaskedError; - - /** MBSECCFIR_1[18] - * Memory SUE - */ - (Mba1_MbsEccFir, bit(18)) ? defaultMaskedError; - - /** MBSECCFIR_0[19] - * Memory UE - */ - (Mba0_MbsEccFir, bit(19)) ? mba0MemoryUe; - - /** MBSECCFIR_1[19] - * Memory UE - */ - (Mba1_MbsEccFir, bit(19)) ? mba1MemoryUe; - - /** MBSECCFIR_0[20:27] - * Maintenance chip mark - */ - (Mba0_MbsEccFir, bit(20|21|22|23|24|25|26|27)) ? defaultMaskedError; - - /** MBSECCFIR_1[20:27] - * Maintenance chip mark - */ - (Mba1_MbsEccFir, bit(20|21|22|23|24|25|26|27)) ? defaultMaskedError; - - /** MBSECCFIR_0[28:35] - * Reserved - */ - (Mba0_MbsEccFir, bit(28|29|30|31|32|33|34|35)) ? defaultMaskedError; - - /** MBSECCFIR_1[28:35] - * Reserved - */ - (Mba1_MbsEccFir, bit(28|29|30|31|32|33|34|35)) ? defaultMaskedError; - - /** MBSECCFIR_0[36] - * Maintenance NCE - */ - (Mba0_MbsEccFir, bit(36)) ? defaultMaskedError; - - /** MBSECCFIR_1[36] - * Maintenance NCE - */ - (Mba1_MbsEccFir, bit(36)) ? defaultMaskedError; - - /** MBSECCFIR_0[37] - * Maintenance SCE - */ - (Mba0_MbsEccFir, bit(37)) ? defaultMaskedError; - - /** MBSECCFIR_1[37] - * Maintenance SCE - */ - (Mba1_MbsEccFir, bit(37)) ? defaultMaskedError; - - /** MBSECCFIR_0[38] - * Maintenance MCE - */ - (Mba0_MbsEccFir, bit(38)) ? defaultMaskedError; - - /** MBSECCFIR_1[38] - * Maintenance MCE - */ - (Mba1_MbsEccFir, bit(38)) ? defaultMaskedError; - - /** MBSECCFIR_0[39] - * Maintenance RCE - */ - (Mba0_MbsEccFir, bit(39)) ? defaultMaskedError; - - /** MBSECCFIR_1[39] - * Maintenance RCE - */ - (Mba1_MbsEccFir, bit(39)) ? defaultMaskedError; - - /** MBSECCFIR_0[40] - * Maintenance SUE - */ - (Mba0_MbsEccFir, bit(40)) ? defaultMaskedError; - - /** MBSECCFIR_1[40] - * Maintenance SUE - */ - (Mba1_MbsEccFir, bit(40)) ? defaultMaskedError; - - /** MBSECCFIR_0[41] - * Maintenance UE - */ - (Mba0_MbsEccFir, bit(41)) ? defaultMaskedError; - - /** MBSECCFIR_1[41] - * Maintenance UE - */ - (Mba1_MbsEccFir, bit(41)) ? defaultMaskedError; - - /** MBSECCFIR_0[42] - * MBECCFIR_MPE_DURING_USE_MAINTENANCE_MARK_MODE - */ - (Mba0_MbsEccFir, bit(42)) ? defaultMaskedError; - - /** MBSECCFIR_1[42] - * MBECCFIR_MPE_DURING_USE_MAINTENANCE_MARK_MODE - */ - (Mba1_MbsEccFir, bit(42)) ? defaultMaskedError; - - /** MBSECCFIR_0[43] - * MBECCFIR_PREFETCH_MEMORY_UE - */ - (Mba0_MbsEccFir, bit(43)) ? analyzeFetchPreUe0; - - /** MBSECCFIR_1[43] - * MBECCFIR_PREFETCH_MEMORY_UE - */ - (Mba1_MbsEccFir, bit(43)) ? analyzeFetchPreUe1; - - /** MBSECCFIR_0[44] - * MBECCFIR_MEMORY_RCD_PARITY_ERROR - */ - (Mba0_MbsEccFir, bit(44)) ? defaultMaskedError; - - /** MBSECCFIR_1[44] - * MBECCFIR_MEMORY_RCD_PARITY_ERROR - */ - (Mba1_MbsEccFir, bit(44)) ? defaultMaskedError; - - /** MBSECCFIR_0[45] - * MBECCFIR_MAINTENANCE_RCD_PARITY_ERROR - */ - (Mba0_MbsEccFir, bit(45)) ? defaultMaskedError; - - /** MBSECCFIR_1[45] - * MBECCFIR_MAINTENANCE_RCD_PARITY_ERROR - */ - (Mba1_MbsEccFir, bit(45)) ? defaultMaskedError; - - /** MBSECCFIR_0[46] - * MBECCFIR_RECOVERABLE_CONFIGURATION_REGISTER_PARITY_ERROR - */ - (Mba0_MbsEccFir, bit(46)) ? MBA0CalloutMedThr1; - - /** MBSECCFIR_1[46] - * MBECCFIR_RECOVERABLE_CONFIGURATION_REGISTER_PARITY_ERROR - */ - (Mba1_MbsEccFir, bit(46)) ? MBA1CalloutMedThr1; - - /** MBSECCFIR_0[47] - * MBECCFIR_UNRECOVERABLE_CONFIGURATION_REGISTER_PARITY_ERROR - */ - (Mba0_MbsEccFir, bit(47)) ? MBA0CalloutMedThr1UE; - - /** MBSECCFIR_1[47] - * MBECCFIR_UNRECOVERABLE_CONFIGURATION_REGISTER_PARITY_ERROR - */ - (Mba1_MbsEccFir, bit(47)) ? MBA1CalloutMedThr1UE; - - /** MBSECCFIR_0[48] - * MBECCFIR_MASKABLE_CONFIGURATION_REGISTER_PARITY_ERROR - */ - (Mba0_MbsEccFir, bit(48)) ? thresholdAndMask_mba0; - - /** MBSECCFIR_1[48] - * MBECCFIR_MASKABLE_CONFIGURATION_REGISTER_PARITY_ERROR - */ - (Mba1_MbsEccFir, bit(48)) ? thresholdAndMask_mba1; - - /** MBSECCFIR_0[49] - * MBECCFIR_ECC_DATAPATH_PARITY_ERROR - */ - (Mba0_MbsEccFir, bit(49)) ? MBA0CalloutMedThr1UE; - - /** MBSECCFIR_1[49] - * MBECCFIR_ECC_DATAPATH_PARITY_ERROR - */ - (Mba1_MbsEccFir, bit(49)) ? MBA1CalloutMedThr1UE; - - /** MBSECCFIR_0[50] - * MBECCFIR_INTERNAL_SCOM_ERROR - */ - (Mba0_MbsEccFir, bit(50)) ? thresholdAndMask_mba0; - - /** MBSECCFIR_1[50] - * MBECCFIR_INTERNAL_SCOM_ERROR - */ - (Mba1_MbsEccFir, bit(50)) ? thresholdAndMask_mba1; - - /** MBSECCFIR_0[51] - * MBECCFIR_INTERNAL_SCOM_ERROR_COPY - */ - (Mba0_MbsEccFir, bit(51)) ? thresholdAndMask_mba0; - - /** MBSECCFIR_1[51] - * MBECCFIR_INTERNAL_SCOM_ERROR_COPY - */ - (Mba1_MbsEccFir, bit(51)) ? thresholdAndMask_mba1; -}; - -################################################################################ -# NEST Chiplet MCBISTFIRs -################################################################################ -# RAS spreadsheet: p8dd1_mss_FFDC_37_ reviewd.xls - -rule Mba0_McbistFir -{ - CHECK_STOP: MCBISTFIR_0 & ~MCBISTFIR_0_MASK & - ~MCBISTFIR_0_ACT0 & ~MCBISTFIR_0_ACT1; - UNIT_CS: MCBISTFIR_0 & ~MCBISTFIR_0_MASK & - ~MCBISTFIR_0_ACT0 & ~MCBISTFIR_0_ACT1; - RECOVERABLE: MCBISTFIR_0 & ~MCBISTFIR_0_MASK & - ~MCBISTFIR_0_ACT0 & MCBISTFIR_0_ACT1; -}; - -rule Mba1_McbistFir -{ - CHECK_STOP: MCBISTFIR_1 & ~MCBISTFIR_1_MASK & - ~MCBISTFIR_1_ACT0 & ~MCBISTFIR_1_ACT1; - UNIT_CS: MCBISTFIR_1 & ~MCBISTFIR_1_MASK & - ~MCBISTFIR_1_ACT0 & ~MCBISTFIR_1_ACT1; - RECOVERABLE: MCBISTFIR_1 & ~MCBISTFIR_1_MASK & - ~MCBISTFIR_1_ACT0 & MCBISTFIR_1_ACT1; -}; - -group gMcbistFir filter singlebit, - secondarybits(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16) -{ - /** MCBISTFIR_0[0] - * MBSFIRQ_SCOM_PAR_ERRORS - */ - (Mba0_McbistFir, bit(0)) ? MBA0CalloutMedThr1; - - /** MCBISTFIR_1[0] - * MBSFIRQ_SCOM_PAR_ERRORS - */ - (Mba1_McbistFir, bit(0)) ? MBA1CalloutMedThr1; - - /** MCBISTFIR_0[1] - * MBSFIRQ_MBX_PAR_ERRORS - */ - (Mba0_McbistFir, bit(1)) ? MBA0CalloutMedThr1; - - /** MCBISTFIR_1[1] - * MBSFIRQ_MBX_PAR_ERRORS - */ - (Mba1_McbistFir, bit(1)) ? MBA1CalloutMedThr1; - - # This is for DD2 only - /** MCBISTFIR_0[2] - * MBSFIRQ_DRAM_EVENT_BIT0 - */ - (Mba0_McbistFir, bit(2)) ? defaultMaskedError; - - # This is for DD2 only - /** MCBISTFIR_1[2] - * MBSFIRQ_DRAM_EVENT_BIT0 - */ - (Mba1_McbistFir, bit(2)) ? defaultMaskedError; - - # This is for DD2 only - /** MCBISTFIR_0[3] - * MBSFIRQ_DRAM_EVENT_BIT1 - */ - (Mba0_McbistFir, bit(3)) ? defaultMaskedError; - - # This is for DD2 only - /** MCBISTFIR_1[3] - * MBSFIRQ_DRAM_EVENT_BIT1 - */ - (Mba1_McbistFir, bit(3)) ? defaultMaskedError; - - /** MCBISTFIR_0[4:14] - * Reserved - */ - (Mba0_McbistFir, bit(4|5|6|7|8|9|10|11|12|13|14)) ? defaultMaskedError; - - /** MCBISTFIR_1[4:14] - * Reserved - */ - (Mba1_McbistFir, bit(4|5|6|7|8|9|10|11|12|13|14)) ? defaultMaskedError; - - /** MCBISTFIR_0[15] - * MBSFIRQ_INTERNAL_SCOM_ERROR - */ - (Mba0_McbistFir, bit(15)) ? thresholdAndMask_mba0; - - /** MCBISTFIR_1[15] - * MBSFIRQ_INTERNAL_SCOM_ERROR - */ - (Mba1_McbistFir, bit(15)) ? thresholdAndMask_mba1; - - /** MCBISTFIR_0[16] - * MBSFIRQ_INTERNAL_SCOM_ERROR_CLONE - */ - (Mba0_McbistFir, bit(16)) ? thresholdAndMask_mba0; - - /** MCBISTFIR_1[16] - * MBSFIRQ_INTERNAL_SCOM_ERROR_CLONE - */ - (Mba1_McbistFir, bit(16)) ? thresholdAndMask_mba1; -}; - -################################################################################ -# NEST Chiplet MBSSECUREFIR -################################################################################ - -rule MbsSecureFir -{ - # NOTE: This secure FIR will only report checkstop attentions. - CHECK_STOP: MBSSECUREFIR; - UNIT_CS: MBSSECUREFIR; -}; - -group gMbsSecureFir filter singlebit -{ - /** MBSSECUREFIR[0] - * MBSSIRQ_INVALID_MBSXCR_ACCESS - */ - (MbsSecureFir, bit(0)) ? secureFirCallout; - - /** MBSSECUREFIR[1] - * MBSSIRQ_INVALID_MBAXCR01_ACCESS - */ - (MbsSecureFir, bit(1)) ? secureFirCallout; - - /** MBSSECUREFIR[2] - * MBSSIRQ_INVALID_MBAXCR23_ACCESS - */ - (MbsSecureFir, bit(2)) ? secureFirCallout; - - /** MBSSECUREFIR[3] - * MBSSIRQ_INVALID_MBAXCRMS_ACCRESS - */ - (MbsSecureFir, bit(3)) ? secureFirCallout; - - /** MBSSECUREFIR[4] - * MBSSIRQ_SPARE (Spare) - */ - (MbsSecureFir, bit(4)) ? secureFirCallout; - - /** MBSSECUREFIR[5] - * MBSSIRQ_INVALID_SIR_MASK_OR_ACTION_REGISTER_ACCESS - */ - (MbsSecureFir, bit(5)) ? secureFirCallout; -}; - ################################################################################ # Actions specific to NEST chiplet ################################################################################ -/** Callout the connected MBA 0 */ -actionclass calloutMba0 { callout(connected(TYPE_MBA, 0), MRU_MED); }; - -/** Callout the connected MBA 1 */ -actionclass calloutMba1 { callout(connected(TYPE_MBA, 1), MRU_MED); }; - -/** Callout the connected L4 */ -actionclass calloutL4 { callout(connected(TYPE_L4), MRU_MED); }; - /** Callout the DMI bus */ actionclass calloutDmiBus { @@ -1421,103 +176,3 @@ actionclass analyzeFetchUe1 SUEGenerationPoint; }; -/** Clear MBS SecondaryBits and Line Delete*/ -actionclass clearSecMbsBitsAndLineDelete -{ - calloutL4; - threshold( field(32 / day), mfg_file(ATTR_MNFG_TH_CEN_L4_CACHE_CES)); - funccall("CaptureL4CacheErr"); - funccall("ClearServiceCallFlag"); - funccall("ClearMbsSecondaryBits"); -}; - -/** Clear MBACAL SecondaryBits and Line Delete*/ -actionclass clearSecMbaCalBitsAndLineDelete -{ - calloutL4; - threshold( field(32 / day), mfg_file(ATTR_MNFG_TH_CEN_L4_CACHE_CES)); - funccall("CaptureL4CacheErr"); - funccall("ClearServiceCallFlag"); - funccall("ClearMbaCalSecondaryBits"); -}; - -/** Mask MBACAL SecondaryBits and callout Connected L4*/ -actionclass maskSecMbaCalBitsAndConnL4UE -{ - calloutL4; - threshold1; - funccall("CaptureL4CacheErr"); - funccall("MaskMbaCalSecondaryBits"); - SUEGenerationPoint; -}; - -/** Mask MBS SecondaryBits and callout Connected L4*/ -actionclass maskSecMbsBitsAndConnL4UE -{ - calloutL4; - threshold1; - funccall("CaptureL4CacheErr"); - funccall("MaskMbsSecondaryBits"); - SUEGenerationPoint; -}; - -/** Callout MBA0 with "Threshold and Mask" policy. */ -actionclass thresholdAndMask_mba0 { calloutMba0; thresholdAndMask; }; - -/** Callout MBA1 with "Threshold and Mask" policy. */ -actionclass thresholdAndMask_mba1 { calloutMba1; thresholdAndMask; }; - -actionclass L4CalloutMedThr32PerDay -{ - calloutL4; - threshold32pday; -}; - -actionclass L4CalloutMedThr1UE -{ - calloutL4; - threshold1; - SUEGenerationPoint; -}; - -actionclass MBA0CalloutMedThr1 -{ - calloutMba0; - threshold1; -}; - -actionclass MBA1CalloutMedThr1 -{ - calloutMba1; - threshold1; -}; - -actionclass MBA0CalloutMedThr1UE -{ - MBA0CalloutMedThr1; - SUEGenerationPoint; -}; - -actionclass MBA1CalloutMedThr1UE -{ - MBA1CalloutMedThr1; - SUEGenerationPoint; -}; - -/** The plugin checks if the membuf is at DD1. - If DD1, then callout thresholdAndMask_self and change signature - to DD1: MBS_FIR_REG_INTERNAL_SCOM_ERROR_COPY */ -actionclass mbsfirBit30 -{ - threshold32pday; - try( funccall("mbsfirBit30_dd1"), L4CalloutMedThr1UE); -}; - -/** Callouts specific to MBSSECUREFIR attentions. */ -actionclass secureFirCallout -{ - callout2ndLvlMed; - calloutSelfLow; - threshold1; -}; - 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 deleted file mode 100755 index 1b2a18f85..000000000 --- a/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_TP.rule +++ /dev/null @@ -1,157 +0,0 @@ -# IBM_PROLOG_BEGIN_TAG -# This is an automatically generated prolog. -# -# $Source: src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_TP.rule $ -# -# OpenPOWER HostBoot Project -# -# Contributors Listed Below - COPYRIGHT 2012,2016 -# [+] International Business Machines Corp. -# -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. See the License for the specific language governing -# permissions and limitations under the License. -# -# IBM_PROLOG_END_TAG - -################################################################################ -# TP Chiplet Registers -################################################################################ - -rule TpChipletFir -{ - CHECK_STOP: - (TP_CHIPLET_CS_FIR & `1000000000000000`) & ~TP_CHIPLET_FIR_MASK; - UNIT_CS: - (TP_CHIPLET_CS_FIR & `1000000000000000`) & ~TP_CHIPLET_FIR_MASK; - RECOVERABLE: - ((TP_CHIPLET_RE_FIR >> 2) & `1000000000000000`) & ~TP_CHIPLET_FIR_MASK; -}; - -group gTpChipletFir filter singlebit -{ - /** TP_CHIPLET_FIR[3] - * Attention from LFIR - */ - (TpChipletFir, bit(3)) ? analyze(gTpLFir); -}; - -################################################################################ -# TP Chiplet LFIR -################################################################################ -# RAS spreadsheet: p8dd1_mss_FFDC_37_ reviewd.xls - -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; -}; - -group gTpLFir filter singlebit, - secondarybits(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, - 18,21,22,23,24,25,26,27,28,29,30,31,32,33,34, - 35,36,37,38,39,40) -{ - /** TP_LFIR[0] - * CFIR internal parity error - */ - (TpLFir, bit(0)) ? thresholdAndMask_self; - - /** TP_LFIR[1] - * Local errors from GPIO (PCB error) - */ - (TpLFir, bit(1)) ? defaultMaskedError; - - /** TP_LFIR[2] - * Local errors from CC (PCB error) - */ - (TpLFir, bit(2)) ? defaultMaskedError; - - /** TP_LFIR[3] - * Local errors from CC (OPCG, parity, scan collision, ...) - */ - (TpLFir, bit(3)) ? defaultMaskedError; - - /** TP_LFIR[4] - * Local errors from PSC (PCB error) - */ - (TpLFir, bit(4)) ? defaultMaskedError; - - /** TP_LFIR[5] - * Local errors from PSC (parity error) - */ - (TpLFir, bit(5)) ? defaultMaskedError; - - /** TP_LFIR[6] - * Local errors from Thermal (parity error) - */ - (TpLFir, bit(6)) ? defaultMaskedError; - - /** TP_LFIR[7] - * Local errors from Thermal (PCB error) - */ - (TpLFir, bit(7)) ? defaultMaskedError; - - /** TP_LFIR[8:10] - * Local errors from Thermal (Trip error) - */ - (TpLFir, bit(8|9|10)) ? defaultMaskedError; - - /** TP_LFIR[11:12] - * Local errors from Trace Array ( error) - */ - (TpLFir, bit(11|12)) ? defaultMaskedError; - - /** TP_LFIR[13:14] - * Local errors from ITR - */ - (TpLFir, bit(13|14)) ? thresholdAndMask_self; - - /** TP_LFIR[15] - * Local errors from ITR ( itr_tc_pcbsl_slave_fir_err ) - */ - (TpLFir, bit(15)) ? defaultMaskedError; - - /** TP_LFIR[16:18] - * Local errors from PIB - */ - (TpLFir, bit(16|17|18)) ? defaultMaskedError; - - /** TP_LFIR[19] - * local errors from nest PLL - * - * These should never trigger directly themselves. - * Should be handled by global PRD PLL code. - */ - (TpLFir, bit(19)) ? threshold32pday; - - /** TP_LFIR[20] - * local errors from mem PLL - * - * These should never trigger directly themselves. - * Should be handled by global PRD PLL code. - */ - (TpLFir, bit(20)) ? threshold32pday; - - /** TP_LFIR[40] - * local errors from mem PLL - * - * Malfunction alert (local xstop in another chiplet) - */ - (TpLFir, bit(40)) ? defaultMaskedError; -}; - -################################################################################ -# Actions specific to TP chiplet -################################################################################ - diff --git a/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_MEM.rule b/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_MEM.rule index 28d5e46eb..8bf48cd6d 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_MEM.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_MEM.rule @@ -5,7 +5,9 @@ # # OpenPOWER HostBoot Project # -# COPYRIGHT International Business Machines Corp. 2012,2014 +# Contributors Listed Below - COPYRIGHT 2012,2018 +# [+] International Business Machines Corp. +# # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,110 +23,6 @@ # # IBM_PROLOG_END_TAG - ############################################################################ - # MEM Chiplet Registers - ############################################################################ - - register MEM_CHIPLET_CS_FIR - { - name "TCM.XFIR"; - scomaddr 0x03040000; - capture group FirRegs; - capture group MemChipletRegs; - }; - - register MEM_CHIPLET_RE_FIR - { - name "TCM.RFIR"; - scomaddr 0x03040001; - capture group FirRegs; - capture group MemChipletRegs; - }; - - register MEM_CHIPLET_FIR_MASK - { - name "TCM.FIR_MASK"; - scomaddr 0x03040002; - capture group FirRegs; - capture group MemChipletRegs; - }; - - register MEM_CHIPLET_SPA - { - name "TCM.EPS.FIR.SPATTN"; - scomaddr 0x03040004; - capture group FirRegs; - capture group MemChipletRegs; - }; - - register MEM_CHIPLET_SPA_MASK - { - name "TCM.EPS.FIR.SPA_MASK"; - scomaddr 0x03040007; - capture group FirRegs; - capture group MemChipletRegs; - }; - - ############################################################################ - # MEM Chiplet LFIR - ############################################################################ - - register MEM_LFIR - { - name "TCM.LOCAL_FIR"; - scomaddr 0x0304000a; - reset (&, 0x0304000b); - mask (|, 0x0304000f); - capture group FirRegs; - capture group MemChipletRegs; - }; - - register MEM_LFIR_MASK - { - name "TCM.EPS.FIR.LOCAL_FIR_MASK"; - scomaddr 0x0304000d; - capture group FirRegs; - capture group MemChipletRegs; - }; - - register MEM_LFIR_ACT0 - { - name "TCM.EPS.FIR.LOCAL_FIR_ACTION0"; - scomaddr 0x03040010; - capture type secondary; - capture group FirRegs; - capture group MemChipletRegs; - capture req nonzero("MEM_LFIR"); - }; - - register MEM_LFIR_ACT1 - { - name "TCM.EPS.FIR.LOCAL_FIR_ACTION1"; - scomaddr 0x03040011; - capture type secondary; - capture group FirRegs; - capture group MemChipletRegs; - capture req nonzero("MEM_LFIR"); - }; - - ############################################################################ - # MEM Chiplet MEMFBISTFIR - ############################################################################ - - # FIR not used. Capture for FFDC only. - # This register is on the same clock domain for both MBAs. So if one is - # powered down and we try to SCOM to the other, there will be SCOM failures. - # Since this register is for FFDC purposes only, we simply will not capture - # this register. - -# register MEMFBISTFIR -# { -# name "FBIST.FBM.FBM_FIR_REG"; -# scomaddr 0x03010480; -# capture group FirRegs; -# capture group MemChipletRegs; -# }; - ############################################################################ # Error Report Registers ############################################################################ 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 090168456..f996d93af 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 @@ -23,132 +23,10 @@ # # IBM_PROLOG_END_TAG - ############################################################################ - # NEST Chiplet Registers - ############################################################################ - - register NEST_CHIPLET_CS_FIR - { - name "TCN.XFIR"; - scomaddr 0x02040000; - capture group default; - capture group FirRegs; - }; - - register NEST_CHIPLET_RE_FIR - { - name "TCN.RFIR"; - scomaddr 0x02040001; - capture group default; - capture group FirRegs; - }; - - register NEST_CHIPLET_FIR_MASK - { - name "TCN.FIR_MASK"; - scomaddr 0x02040002; - capture group default; - capture group FirRegs; - }; - - ############################################################################ - # NEST Chiplet LFIR - ############################################################################ - - register NEST_LFIR - { - name "TCN.LOCAL_FIR"; - scomaddr 0x0204000a; - reset (&, 0x0204000b); - mask (|, 0x0204000f); - capture group default; - capture group FirRegs; - }; - - register NEST_LFIR_MASK - { - name "TCN.EPS.FIR.LOCAL_FIR_MASK"; - scomaddr 0x0204000d; - capture group default; - capture group FirRegs; - }; - - register NEST_LFIR_ACT0 - { - name "TCN.EPS.FIR.LOCAL_FIR_ACTION0"; - scomaddr 0x02040010; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("NEST_LFIR"); - }; - - register NEST_LFIR_ACT1 - { - name "TCN.EPS.FIR.LOCAL_FIR_ACTION1"; - scomaddr 0x02040011; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("NEST_LFIR"); - }; - - ############################################################################ - # NEST Chiplet DMIFIR - ############################################################################ - - register DMIFIR - { - name "DMI.BUSCTL.SCOM.FIR_REG"; - scomaddr 0x02010400; - reset (&, 0x02010401); - mask (|, 0x02010405); - capture group default; - capture group FirRegs; - }; - - register DMIFIR_MASK - { - name "DMI.BUSCTL.SCOM.FIR_MASK_REG"; - scomaddr 0x02010403; - capture group default; - capture group FirRegs; - }; - - register DMIFIR_ACT0 - { - name "DMI.BUSCTL.SCOM.FIR_ACTION0_REG"; - scomaddr 0x02010406; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("DMIFIR"); - }; - - register DMIFIR_ACT1 - { - name "DMI.BUSCTL.SCOM.FIR_ACTION1_REG"; - scomaddr 0x02010407; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("DMIFIR"); - }; - ############################################################################ # NEST Chiplet MBIFIR ############################################################################ - register MBIFIR - { - name "MBU.MBI.MBI.SCOMFIR.MBIFIRQ"; - scomaddr 0x02010800; - reset (&, 0x02010801); - mask (|, 0x02010805); - capture group default; - capture group FirRegs; - }; - register MBIFIR_AND { name "MBU.MBI.MBI.SCOMFIR.MBIFIRQ AND"; @@ -157,91 +35,10 @@ access write_only; }; - register MBIFIR_MASK - { - name "MBU.MBI.MBI.SCOMFIR.MBIFIRMASK"; - scomaddr 0x02010803; - capture group default; - capture group FirRegs; - }; - - register MBIFIR_ACT0 - { - name "MBU.MBI.MBI.SCOMFIR.MBIFIRACT0"; - scomaddr 0x02010806; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("MBIFIR"); - }; - - register MBIFIR_ACT1 - { - name "MBU.MBI.MBI.SCOMFIR.MBIFIRACT1"; - scomaddr 0x02010807; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("MBIFIR"); - }; - - ############################################################################ - # NEST Chiplet MBSFIR - ############################################################################ - - register MBSFIR - { - name "MBU.MBS.MBS_FIR_REG"; - scomaddr 0x02011400; - reset (&, 0x02011401); - mask (|, 0x02011405); - capture group default; - capture group FirRegs; - }; - - register MBSFIR_MASK - { - name "MBU.MBS.MBS_FIR_MASK_REG"; - scomaddr 0x02011403; - capture group default; - capture group FirRegs; - }; - - register MBSFIR_ACT0 - { - name "MBU.MBS.MBS_FIR_ACTION0_REG"; - scomaddr 0x02011406; - capture type secondary; - capture req nonzero("MBSFIR"); - capture group default; - capture group FirRegs; - }; - - register MBSFIR_ACT1 - { - name "MBU.MBS.MBS_FIR_ACTION1_REG"; - scomaddr 0x02011407; - capture type secondary; - capture req nonzero("MBSFIR"); - capture group default; - capture group FirRegs; - }; - ############################################################################ # NEST Chiplet MBSECCFIR_0 ############################################################################ - register MBSECCFIR_0 - { - name "MBU.MBS.ECC01.MBECCFIR"; - scomaddr 0x02011440; - reset (&, 0x02011441); - mask (|, 0x02011445); - capture group default; - capture group FirRegs; - capture group MaintCmdRegs_mba0; - }; - register MBSECCFIR_0_AND { name "MBU.MBS.ECC01.MBECCFIR_AND"; @@ -250,15 +47,6 @@ access write_only; }; - register MBSECCFIR_0_MASK - { - name "MBU.MBS.ECC01.MBECCFIR_MASK"; - scomaddr 0x02011443; - capture group default; - capture group FirRegs; - capture group MaintCmdRegs_mba0; - }; - register MBSECCFIR_0_MASK_AND { name "MBU.MBS.ECC01.MBECCFIR_MASK_AND"; @@ -275,43 +63,10 @@ access write_only; }; - register MBSECCFIR_0_ACT0 - { - name "MBU.MBS.ECC01.MBECCFIR_ACTION0"; - scomaddr 0x02011446; - capture type secondary; - capture group default; - capture group FirRegs; - capture group MaintCmdRegs_mba0; - capture req nonzero("MBSECCFIR_0"); - }; - - register MBSECCFIR_0_ACT1 - { - name "MBU.MBS.ECC01.MBECCFIR_ACTION1"; - scomaddr 0x02011447; - capture type secondary; - capture group default; - capture group FirRegs; - capture group MaintCmdRegs_mba0; - capture req nonzero("MBSECCFIR_0"); - }; - ############################################################################ # NEST Chiplet MBSECCFIR_1 ############################################################################ - register MBSECCFIR_1 - { - name "MBU.MBS.ECC23.MBECCFIR"; - scomaddr 0x02011480; - reset (&, 0x02011481); - mask (|, 0x02011485); - capture group default; - capture group FirRegs; - capture group MaintCmdRegs_mba1; - }; - register MBSECCFIR_1_AND { name "MBU.MBS.ECC23.MBECCFIR_AND"; @@ -320,15 +75,6 @@ access write_only; }; - register MBSECCFIR_1_MASK - { - name "MBU.MBS.ECC23.MBECCFIR_MASK"; - scomaddr 0x02011483; - capture group default; - capture group FirRegs; - capture group MaintCmdRegs_mba1; - }; - register MBSECCFIR_1_MASK_AND { name "MBU.MBS.ECC23.MBECCFIR_MASK_AND"; @@ -345,112 +91,6 @@ access write_only; }; - register MBSECCFIR_1_ACT0 - { - name "MBU.MBS.ECC23.MBECCFIR_ACTION0"; - scomaddr 0x02011486; - capture type secondary; - capture group default; - capture group FirRegs; - capture group MaintCmdRegs_mba1; - capture req nonzero("MBSECCFIR_1"); - }; - - register MBSECCFIR_1_ACT1 - { - name "MBU.MBS.ECC23.MBECCFIR_ACTION0"; - scomaddr 0x02011487; - capture type secondary; - capture group default; - capture group FirRegs; - capture group MaintCmdRegs_mba1; - capture req nonzero("MBSECCFIR_1"); - }; - - ############################################################################ - # NEST Chiplet MCBISTFIR_0 - ############################################################################ - - register MCBISTFIR_0 - { - name "MBU.MBS.MCBISTS01.SCOMFIR.MBSFIRQ"; - scomaddr 0x02011600; - reset (&, 0x02011601); - mask (|, 0x02011605); - capture group default; - capture group FirRegs; - }; - - register MCBISTFIR_0_MASK - { - name "MBU.MBS.MCBISTS01.SCOMFIR.MBSFIRMASK"; - scomaddr 0x02011603; - capture group default; - capture group FirRegs; - }; - - register MCBISTFIR_0_ACT0 - { - name "MBU.MBS.MCBISTS01.SCOMFIR.MBSFIRACTION0"; - scomaddr 0x02011606; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("MCBISTFIR_0"); - }; - - register MCBISTFIR_0_ACT1 - { - name "MBU.MBS.MCBISTS01.SCOMFIR.MBSFIRACTION1"; - scomaddr 0x02011607; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("MCBISTFIR_0"); - }; - - ############################################################################ - # NEST Chiplet MCBISTFIR_1 - ############################################################################ - - register MCBISTFIR_1 - { - name "MBU.MBS.MCBISTS23.SCOMFIR.MBSFIRQ"; - scomaddr 0x02011700; - reset (&, 0x02011701); - mask (|, 0x02011705); - capture group default; - capture group FirRegs; - }; - - register MCBISTFIR_1_MASK - { - name "MBU.MBS.MCBISTS23.SCOMFIR.MBSFIRMASK"; - scomaddr 0x02011703; - capture group default; - capture group FirRegs; - }; - - register MCBISTFIR_1_ACT0 - { - name "MBU.MBS.MCBISTS23.SCOMFIR.MBSFIRACTION0"; - scomaddr 0x02011706; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("MCBISTFIR_1"); - }; - - register MCBISTFIR_1_ACT1 - { - name "MBU.MBS.MCBISTS23.SCOMFIR.MBSFIRACTION1"; - scomaddr 0x02011707; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("MCBISTFIR_1"); - }; - ############################################################################ # NEST Chiplet NESTFBISTFIR ############################################################################ @@ -465,63 +105,6 @@ capture group FirRegs; }; - ############################################################################ - # NEST Chiplet SCACFIR - ############################################################################ - - register SCACFIR - { - name "SCAC.SCAC_LFIR"; - scomaddr 0x020115c0; - reset (&, 0x020115c1); - mask (|, 0x020115c5); - capture group default; - capture group FirRegs; - }; - - register SCACFIR_MASK - { - name "SCAC.SCAC_FIRMASK"; - scomaddr 0x020115c3; - capture group default; - capture group FirRegs; - }; - - register SCACFIR_ACT0 - { - name "SCAC.SCAC_FIRACTION0"; - scomaddr 0x020115c6; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("SCACFIR"); - }; - - register SCACFIR_ACT1 - { - name "SCAC.SCAC_FIRACTION1"; - scomaddr 0x020115c7; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("SCACFIR"); - }; - - ############################################################################ - # 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); - capture group default; - capture group FirRegs; - }; - ############################################################################ # Error Report Registers ############################################################################ diff --git a/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_TP.rule b/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_TP.rule index b2fb6c52e..37c20f67d 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_TP.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_TP.rule @@ -5,7 +5,9 @@ # # OpenPOWER HostBoot Project # -# COPYRIGHT International Business Machines Corp. 2012,2014 +# Contributors Listed Below - COPYRIGHT 2012,2018 +# [+] International Business Machines Corp. +# # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,48 +23,10 @@ # # IBM_PROLOG_END_TAG - ############################################################################ - # TP Chiplet Registers - ############################################################################ - - register TP_CHIPLET_CS_FIR - { - name "TPTOP.TPC.XFIR"; - scomaddr 0x01040000; - capture group default; - capture group FirRegs; - }; - - register TP_CHIPLET_RE_FIR - { - name "TPTOP.TPC.RFIR"; - scomaddr 0x01040001; - capture group default; - capture group FirRegs; - }; - - register TP_CHIPLET_FIR_MASK - { - name "TPTOP.TPC.FIR_MASK"; - scomaddr 0x01040002; - capture group default; - capture group FirRegs; - }; - ############################################################################ # TP Chiplet LFIR ############################################################################ - register TP_LFIR - { - name "TPTOP.TPC.LOCAL_FIR"; - scomaddr 0x0104000a; - reset (&, 0x0104000b); - mask (|, 0x0104000f); - capture group default; - capture group FirRegs; - }; - register TP_LFIR_AND { name "TPTOP.TPC.LOCAL_FIR_AND"; @@ -71,14 +35,6 @@ access write_only; }; - register TP_LFIR_MASK - { - name "TPTOP.TPC.EPS.FIR.LOCAL_FIR_MASK"; - scomaddr 0x0104000d; - capture group default; - capture group FirRegs; - }; - register TP_LFIR_MASK_OR { name "TPTOP.TPC.EPS.FIR.LOCAL_FIR_MASK_OR"; @@ -87,26 +43,6 @@ access write_only; }; - register TP_LFIR_ACT0 - { - name "TPTOP.TPC.EPS.FIR.LOCAL_FIR_ACTION0"; - scomaddr 0x01040010; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("TP_LFIR"); - }; - - register TP_LFIR_ACT1 - { - name "TPTOP.TPC.EPS.FIR.LOCAL_FIR_ACTION1"; - scomaddr 0x01040011; - capture type secondary; - capture group default; - capture group FirRegs; - capture req nonzero("TP_LFIR"); - }; - ############################################################################ # Error Report Registers ############################################################################ diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.C index d934ab780..f6aa5b50a 100644 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2013,2017 */ +/* Contributors Listed Below - COPYRIGHT 2013,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -81,7 +81,7 @@ void addMemChipletFirRegs( ExtensibleChip * i_membChip, CaptureData & io_cd ) SCAN_COMM_REGISTER_CLASS * cs_global, * re_global, * spa_global; cs_global = i_membChip->getRegister("GLOBAL_CS_FIR"); re_global = i_membChip->getRegister("GLOBAL_RE_FIR"); - spa_global = i_membChip->getRegister("GLOBAL_SPA"); + spa_global = i_membChip->getRegister("GLOBAL_SPA_FIR"); l_rc = cs_global->Read() | re_global->Read() | spa_global->Read(); if ( SUCCESS != l_rc ) { diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C index 97e63249e..4053a5414 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C @@ -120,90 +120,6 @@ int32_t CheckForRecovered(ExtensibleChip * i_chip, //------------------------------------------------------------------------------ -/** - * @brief MBA0 is always analyzed before MBA1 in the rule code. - * This plugin will help prevent starvation of MBA1. - * @param i_membChip The Centaur Membuf chip. - * @param i_sc The step code data struct. - * @return FAIL if MBA1 is not analyzed. - */ -int32_t MBA1_Starvation( ExtensibleChip * i_membChip, - STEP_CODE_DATA_STRUCT & i_sc ) -{ - using namespace TARGETING; - CenMembufDataBundle * l_membdb = getMembufDataBundle(i_membChip); - - do - { - ExtensibleChip * mba1Chip = l_membdb->getMbaChip(1); - if ( NULL == mba1Chip ) break; // No MBA1 target, exit early - - if ( l_membdb->iv_analyzeMba1Starvation ) - { - // Get the mem chiplet register - SCAN_COMM_REGISTER_CLASS * l_memcFir = NULL; - uint32_t l_checkBits = 0; - switch ( i_sc.service_data->getSecondaryAttnType() ) - { - case CHECK_STOP: - l_memcFir = i_membChip->getRegister("MEM_CHIPLET_CS_FIR"); - // mba1 CS: bits 7, 8, 10, 13 - l_checkBits = 0x01A40000; - break; - case RECOVERABLE: - l_memcFir = i_membChip->getRegister("MEM_CHIPLET_RE_FIR"); - // mba1 RE: bits 5, 6, 8, 11 - l_checkBits = 0x06900000; - break; - case SPECIAL: - l_memcFir = i_membChip->getRegister("MEM_CHIPLET_SPA"); - // mba1 SA: bit 1 - l_checkBits = 0x40000000; - break; - default: ; - } - - if( NULL == l_memcFir ) - { - break; - } - - // Check if MBA1 from Mem Chiplet is reporting an attention - int32_t l_rc = l_memcFir->Read(); - if ( SUCCESS != l_rc ) - { - PRDF_ERR("[MBA1_Starvation] SCOM fail on 0x%08x", - i_membChip->GetId()); - break; - } - - uint32_t l_val = l_memcFir->GetBitFieldJustified(0,32); - if ( 0 == ( l_val & l_checkBits ) ) - { - break; // No MBA1 attentions - } - - // MBA0 takes priority next - l_membdb->iv_analyzeMba1Starvation = false; - - // Analyze MBA1 - return mba1Chip->Analyze( i_sc, - i_sc.service_data->getSecondaryAttnType() ); - } - else - { - // MBA1 takes priority next - l_membdb->iv_analyzeMba1Starvation = true; - } - - } while (0); - - return FAIL; -} -PRDF_PLUGIN_DEFINE( Membuf, MBA1_Starvation ); - -//------------------------------------------------------------------------------ - /** * @brief Analysis code that is called before the main analyze() function. * @param i_mbChip A MEMBUF chip. @@ -942,32 +858,6 @@ int32_t internalTimeout( ExtensibleChip * i_mbChip, //------------------------------------------------------------------------------ -/** - * @brief Checks DD level. If DD1, implements the DD1 callout actions for - * MBSFIR bit 30. - * @param i_membChip Centaur chip - * @param i_sc Step code data struct - * @returns SUCCESS if DD1, FAIL otherwise - */ -int32_t mbsfirBit30_dd1( ExtensibleChip * i_membChip, - STEP_CODE_DATA_STRUCT & i_sc ) -{ - int32_t l_rc = FAIL; - TargetHandle_t l_membTrgt = i_membChip->GetChipHandle(); - if(0x20 > getChipLevel(l_membTrgt)) - { - i_sc.service_data->SetCallout(l_membTrgt, MRU_MED); - ClearServiceCallFlag(i_membChip, i_sc); - i_sc.service_data->SetErrorSig( PRDFSIG_MbsFir_30_DD1Signature ); - l_rc = SUCCESS; - } - - return l_rc; -} -PRDF_PLUGIN_DEFINE( Membuf, mbsfirBit30_dd1 ); - -//------------------------------------------------------------------------------ - // Define the plugins for memory ECC errors. #define PLUGIN_FETCH_ECC_ERROR( TYPE, MBA ) \ int32_t AnalyzeFetch##TYPE##MBA( ExtensibleChip * i_membChip, \ -- cgit v1.2.1