summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common/plat/centaur
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2018-10-31 12:18:13 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2018-11-07 12:12:29 -0600
commitb12a2a3c601c5e2a87640a78fd4c2ef079cfb0ca (patch)
tree8bef0eafe95aadce0873b4f3e451129051d7221c /src/usr/diag/prdf/common/plat/centaur
parentca2ceb0720d677fd42cb8154772225869f06c489 (diff)
downloadtalos-hostboot-b12a2a3c601c5e2a87640a78fd4c2ef079cfb0ca.tar.gz
talos-hostboot-b12a2a3c601c5e2a87640a78fd4c2ef079cfb0ca.zip
PRD: Created Centaur specific rule files
Change-Id: I93b9748eafb2a9fd1e49eab193195722652391d7 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/68226 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/68277 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr/diag/prdf/common/plat/centaur')
-rw-r--r--src/usr/diag/prdf/common/plat/centaur/centaur_common_actions.rule176
-rw-r--r--src/usr/diag/prdf/common/plat/centaur/centaur_mba.rule671
-rw-r--r--src/usr/diag/prdf/common/plat/centaur/centaur_mba_actions.rule54
-rw-r--r--src/usr/diag/prdf/common/plat/centaur/centaur_mba_regs.rule190
-rw-r--r--src/usr/diag/prdf/common/plat/centaur/centaur_membuf.rule2238
-rw-r--r--src/usr/diag/prdf/common/plat/centaur/centaur_membuf_actions.rule244
-rw-r--r--src/usr/diag/prdf/common/plat/centaur/centaur_membuf_regs.rule620
7 files changed, 4193 insertions, 0 deletions
diff --git a/src/usr/diag/prdf/common/plat/centaur/centaur_common_actions.rule b/src/usr/diag/prdf/common/plat/centaur/centaur_common_actions.rule
new file mode 100644
index 000000000..31ca6e304
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/centaur/centaur_common_actions.rule
@@ -0,0 +1,176 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/centaur/centaur_common_actions.rule $
+#
+# OpenPOWER HostBoot Project
+#
+# Contributors Listed Below - COPYRIGHT 2017,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.
+# 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
+
+################################################################################
+# This file is intended to create a common set of actionclasses for all rule
+# files.
+#
+# NOTE: THESE ACTIONCLASSES WILL BE CREATED FOR ALL RULE FILES, REGARDLESS IF
+# THEY ARE ACTUALLY USED. PLEASE LIMIT THIS FILE TO RELATIVELY COMMON
+# ACTIONS. OTHERWISE, IT WILL CAUSE UNWANTED CODE BLOAT AND MEMORY USAGE.
+#
+# Simply add the following line at the top the actionclass section of each rule
+# file:
+#
+# .include "cen_common_actions.rule"
+#
+# Note that no indentation can be used for the .include keyword.
+################################################################################
+
+################################################################################
+# Thresholds #
+################################################################################
+
+# Threshold syntax:
+# threshold( field(<timebase>) [, mfg(<timebase>)|mfg_file(<mfg_theshold>)] );
+#
+# Timebase syntax:
+# <threshold_count> [/ [timbase_count] <sec|min|hour|day>]
+#
+# Note that <mfg_theshold> can be found in prdfMfgThresholds.lst
+#
+# Examples:
+# threshold( field( 1 ) );
+# threshold( field(32 / day) );
+# threshold( field( 5 / 2 min) );
+# threshold( field(32 / 1 day), mfg(2 / hour) );
+# threshold( field( 2 / min), mfg(1 ) );
+# threshold( field(32 / day), mfg_file(P8CHIP_OFFNODE_BUS_CES) );
+
+/** Threshold of 1 */
+actionclass threshold1
+{
+ threshold( field(1) );
+};
+
+/** Threshold of 32 per day */
+actionclass threshold32pday
+{
+ threshold( field(32 / day) );
+};
+
+/** Threshold of 5 per hour */
+actionclass threshold5phour
+{
+ threshold( field(5 / hour) );
+};
+
+################################################################################
+# Threshold and Mask policy
+################################################################################
+
+/**
+ * Threshold 32/day (field) and 1 (mnfg). Do not predictively callout on
+ * threshold in the field, instead just mask.
+ */
+actionclass threshold_and_mask
+{
+ threshold32pday;
+ funccall("ClearServiceCallFlag");
+};
+
+actionclass threshold_and_mask_self { calloutSelfMed; threshold_and_mask; };
+
+################################################################################
+# Special Flags #
+################################################################################
+
+/** SUE source */
+actionclass SueSource { flag(UERE); };
+
+/** SUE originated from somewhere else */
+actionclass SueSeen { flag(SUE); };
+
+################################################################################
+# Simple Callouts #
+################################################################################
+
+# Callout self
+actionclass calloutSelfHigh { callout(MRU_HIGH); };
+actionclass calloutSelfMed { callout(MRU_MED); };
+actionclass calloutSelfMedA { callout(MRU_MEDA); };
+actionclass calloutSelfLow { callout(MRU_LOW); };
+
+# 2nd Level Support
+actionclass callout2ndLvlMed
+{ callout(procedure(LEVEL2_SUPPORT), MRU_MED); };
+
+/** Callout self with low priority but don't gard it */
+actionclass calloutSelfLowNoGard
+{ callout(MRU_LOW, NO_GARD); };
+
+################################################################################
+# Callouts with thresholds #
+################################################################################
+
+actionclass self_th_1
+{
+ calloutSelfMed;
+ threshold1;
+};
+
+actionclass self_th_5perHour
+{
+ calloutSelfMed;
+ threshold5phour;
+};
+
+actionclass self_th_32perDay
+{
+ calloutSelfMed;
+ threshold32pday;
+};
+
+actionclass level2_th_1
+{
+ callout2ndLvlMed;
+ threshold1;
+};
+
+################################################################################
+# Callouts with flags #
+################################################################################
+
+actionclass self_th_1_UERE { self_th_1; SueSource; };
+actionclass level2_th_1_UERE { level2_th_1; SueSource; };
+
+################################################################################
+# Default callouts #
+################################################################################
+
+/** Default action for an unexpected unmasked bit */
+actionclass defaultMaskedError
+{
+ callout2ndLvlMed;
+ threshold1;
+};
+
+/** Default TBD action */
+actionclass TBDDefaultCallout
+{
+ callout2ndLvlMed;
+ threshold( field(32 / day), mfg(32 / day) );
+};
+
diff --git a/src/usr/diag/prdf/common/plat/centaur/centaur_mba.rule b/src/usr/diag/prdf/common/plat/centaur/centaur_mba.rule
new file mode 100644
index 000000000..df76fe032
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/centaur/centaur_mba.rule
@@ -0,0 +1,671 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/centaur/centaur_mba.rule $
+#
+# OpenPOWER HostBoot Project
+#
+# 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.
+# 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
+
+chip centaur_mba
+{
+ name "Centaur MBA chiplet";
+ targettype TYPE_MBA;
+ sigoff 0x9000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+.include "prdfMemExtraSig.H";
+.include "prdfCenMbaExtraSig.H";
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # Centaur chip MBA target MBACALFIR
+ ############################################################################
+
+ register MBACALFIR
+ {
+ name "Centaur chip MBA target MBACALFIR";
+ scomaddr 0x03010400;
+ reset (&, 0x03010401);
+ mask (|, 0x03010405);
+ capture group default;
+ };
+
+ register MBACALFIR_MASK
+ {
+ name "Centaur chip MBA target MBACALFIR MASK";
+ scomaddr 0x03010403;
+ capture group default;
+ };
+
+ register MBACALFIR_ACT0
+ {
+ name "Centaur chip MBA target MBACALFIR ACT0";
+ scomaddr 0x03010406;
+ capture group default;
+ capture req nonzero("MBACALFIR");
+ };
+
+ register MBACALFIR_ACT1
+ {
+ name "Centaur chip MBA target MBACALFIR ACT1";
+ scomaddr 0x03010407;
+ capture group default;
+ capture req nonzero("MBACALFIR");
+ };
+
+ ############################################################################
+ # Centaur chip MBA target MBASECUREFIR
+ ############################################################################
+
+ # This register is hardwired to channel failure (checkstop) and we cannot
+ # mask or change the state of the action registers.
+ register MBASECUREFIR
+ {
+ name "Centaur chip MBA target MBASECUREFIR";
+ scomaddr 0x0301041b;
+ reset (&, 0x0301041c);
+ capture group default;
+ };
+
+ ############################################################################
+ # Centaur chip MBA target MBAFIR
+ ############################################################################
+
+ register MBAFIR
+ {
+ name "Centaur chip MBA target MBAFIR";
+ scomaddr 0x03010600;
+ reset (&, 0x03010601);
+ mask (|, 0x03010605);
+ capture group default;
+ };
+
+ register MBAFIR_MASK
+ {
+ name "Centaur chip MBA target MBAFIR MASK";
+ scomaddr 0x03010603;
+ capture group default;
+ };
+
+ register MBAFIR_ACT0
+ {
+ name "Centaur chip MBA target MBAFIR ACT0";
+ scomaddr 0x03010606;
+ capture group default;
+ capture req nonzero("MBAFIR");
+ };
+
+ register MBAFIR_ACT1
+ {
+ name "Centaur chip MBA target MBAFIR ACT1";
+ scomaddr 0x03010607;
+ capture group default;
+ capture req nonzero("MBAFIR");
+ };
+
+ ############################################################################
+ # Centaur chip MBA target MBASPA
+ ############################################################################
+
+ register MBASPA
+ {
+ name "Centaur chip MBA target MBASPA";
+ scomaddr 0x03010611;
+ reset (&, 0x03010612);
+ mask (|, 0x03010614);
+ capture group default;
+ capture group MaintCmdRegs;
+ };
+
+ register MBASPA_MASK
+ {
+ name "Centaur chip MBA target MBASPA MASK";
+ scomaddr 0x03010614;
+ capture group default;
+ capture group MaintCmdRegs;
+ };
+
+ ############################################################################
+ # Centaur chip MBA target MBADDRPHYFIR
+ ############################################################################
+
+ register MBADDRPHYFIR
+ {
+ name "Centaur chip MBA target MBADDRPHYFIR";
+ scomaddr 0x800200900301143F;
+ reset (&, 0x800200910301143F);
+ mask (|, 0x800200950301143F);
+ capture group default;
+ };
+
+ register MBADDRPHYFIR_MASK
+ {
+ name "Centaur chip MBA target MBADDRPHYFIR MASK";
+ scomaddr 0x800200930301143F;
+ capture group default;
+ };
+
+ register MBADDRPHYFIR_ACT0
+ {
+ name "Centaur chip MBA target MBADDRPHYFIR ACT0";
+ scomaddr 0x800200960301143F;
+ capture group default;
+ capture req nonzero("MBADDRPHYFIR");
+ };
+
+ register MBADDRPHYFIR_ACT1
+ {
+ name "Centaur chip MBA target MBADDRPHYFIR ACT1";
+ scomaddr 0x800200970301143F;
+ capture group default;
+ capture req nonzero("MBADDRPHYFIR");
+ };
+
+# Include registers not defined by the xml
+.include "centaur_mba_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# Summary for MBA
+################################################################################
+
+rule rMBA
+{
+ UNIT_CS:
+ summary( 0, rMBACALFIR ) |
+ summary( 1, rMBASECUREFIR ) |
+ summary( 2, rMBAFIR ) |
+ summary( 3, rMBADDRPHYFIR );
+
+ RECOVERABLE:
+ summary( 0, rMBACALFIR ) |
+ summary( 1, rMBASECUREFIR ) |
+ summary( 2, rMBAFIR ) |
+ summary( 3, rMBADDRPHYFIR );
+
+ HOST_ATTN:
+ summary( 4, rMBASPA );
+};
+
+# The MBACALFIR must be analyzed first so that the RCD parity errors are the
+# first to be analyzed.
+group gMBA attntype UNIT_CS, RECOVERABLE, HOST_ATTN filter singlebit
+{
+ (rMBA, bit(0)) ? analyze(gMBACALFIR);
+ (rMBA, bit(1)) ? analyze(gMBASECUREFIR);
+ (rMBA, bit(2)) ? analyze(gMBAFIR);
+ (rMBA, bit(3)) ? analyze(gMBADDRPHYFIR);
+ (rMBA, bit(4)) ? analyze(gMBASPA);
+};
+
+################################################################################
+# Centaur chip MBA target MBACALFIR
+################################################################################
+
+rule rMBACALFIR
+{
+ UNIT_CS:
+ MBACALFIR & ~MBACALFIR_MASK & ~MBACALFIR_ACT0 & ~MBACALFIR_ACT1;
+ RECOVERABLE:
+ MBACALFIR & ~MBACALFIR_MASK & ~MBACALFIR_ACT0 & MBACALFIR_ACT1;
+};
+
+# RCD parity errors (bits 4 and 7) given priority over potential side effects
+# bits 2 and 17.
+group gMBACALFIR filter priority( 4, 7 ),
+ cs_root_cause( 0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 13, 15, 17, 18 )
+{
+ /** MBACALFIR[0]
+ * MBA_RECOVERABLE_ERROR
+ */
+ (rMBACALFIR, bit(0)) ? self_th_1;
+
+ /** MBACALFIR[1]
+ * MBA_NONRECOVERABLE_ERROR
+ */
+ (rMBACALFIR, bit(1)) ? self_th_1_UERE;
+
+ /** MBACALFIR[2]
+ * REFRESH_OVERRUN
+ */
+ (rMBACALFIR, bit(2)) ? self_th_32perDay;
+
+ /** MBACALFIR[3]
+ * WAT_ERROR
+ */
+ (rMBACALFIR, bit(3)) ? defaultMaskedError;
+
+ /** MBACALFIR[4]
+ * RCD parity error on port 0
+ */
+ (rMBACALFIR, bit(4)) ? rcd_parity_error_port0_UERE;
+
+ /** MBACALFIR[5]
+ * DDR0_CAL_TIMEOUT_ERR
+ */
+ (rMBACALFIR, bit(5)) ? self_th_1;
+
+ /** MBACALFIR[6]
+ * DDR1_CAL_TIMEOUT_ERR
+ */
+ (rMBACALFIR, bit(6)) ? self_th_1;
+
+ /** MBACALFIR[7]
+ * RCD parity error on port 1
+ */
+ (rMBACALFIR, bit(7)) ? rcd_parity_error_port1_UERE;
+
+ /** MBACALFIR[8]
+ * MBX_TO_MBA_PAR_ERROR
+ */
+ (rMBACALFIR, bit(8)) ? self_th_1_UERE;
+
+ /** MBACALFIR[9]
+ * MBA_WRD_UE
+ */
+ (rMBACALFIR, bit(9)) ? self_th_1_UERE;
+
+ /** MBACALFIR[10]
+ * MBA_WRD_CE
+ */
+ (rMBACALFIR, bit(10)) ? threshold_and_mask_self;
+
+ /** MBACALFIR[11]
+ * MBA_MAINT_UE
+ */
+ (rMBACALFIR, bit(11)) ? self_th_1_UERE;
+
+ /** MBACALFIR[12]
+ * MBA_MAINT_CE
+ */
+ (rMBACALFIR, bit(12)) ? self_th_32perDay;
+
+ /** MBACALFIR[13]
+ * DDR_CAL_RESET_TIMEOUT
+ */
+ (rMBACALFIR, bit(13)) ? self_th_1_UERE;
+
+ /** MBACALFIR[14]
+ * WRQ_DATA_CE
+ */
+ (rMBACALFIR, bit(14)) ? threshold_and_mask_self;
+
+ /** MBACALFIR[15]
+ * WRQ_DATA_UE
+ */
+ (rMBACALFIR, bit(15)) ? self_th_1_UERE;
+
+ /** MBACALFIR[16]
+ * WRQ_DATA_SUE
+ */
+ (rMBACALFIR, bit(16)) ? defaultMaskedError;
+
+ /** MBACALFIR[17]
+ * WRQ_RRQ_HANG_ERR
+ */
+ (rMBACALFIR, bit(17)) ? self_th_1;
+
+ /** MBACALFIR[18]
+ * SM_1HOT_ERR
+ */
+ (rMBACALFIR, bit(18)) ? self_th_1_UERE;
+
+ /** MBACALFIR[19]
+ * WRD_SCOM_ERROR
+ */
+ (rMBACALFIR, bit(19)) ? threshold_and_mask_self;
+
+ /** MBACALFIR[20]
+ * RHMR_PRIM_REACHED_MAX
+ */
+ (rMBACALFIR, bit(20)) ? defaultMaskedError;
+
+ /** MBACALFIR[21]
+ * RHMR_SEC_REACHED_MAX
+ */
+ (rMBACALFIR, bit(21)) ? defaultMaskedError;
+
+ /** MBACALFIR[22]
+ * RHMR_SEC_ALREADY_FULL
+ */
+ (rMBACALFIR, bit(22)) ? defaultMaskedError;
+
+ /** MBACALFIR[23]
+ * Reserved
+ */
+ (rMBACALFIR, bit(23)) ? defaultMaskedError;
+
+ /** MBACALFIR[24]
+ * SCOM FIR error
+ */
+ (rMBACALFIR, bit(24)) ? threshold_and_mask_self;
+
+ /** MBACALFIR[25]
+ * SCOM FIR error clone
+ */
+ (rMBACALFIR, bit(25)) ? threshold_and_mask_self;
+
+};
+
+################################################################################
+# Centaur chip MBA target MBASECUREFIR
+################################################################################
+
+rule rMBASECUREFIR
+{
+ UNIT_CS:
+ MBASECUREFIR;
+};
+
+group gMBASECUREFIR filter singlebit, cs_root_cause( 0, 1, 2, 3, 4, 5 )
+{
+ /** MBASECUREFIR[0]
+ * Invalid MBA_CALQ0 access
+ */
+ (rMBASECUREFIR, bit(0)) ? level2_th_1_UERE;
+
+ /** MBASECUREFIR[1]
+ * Invalid MBA_CALQ1 access
+ */
+ (rMBASECUREFIR, bit(1)) ? level2_th_1_UERE;
+
+ /** MBASECUREFIR[2]
+ * Invalid MBA_CAL2Q access
+ */
+ (rMBASECUREFIR, bit(2)) ? level2_th_1_UERE;
+
+ /** MBASECUREFIR[3]
+ * Invalid MBA_CAL3Q access
+ */
+ (rMBASECUREFIR, bit(3)) ? level2_th_1_UERE;
+
+ /** MBASECUREFIR[4]
+ * Invalid DDR config reg access
+ */
+ (rMBASECUREFIR, bit(4)) ? level2_th_1_UERE;
+
+ /** MBASECUREFIR[5]
+ * Invalid SIR mask or action reg access
+ */
+ (rMBASECUREFIR, bit(5)) ? level2_th_1_UERE;
+
+};
+
+################################################################################
+# Centaur chip MBA target MBAFIR
+################################################################################
+
+rule rMBAFIR
+{
+ UNIT_CS:
+ MBAFIR & ~MBAFIR_MASK & ~MBAFIR_ACT0 & ~MBAFIR_ACT1;
+ RECOVERABLE:
+ MBAFIR & ~MBAFIR_MASK & ~MBAFIR_ACT0 & MBAFIR_ACT1;
+};
+
+group gMBAFIR filter singlebit, cs_root_cause( 3, 5, 6, 7, 8 )
+{
+ /** MBAFIR[0]
+ * Invalid Maintenance Command
+ */
+ (rMBAFIR, bit(0)) ? defaultMaskedError;
+
+ /** MBAFIR[1]
+ * Invalid Maintenance Address
+ */
+ (rMBAFIR, bit(1)) ? defaultMaskedError;
+
+ /** MBAFIR[2]
+ * Multi-address Maintenance Cmd Timeout
+ */
+ (rMBAFIR, bit(2)) ? self_th_1;
+
+ /** MBAFIR[3]
+ * Internal FSM parity error
+ */
+ (rMBAFIR, bit(3)) ? self_th_1_UERE;
+
+ /** MBAFIR[4]
+ * MCBIST error
+ */
+ (rMBAFIR, bit(4)) ? defaultMaskedError;
+
+ /** MBAFIR[5]
+ * SCOM command register parity error
+ */
+ (rMBAFIR, bit(5)) ? self_th_1_UERE;
+
+ /** MBAFIR[6]
+ * Unrecoverable channel error
+ */
+ (rMBAFIR, bit(6)) ? self_th_1_UERE;
+
+ /** MBAFIR[7]
+ * UE or CE Error in WRD caw2 data latches
+ */
+ (rMBAFIR, bit(7)) ? self_th_1_UERE;
+
+ /** MBAFIR[8]
+ * Illegal transition maint state machine
+ */
+ (rMBAFIR, bit(8)) ? self_th_1_UERE;
+
+ /** MBAFIR[9:14]
+ * RESERVED
+ */
+ (rMBAFIR, bit(9|10|11|12|13|14)) ? defaultMaskedError;
+
+ /** MBAFIR[15]
+ * SCOM Internal Error
+ */
+ (rMBAFIR, bit(15)) ? threshold_and_mask_self;
+
+ /** MBAFIR[16]
+ * SCOM Internal Error Copy
+ */
+ (rMBAFIR, bit(16)) ? threshold_and_mask_self;
+
+};
+
+################################################################################
+# Centaur chip MBA target MBASPA
+################################################################################
+
+rule rMBASPA
+{
+ HOST_ATTN:
+ MBASPA & ~MBASPA_MASK;
+};
+
+group gMBASPA filter singlebit, cs_root_cause
+{
+ /** MBASPA[0]
+ * Maintenance command complete
+ */
+ (rMBASPA, bit(0)) ? maint_cmd_complete;
+
+ /** MBASPA[1]
+ * Hard NCE ETE
+ */
+ (rMBASPA, bit(1)) ? defaultMaskedError;
+
+ /** MBASPA[2]
+ * Soft NCE ETE
+ */
+ (rMBASPA, bit(2)) ? defaultMaskedError;
+
+ /** MBASPA[3]
+ * Intermittent NCE ETE
+ */
+ (rMBASPA, bit(3)) ? defaultMaskedError;
+
+ /** MBASPA[4]
+ * Retry CE ETE
+ */
+ (rMBASPA, bit(4)) ? defaultMaskedError;
+
+ /** MBASPA[5]
+ * Emergency throttle action detected
+ */
+ (rMBASPA, bit(5)) ? defaultMaskedError;
+
+ /** MBASPA[6]
+ * Firmware generated attention 0
+ */
+ (rMBASPA, bit(6)) ? defaultMaskedError;
+
+ /** MBASPA[7]
+ * Firmware generated attention 1
+ */
+ (rMBASPA, bit(7)) ? defaultMaskedError;
+
+ /** MBASPA[8]
+ * WAT debug attention
+ */
+ (rMBASPA, bit(8)) ? defaultMaskedError;
+
+ /** MBASPA[9]
+ * Spare
+ */
+ (rMBASPA, bit(9)) ? defaultMaskedError;
+
+ /** MBASPA[10]
+ * MCBIST done
+ */
+ (rMBASPA, bit(10)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# Centaur chip MBA target MBADDRPHYFIR
+################################################################################
+
+rule rMBADDRPHYFIR
+{
+ UNIT_CS:
+ MBADDRPHYFIR & ~MBADDRPHYFIR_MASK & ~MBADDRPHYFIR_ACT0 & ~MBADDRPHYFIR_ACT1;
+ RECOVERABLE:
+ MBADDRPHYFIR & ~MBADDRPHYFIR_MASK & ~MBADDRPHYFIR_ACT0 & MBADDRPHYFIR_ACT1;
+};
+
+group gMBADDRPHYFIR filter singlebit, cs_root_cause( 48, 49, 51, 52, 56, 57, 59, 60 )
+{
+ /** MBADDRPHYFIR[48]
+ * FSM Error Checkstop
+ */
+ (rMBADDRPHYFIR, bit(48)) ? self_th_1_UERE;
+
+ /** MBADDRPHYFIR[49]
+ * Parity Error Checkstop
+ */
+ (rMBADDRPHYFIR, bit(49)) ? self_th_1_UERE;
+
+ /** MBADDRPHYFIR[50]
+ * Calibration Error RE
+ */
+ (rMBADDRPHYFIR, bit(50)) ? defaultMaskedError;
+
+ /** MBADDRPHYFIR[51]
+ * FSM Recoverable Error
+ */
+ (rMBADDRPHYFIR, bit(51)) ? self_th_32perDay;
+
+ /** MBADDRPHYFIR[52]
+ * Parity Recoverable Error
+ */
+ (rMBADDRPHYFIR, bit(52)) ? self_th_32perDay;
+
+ /** MBADDRPHYFIR[53]
+ * Parity Recoverable Error
+ */
+ (rMBADDRPHYFIR, bit(53)) ? threshold_and_mask_self;
+
+ /** MBADDRPHYFIR[54:55]
+ * Reserved
+ */
+ (rMBADDRPHYFIR, bit(54|55)) ? defaultMaskedError;
+
+ /** MBADDRPHYFIR[56]
+ * FSM Error Checkstop
+ */
+ (rMBADDRPHYFIR, bit(56)) ? self_th_1_UERE;
+
+ /** MBADDRPHYFIR[57]
+ * Parity Error Checkstop
+ */
+ (rMBADDRPHYFIR, bit(57)) ? self_th_1_UERE;
+
+ /** MBADDRPHYFIR[58]
+ * Calibration Error RE
+ */
+ (rMBADDRPHYFIR, bit(58)) ? defaultMaskedError;
+
+ /** MBADDRPHYFIR[59]
+ * FSM Recoverable Error
+ */
+ (rMBADDRPHYFIR, bit(59)) ? self_th_32perDay;
+
+ /** MBADDRPHYFIR[60]
+ * Parity Recoverable Error
+ */
+ (rMBADDRPHYFIR, bit(60)) ? self_th_32perDay;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the common action set.
+.include "centaur_common_actions.rule";
+# Include the chip-specific action set.
+.include "centaur_mba_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/centaur/centaur_mba_actions.rule b/src/usr/diag/prdf/common/plat/centaur/centaur_mba_actions.rule
new file mode 100644
index 000000000..cabfe8203
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/centaur/centaur_mba_actions.rule
@@ -0,0 +1,54 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/centaur/centaur_mba_actions.rule $
+#
+# OpenPOWER HostBoot Project
+#
+# Contributors Listed Below - COPYRIGHT 2017,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.
+# 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
+
+/** Analyze maintenance command complete */
+actionclass maint_cmd_complete
+{
+ funccall("MaintCmdComplete");
+};
+
+/** Analyze RCD parity error */
+actionclass rcd_parity_error_UERE
+{
+ funccall("MaskRcdParitySideEffects");
+ calloutSelfLowNoGard;
+ threshold1;
+ SueSource;
+};
+
+/** Analyze RCD parity error on port 0 */
+actionclass rcd_parity_error_port0_UERE
+{
+ funccall("CalloutDimmsOnPort0");
+ rcd_parity_error_UERE;
+};
+
+/** Analyze RCD parity error on port 0 */
+actionclass rcd_parity_error_port1_UERE
+{
+ funccall("CalloutDimmsOnPort1");
+ rcd_parity_error_UERE;
+};
+
diff --git a/src/usr/diag/prdf/common/plat/centaur/centaur_mba_regs.rule b/src/usr/diag/prdf/common/plat/centaur/centaur_mba_regs.rule
new file mode 100644
index 000000000..63617f6f4
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/centaur/centaur_mba_regs.rule
@@ -0,0 +1,190 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/centaur/centaur_mba_regs.rule $
+#
+# OpenPOWER HostBoot Project
+#
+# Contributors Listed Below - COPYRIGHT 2017,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.
+# 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
+
+ ############################################################################
+ # Centaur chip MBA target MBACALFIR
+ ############################################################################
+
+ register MBACALFIR_AND
+ {
+ name "Centaur chip MBA target MBACALFIR atomic AND";
+ scomaddr 0x03010401;
+ capture group never;
+ access write_only;
+ };
+
+ register MBACALFIR_MASK_OR
+ {
+ name "Centaur chip MBA target MBACALFIR_MASK atomic OR";
+ scomaddr 0x03010405;
+ capture group never;
+ access write_only;
+ };
+
+ ############################################################################
+ # Centaur chip MBA target MBAFIR
+ ############################################################################
+
+ register MBAFIR_MASK_OR
+ {
+ name "Centaur chip MBA target MBAFIR_MASK atomic OR";
+ scomaddr 0x03010605;
+ capture group never;
+ access write_only;
+ };
+
+ ############################################################################
+ # Centaur chip MBA target MBASPA
+ ############################################################################
+
+ register MBASPA_AND
+ {
+ name "Centaur chip MBA target MBASPA atomic AND";
+ scomaddr 0x03010612;
+ capture group never;
+ access write_only;
+ };
+
+ register MBASPA_OR
+ {
+ name "Centaur chip MBA target MBASPA atomic OR";
+ scomaddr 0x03010613;
+ capture group never;
+ access write_only;
+ };
+
+ ############################################################################
+ # Centaur chip MBA target MBADDRPHYFIR
+ ############################################################################
+
+ register MBADDRPHYFIR_AND
+ {
+ name "Centaur chip MBA target MBADDRPHYFIR atomic AND";
+ scomaddr 0x800200910301143F;
+ capture group never;
+ access write_only;
+ };
+
+ ############################################################################
+ # Error Report Registers
+ ############################################################################
+
+ register MBA_ERR_REPORT
+ {
+ name "MBU.MBA_SRQ.MBA_ERR_REPORTQ";
+ scomaddr 0x0301041A;
+ capture group default;
+ };
+
+ register MBA_MCBERRPTQ
+ {
+ name "MBU.MBA_MCBIST.SCOMFIR.MBA_MCBERRPTQ";
+ scomaddr 0x030106E7;
+ capture group default;
+ };
+
+ register DDRPHY_APB_FIR_ERR0_P0
+ {
+ name "DDRPHY_APB_FIR_ERR0_P0";
+ scomaddr 0x8000D0060301143F;
+ capture group default;
+ };
+
+ register DDRPHY_APB_FIR_ERR1_P0
+ {
+ name "DDRPHY_APB_FIR_ERR1_P0";
+ scomaddr 0x8000D0070301143F;
+ capture group default;
+ };
+
+ register DDRPHY_APB_FIR_ERR0_P1
+ {
+ name "DDRPHY_APB_FIR_ERR0_P1";
+ scomaddr 0x8001D0060301143F;
+ capture group default;
+ };
+
+ register DDRPHY_APB_FIR_ERR1_P1
+ {
+ name "DDRPHY_APB_FIR_ERR1_P1";
+ scomaddr 0x8001D0070301143F;
+ capture group default;
+ };
+
+ ############################################################################
+ # Maintenance Command Registers
+ ############################################################################
+
+ register MBMCT
+ {
+ name "MBA Maintenance Command Type Register";
+ scomaddr 0x0301060A;
+ capture group default;
+ capture group MaintCmdRegs;
+ };
+
+ # NOTE: PRD doesn't use MBMCC directly and the bits are cleared by HW so no
+ # reason to add it here.
+
+ register MBMSR
+ {
+ name "MBA Maintenance Command Status Register";
+ scomaddr 0x0301060C;
+ capture group default;
+ capture group MaintCmdRegs;
+ };
+
+ register MBMACA
+ {
+ name "MBA Maintenance Command Start Address Register";
+ scomaddr 0x0301060D;
+ capture group default;
+ capture group MaintCmdRegs;
+ };
+
+ register MBMEA
+ {
+ name "MBA Maintenance Command End Address Register";
+ scomaddr 0x0301060E;
+ capture group default;
+ capture group MaintCmdRegs;
+ };
+
+ register MBASCTL
+ {
+ name "MBA Memory Scrub/Read Control Register";
+ scomaddr 0x0301060F;
+ capture group default;
+ capture group MaintCmdRegs;
+ };
+
+ register MBAECTL
+ {
+ name "MBA Error Control Register";
+ scomaddr 0x03010610;
+ capture group default;
+ capture group MaintCmdRegs;
+ };
+
diff --git a/src/usr/diag/prdf/common/plat/centaur/centaur_membuf.rule b/src/usr/diag/prdf/common/plat/centaur/centaur_membuf.rule
new file mode 100644
index 000000000..eee5782de
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/centaur/centaur_membuf.rule
@@ -0,0 +1,2238 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/centaur/centaur_membuf.rule $
+#
+# OpenPOWER HostBoot Project
+#
+# Contributors Listed Below - COPYRIGHT 2016,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.
+# 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
+
+chip centaur_membuf
+{
+ name "Centaur chip";
+ targettype TYPE_MEMBUF;
+ sigoff 0x9000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+#Import signatures
+.include "prdfP9ProcMbCommonExtraSig.H";
+.include "prdfLaneRepairExtraSig.H";
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # Global Attention FIR
+ ############################################################################
+
+ register GLOBAL_CS_FIR
+ {
+ name "Global Checkstop Attention FIR";
+ scomaddr 0x500F001C;
+ capture group default;
+ };
+
+ register GLOBAL_RE_FIR
+ {
+ name "Global Recoverable Attention FIR";
+ scomaddr 0x500F001B;
+ capture group default;
+ };
+
+ ############################################################################
+ # Global Special Attention FIR
+ ############################################################################
+
+ register GLOBAL_SPA_FIR
+ {
+ name "Global Special Attention FIR";
+ scomaddr 0x500F001A;
+ capture group default;
+ };
+
+ ############################################################################
+ # TP Chiplet FIR
+ ############################################################################
+
+ register TP_CHIPLET_CS_FIR
+ {
+ name "TP Chiplet Checkstop FIR";
+ scomaddr 0x01040000;
+ capture group default;
+ };
+
+ register TP_CHIPLET_RE_FIR
+ {
+ name "TP Chiplet Recoverable FIR";
+ scomaddr 0x01040001;
+ capture group default;
+ };
+
+ register TP_CHIPLET_FIR_MASK
+ {
+ name "TP Chiplet FIR MASK";
+ scomaddr 0x01040002;
+ capture group default;
+ };
+
+ ############################################################################
+ # Centaur chip TP_LFIR
+ ############################################################################
+
+ register TP_LFIR
+ {
+ name "Centaur chip TP_LFIR";
+ scomaddr 0x0104000A;
+ reset (&, 0x0104000B);
+ mask (|, 0x0104000F);
+ capture group default;
+ };
+
+ register TP_LFIR_MASK
+ {
+ name "Centaur chip TP_LFIR MASK";
+ scomaddr 0x0104000D;
+ capture group default;
+ };
+
+ register TP_LFIR_ACT0
+ {
+ name "Centaur chip TP_LFIR ACT0";
+ scomaddr 0x01040010;
+ capture group default;
+ capture req nonzero("TP_LFIR");
+ };
+
+ register TP_LFIR_ACT1
+ {
+ name "Centaur chip TP_LFIR ACT1";
+ scomaddr 0x01040011;
+ capture group default;
+ capture req nonzero("TP_LFIR");
+ };
+
+ ############################################################################
+ # NEST Chiplet FIR
+ ############################################################################
+
+ register NEST_CHIPLET_CS_FIR
+ {
+ name "NEST Chiplet Checkstop FIR";
+ scomaddr 0x02040000;
+ capture group default;
+ };
+
+ register NEST_CHIPLET_RE_FIR
+ {
+ name "NEST Chiplet Recoverable FIR";
+ scomaddr 0x02040001;
+ capture group default;
+ };
+
+ register NEST_CHIPLET_FIR_MASK
+ {
+ name "NEST Chiplet FIR MASK";
+ scomaddr 0x02040002;
+ capture group default;
+ };
+
+ ############################################################################
+ # Centaur chip NEST_LFIR
+ ############################################################################
+
+ register NEST_LFIR
+ {
+ name "Centaur chip NEST_LFIR";
+ scomaddr 0x0204000A;
+ reset (&, 0x0204000B);
+ mask (|, 0x0204000F);
+ capture group default;
+ };
+
+ register NEST_LFIR_MASK
+ {
+ name "Centaur chip NEST_LFIR MASK";
+ scomaddr 0x0204000D;
+ capture group default;
+ };
+
+ register NEST_LFIR_ACT0
+ {
+ name "Centaur chip NEST_LFIR ACT0";
+ scomaddr 0x02040010;
+ capture group default;
+ capture req nonzero("NEST_LFIR");
+ };
+
+ register NEST_LFIR_ACT1
+ {
+ name "Centaur chip NEST_LFIR ACT1";
+ scomaddr 0x02040011;
+ capture group default;
+ capture req nonzero("NEST_LFIR");
+ };
+
+ ############################################################################
+ # Centaur chip DMIFIR
+ ############################################################################
+
+ register DMIFIR
+ {
+ name "Centaur chip DMIFIR";
+ scomaddr 0x02010400;
+ reset (&, 0x02010401);
+ mask (|, 0x02010405);
+ capture group default;
+ };
+
+ register DMIFIR_MASK
+ {
+ name "Centaur chip DMIFIR MASK";
+ scomaddr 0x02010403;
+ capture group default;
+ };
+
+ register DMIFIR_ACT0
+ {
+ name "Centaur chip DMIFIR ACT0";
+ scomaddr 0x02010406;
+ capture group default;
+ capture req nonzero("DMIFIR");
+ };
+
+ register DMIFIR_ACT1
+ {
+ name "Centaur chip DMIFIR ACT1";
+ scomaddr 0x02010407;
+ capture group default;
+ capture req nonzero("DMIFIR");
+ };
+
+ ############################################################################
+ # Centaur chip MBIFIR
+ ############################################################################
+
+ register MBIFIR
+ {
+ name "Centaur chip MBIFIR";
+ scomaddr 0x02010800;
+ reset (&, 0x02010801);
+ mask (|, 0x02010805);
+ capture group default;
+ };
+
+ register MBIFIR_MASK
+ {
+ name "Centaur chip MBIFIR MASK";
+ scomaddr 0x02010803;
+ capture group default;
+ };
+
+ register MBIFIR_ACT0
+ {
+ name "Centaur chip MBIFIR ACT0";
+ scomaddr 0x02010806;
+ capture group default;
+ capture req nonzero("MBIFIR");
+ };
+
+ register MBIFIR_ACT1
+ {
+ name "Centaur chip MBIFIR ACT1";
+ scomaddr 0x02010807;
+ capture group default;
+ capture req nonzero("MBIFIR");
+ };
+
+ ############################################################################
+ # Centaur chip MBSFIR
+ ############################################################################
+
+ register MBSFIR
+ {
+ name "Centaur chip MBSFIR";
+ scomaddr 0x02011400;
+ reset (&, 0x02011401);
+ mask (|, 0x02011405);
+ capture group default;
+ };
+
+ register MBSFIR_MASK
+ {
+ name "Centaur chip MBSFIR MASK";
+ scomaddr 0x02011403;
+ capture group default;
+ };
+
+ register MBSFIR_ACT0
+ {
+ name "Centaur chip MBSFIR ACT0";
+ scomaddr 0x02011406;
+ capture group default;
+ capture req nonzero("MBSFIR");
+ };
+
+ register MBSFIR_ACT1
+ {
+ name "Centaur chip MBSFIR ACT1";
+ scomaddr 0x02011407;
+ capture group default;
+ 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;
+ };
+
+ ############################################################################
+ # Centaur chip MBSECCFIR 0
+ ############################################################################
+
+ register MBSECCFIR_0
+ {
+ name "Centaur chip MBSECCFIR 0";
+ scomaddr 0x02011440;
+ reset (&, 0x02011441);
+ mask (|, 0x02011445);
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBSECCFIR_0_MASK
+ {
+ name "Centaur chip MBSECCFIR 0 MASK";
+ scomaddr 0x02011443;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBSECCFIR_0_ACT0
+ {
+ name "Centaur chip MBSECCFIR 0 ACT0";
+ scomaddr 0x02011446;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ capture req nonzero("MBSECCFIR_0");
+ };
+
+ register MBSECCFIR_0_ACT1
+ {
+ name "Centaur chip MBSECCFIR 0 ACT1";
+ scomaddr 0x02011447;
+ capture group default;
+ 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 MaintCmdRegs_mba1;
+ };
+
+ register MBSECCFIR_1_MASK
+ {
+ name "Centaur chip MBSECCFIR 1 MASK";
+ scomaddr 0x02011483;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ register MBSECCFIR_1_ACT0
+ {
+ name "Centaur chip MBSECCFIR 1 ACT0";
+ scomaddr 0x02011486;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ capture req nonzero("MBSECCFIR_1");
+ };
+
+ register MBSECCFIR_1_ACT1
+ {
+ name "Centaur chip MBSECCFIR 1 ACT1";
+ scomaddr 0x02011487;
+ capture group default;
+ 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;
+ };
+
+ register SCACFIR_MASK
+ {
+ name "Centaur chip SCACFIR MASK";
+ scomaddr 0x020115c3;
+ capture group default;
+ };
+
+ register SCACFIR_ACT0
+ {
+ name "Centaur chip SCACFIR ACT0";
+ scomaddr 0x020115c6;
+ capture group default;
+ capture req nonzero("SCACFIR");
+ };
+
+ register SCACFIR_ACT1
+ {
+ name "Centaur chip SCACFIR ACT1";
+ scomaddr 0x020115c7;
+ capture group default;
+ 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;
+ };
+
+ register MCBISTFIR_0_MASK
+ {
+ name "Centaur chip MCBISTFIR 0 MASK";
+ scomaddr 0x02011603;
+ capture group default;
+ };
+
+ register MCBISTFIR_0_ACT0
+ {
+ name "Centaur chip MCBISTFIR 0 ACT0";
+ scomaddr 0x02011606;
+ capture group default;
+ capture req nonzero("MCBISTFIR_0");
+ };
+
+ register MCBISTFIR_0_ACT1
+ {
+ name "Centaur chip MCBISTFIR 0 ACT1";
+ scomaddr 0x02011607;
+ capture group default;
+ 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;
+ };
+
+ register MCBISTFIR_1_MASK
+ {
+ name "Centaur chip MCBISTFIR 1 MASK";
+ scomaddr 0x02011703;
+ capture group default;
+ };
+
+ register MCBISTFIR_1_ACT0
+ {
+ name "Centaur chip MCBISTFIR 1 ACT0";
+ scomaddr 0x02011706;
+ capture group default;
+ capture req nonzero("MCBISTFIR_1");
+ };
+
+ register MCBISTFIR_1_ACT1
+ {
+ name "Centaur chip MCBISTFIR 1 ACT1";
+ scomaddr 0x02011707;
+ capture group default;
+ capture req nonzero("MCBISTFIR_1");
+ };
+
+ ############################################################################
+ # MEM Chiplet FIR
+ ############################################################################
+
+ register MEM_CHIPLET_CS_FIR
+ {
+ name "MEM Chiplet Checkstop FIR";
+ scomaddr 0x03040000;
+ capture group MemChipletRegs;
+ };
+
+ register MEM_CHIPLET_RE_FIR
+ {
+ name "MEM Chiplet Recoverable FIR";
+ scomaddr 0x03040001;
+ capture group MemChipletRegs;
+ };
+
+ register MEM_CHIPLET_FIR_MASK
+ {
+ name "MEM Chiplet FIR MASK";
+ scomaddr 0x03040002;
+ capture group MemChipletRegs;
+ };
+
+ ############################################################################
+ # MEM Chiplet Special Attention FIR
+ ############################################################################
+
+ register MEM_CHIPLET_SPA_FIR
+ {
+ name "MEM Chiplet Special Attention FIR";
+ scomaddr 0x03040004;
+ capture group MemChipletRegs;
+ };
+
+ register MEM_CHIPLET_SPA_FIR_MASK
+ {
+ name "MEM Chiplet Special Attention FIR MASK";
+ scomaddr 0x03040007;
+ capture group MemChipletRegs;
+ };
+
+ ############################################################################
+ # Centaur chip MEM_LFIR
+ ############################################################################
+
+ register MEM_LFIR
+ {
+ name "Centaur chip MEM_LFIR";
+ scomaddr 0x0304000A;
+ reset (&, 0x0304000B);
+ mask (|, 0x0304000F);
+ capture group MemChipletRegs;
+ };
+
+ register MEM_LFIR_MASK
+ {
+ name "Centaur chip MEM_LFIR MASK";
+ scomaddr 0x0304000D;
+ capture group MemChipletRegs;
+ };
+
+ register MEM_LFIR_ACT0
+ {
+ name "Centaur chip MEM_LFIR ACT0";
+ scomaddr 0x03040010;
+ capture group MemChipletRegs;
+ capture req nonzero("MEM_LFIR");
+ };
+
+ register MEM_LFIR_ACT1
+ {
+ name "Centaur chip MEM_LFIR ACT1";
+ scomaddr 0x03040011;
+ capture group MemChipletRegs;
+ capture req nonzero("MEM_LFIR");
+ };
+
+# Include registers not defined by the xml
+.include "centaur_membuf_regs.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)) ? analyzeMemChipletFir;
+
+};
+
+################################################################################
+# 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)) ? analyzeMemChipletSpa;
+
+};
+
+################################################################################
+# 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, 12 )
+{
+ /** 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;
+
+ /** DMIFIR[11]
+ * Recal or dynamic repair error
+ */
+ (rDMIFIR, bit(11)) ? calloutBusInterface_dmibus_th1;
+
+ /** DMIFIR[12]
+ * Too many bus errors
+ */
+ (rDMIFIR, bit(12)) ? tooManyBusErrors_dmibus_UERE;
+
+ /** 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)) ? replay_timeout_UERE;
+
+ /** 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)) ? defaultMaskedError;
+
+ /** 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_UERE;
+
+ /** MBSFIR[3]
+ * EXTERNAL_TIMEOUT
+ */
+ (rMBSFIR, bit(3)) ? defaultMaskedError;
+
+ /** MBSFIR[4]
+ * INTERNAL_TIMEOUT
+ */
+ (rMBSFIR, bit(4)) ? mbs_internal_timeout;
+
+ /** 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 ),
+ cs_root_cause( 19, 44, 47, 49 )
+{
+ /** MBSECCFIR_0[0]
+ * Memory chip mark on rank 0
+ */
+ (rMBSECCFIR_0, bit(0)) ? verify_chip_mark_0_0;
+
+ /** MBSECCFIR_0[1]
+ * Memory chip mark on rank 1
+ */
+ (rMBSECCFIR_0, bit(1)) ? verify_chip_mark_0_1;
+
+ /** MBSECCFIR_0[2]
+ * Memory chip mark on rank 2
+ */
+ (rMBSECCFIR_0, bit(2)) ? verify_chip_mark_0_2;
+
+ /** MBSECCFIR_0[3]
+ * Memory chip mark on rank 3
+ */
+ (rMBSECCFIR_0, bit(3)) ? verify_chip_mark_0_3;
+
+ /** MBSECCFIR_0[4]
+ * Memory chip mark on rank 4
+ */
+ (rMBSECCFIR_0, bit(4)) ? verify_chip_mark_0_4;
+
+ /** MBSECCFIR_0[5]
+ * Memory chip mark on rank 5
+ */
+ (rMBSECCFIR_0, bit(5)) ? verify_chip_mark_0_5;
+
+ /** MBSECCFIR_0[6]
+ * Memory chip mark on rank 6
+ */
+ (rMBSECCFIR_0, bit(6)) ? verify_chip_mark_0_6;
+
+ /** MBSECCFIR_0[7]
+ * Memory chip mark on rank 7
+ */
+ (rMBSECCFIR_0, bit(7)) ? verify_chip_mark_0_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)) ? mainline_nce_handling_0;
+
+ /** MBSECCFIR_0[17]
+ * Memory RCE
+ */
+ (rMBSECCFIR_0, bit(17)) ? mainline_rce_pue_handling_0;
+
+ /** MBSECCFIR_0[18]
+ * Memory SUE
+ */
+ (rMBSECCFIR_0, bit(18)) ? defaultMaskedError;
+
+ /** MBSECCFIR_0[19]
+ * Memory UE
+ */
+ (rMBSECCFIR_0, bit(19)) ? mainline_ue_handling_0_UERE;
+
+ /** 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)) ? mainline_rce_pue_handling_0;
+
+ /** MBSECCFIR_0[44]
+ * Memory RCD parity error
+ */
+ (rMBSECCFIR_0, bit(44)) ? self_th_1_UERE; # CUMULUS_10
+
+ /** 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 ),
+ cs_root_cause( 19, 44, 47, 49 )
+{
+ /** MBSECCFIR_1[0]
+ * Memory chip mark on rank 0
+ */
+ (rMBSECCFIR_1, bit(0)) ? verify_chip_mark_1_0;
+
+ /** MBSECCFIR_1[1]
+ * Memory chip mark on rank 1
+ */
+ (rMBSECCFIR_1, bit(1)) ? verify_chip_mark_1_1;
+
+ /** MBSECCFIR_1[2]
+ * Memory chip mark on rank 2
+ */
+ (rMBSECCFIR_1, bit(2)) ? verify_chip_mark_1_2;
+
+ /** MBSECCFIR_1[3]
+ * Memory chip mark on rank 3
+ */
+ (rMBSECCFIR_1, bit(3)) ? verify_chip_mark_1_3;
+
+ /** MBSECCFIR_1[4]
+ * Memory chip mark on rank 4
+ */
+ (rMBSECCFIR_1, bit(4)) ? verify_chip_mark_1_4;
+
+ /** MBSECCFIR_1[5]
+ * Memory chip mark on rank 5
+ */
+ (rMBSECCFIR_1, bit(5)) ? verify_chip_mark_1_5;
+
+ /** MBSECCFIR_1[6]
+ * Memory chip mark on rank 6
+ */
+ (rMBSECCFIR_1, bit(6)) ? verify_chip_mark_1_6;
+
+ /** MBSECCFIR_1[7]
+ * Memory chip mark on rank 7
+ */
+ (rMBSECCFIR_1, bit(7)) ? verify_chip_mark_1_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)) ? mainline_nce_handling_1;
+
+ /** MBSECCFIR_1[17]
+ * Memory RCE
+ */
+ (rMBSECCFIR_1, bit(17)) ? mainline_rce_pue_handling_1;
+
+ /** MBSECCFIR_1[18]
+ * Memory SUE
+ */
+ (rMBSECCFIR_1, bit(18)) ? defaultMaskedError;
+
+ /** MBSECCFIR_1[19]
+ * Memory UE
+ */
+ (rMBSECCFIR_1, bit(19)) ? mainline_ue_handling_1_UERE;
+
+ /** 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)) ? mainline_rce_pue_handling_1;
+
+ /** MBSECCFIR_1[44]
+ * Memory RCD parity error
+ */
+ (rMBSECCFIR_1, bit(44)) ? self_th_1_UERE; # CUMULUS_10
+
+ /** 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;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the common action set.
+.include "centaur_common_actions.rule";
+# Include the chip-specific action set.
+.include "centaur_membuf_actions.rule";
+
+actionclass analyzeConnectedMBA0 { analyze(connected(TYPE_MBA, 0)); };
+actionclass analyzeConnectedMBA1 { analyze(connected(TYPE_MBA, 1)); };
diff --git a/src/usr/diag/prdf/common/plat/centaur/centaur_membuf_actions.rule b/src/usr/diag/prdf/common/plat/centaur/centaur_membuf_actions.rule
new file mode 100644
index 000000000..6ff24cbc3
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/centaur/centaur_membuf_actions.rule
@@ -0,0 +1,244 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/centaur/centaur_membuf_actions.rule $
+#
+# OpenPOWER HostBoot Project
+#
+# Contributors Listed Below - COPYRIGHT 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.
+# 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
+
+/** There is a small window during the IPL where the MEM chiplet may be offline
+ * while the rest of the chip is working. Therefore, we cannot capture those
+ * registers unless we have an active attention from the MEM chiplet. */
+actionclass analyzeMemChipletFir
+{
+ capture(MemChipletRegs);
+ analyze(gMEM_CHIPLET_FIR);
+};
+actionclass analyzeMemChipletSpa
+{
+ capture(MemChipletRegs);
+ analyze(gMEM_CHIPLET_SPA_FIR);
+};
+
+/** 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, 0), 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; };
+
+/** PLL error */
+actionclass pll_unlock_UERE
+{
+ # These FIR bits should never trigger directly themselves in the rule code.
+ # Instead, They should be handled by global PRD PLL isolation code. We will
+ # add a threshold here to prevent flooding, just in case.
+ threshold32pday;
+};
+
+/** Callout the DMI BUS interface */
+actionclass calloutBusInterface_dmibus
+{
+ funccall("calloutBusInterfacePlugin");
+};
+
+/** Callout the DMI BUS interface, threshold 1 */
+actionclass calloutBusInterface_dmibus_th1
+{
+ calloutBusInterface_dmibus;
+ threshold1;
+};
+
+/** Callout the DMI BUS interface, threshold 1 */
+actionclass calloutBusInterface_dmibus_th1_UERE
+{
+ calloutBusInterface_dmibus;
+ threshold1;
+ SueSource;
+};
+
+/** Lane Repair: spare deployed */
+actionclass spareDeployed_dmibus
+{
+ calloutBusInterface_dmibus;
+ funccall("spareDeployed");
+};
+
+/** Lane Repair: max spares exceeded */
+actionclass maxSparesExceeded_dmibus
+{
+ calloutBusInterface_dmibus_th1;
+ funccall("maxSparesExceeded");
+};
+
+/** Lane Repair: too many bus errors */
+actionclass tooManyBusErrors_dmibus_UERE
+{
+ calloutBusInterface_dmibus_th1;
+ funccall("tooManyBusErrors");
+ SueSource; # channel failure
+};
+
+/** Calls out the DMI bus (TH 1) and clears any secondary attentions. */
+actionclass replay_timeout_UERE
+{
+ calloutBusInterface_dmibus_th1_UERE;
+ funccall("ClearMbsSecondaryBits");
+};
+
+/** Handles cases where both MBSFIR[3:4] are on, else calls out self. */
+actionclass mbs_internal_timeout_precheck
+{
+ threshold32pday;
+ funccall("mbsInternalTimeoutPrecheck");
+};
+
+/** Handles RCD parity errors, if present. Otherwise, calls out self (TH 1). */
+actionclass mbs_internal_timeout
+{
+ try ( funccall("analyzeMbaRcdParityError0"),
+ try ( funccall("analyzeMbaRcdParityError1"),
+ mbs_internal_timeout_precheck ) );
+};
+
+/** Handles RCD parity errors, if present. Otherwise, calls out lvl 2 (TH 1). */
+actionclass mbs_int_ext_timeout
+{
+ try ( funccall("analyzeMbaRcdParityError0"),
+ try ( funccall("analyzeMbaRcdParityError1"), level2_th_1 ) );
+};
+
+/** L4 cache SRW CE */
+actionclass l4_cache_srw_ce
+{
+ calloutL4;
+ threshold( field(32 / day), mfg_file(ATTR_MNFG_TH_CEN_L4_CACHE_CES));
+ funccall("CaptureL4CacheErr");
+ funccall("ClearServiceCallFlag");
+ funccall("ClearMbsSecondaryBits");
+};
+
+/** L4 cache SRW UE */
+actionclass l4_cache_srw_ue_UERE
+{
+ calloutL4;
+ threshold1;
+ funccall("CaptureL4CacheErr");
+ funccall("MaskMbsSecondaryBits");
+ SueSource;
+};
+
+/** L4 cache CO UE */
+actionclass l4_cache_co_ce
+{
+ calloutL4;
+ threshold( field(32 / day), mfg_file(ATTR_MNFG_TH_CEN_L4_CACHE_CES));
+ funccall("CaptureL4CacheErr");
+ funccall("ClearServiceCallFlag");
+ funccall("ClearMbaCalSecondaryBits");
+};
+
+/** L4 cache CO UE */
+actionclass l4_cache_co_ue_UERE
+{
+ calloutL4;
+ threshold1;
+ funccall("CaptureL4CacheErr");
+ funccall("MaskMbaCalSecondaryBits");
+ SueSource;
+};
+
+/** Verify Chip Mark */
+actionclass verify_chip_mark_0_0 { funccall("AnalyzeFetchMpe0_0"); };
+actionclass verify_chip_mark_0_1 { funccall("AnalyzeFetchMpe0_1"); };
+actionclass verify_chip_mark_0_2 { funccall("AnalyzeFetchMpe0_2"); };
+actionclass verify_chip_mark_0_3 { funccall("AnalyzeFetchMpe0_3"); };
+actionclass verify_chip_mark_0_4 { funccall("AnalyzeFetchMpe0_4"); };
+actionclass verify_chip_mark_0_5 { funccall("AnalyzeFetchMpe0_5"); };
+actionclass verify_chip_mark_0_6 { funccall("AnalyzeFetchMpe0_6"); };
+actionclass verify_chip_mark_0_7 { funccall("AnalyzeFetchMpe0_7"); };
+actionclass verify_chip_mark_1_0 { funccall("AnalyzeFetchMpe1_0"); };
+actionclass verify_chip_mark_1_1 { funccall("AnalyzeFetchMpe1_1"); };
+actionclass verify_chip_mark_1_2 { funccall("AnalyzeFetchMpe1_2"); };
+actionclass verify_chip_mark_1_3 { funccall("AnalyzeFetchMpe1_3"); };
+actionclass verify_chip_mark_1_4 { funccall("AnalyzeFetchMpe1_4"); };
+actionclass verify_chip_mark_1_5 { funccall("AnalyzeFetchMpe1_5"); };
+actionclass verify_chip_mark_1_6 { funccall("AnalyzeFetchMpe1_6"); };
+actionclass verify_chip_mark_1_7 { funccall("AnalyzeFetchMpe1_7"); };
+
+/** Fetch NCE */
+actionclass mainline_nce_handling_0 { funccall("AnalyzeFetchNce0"); };
+actionclass mainline_nce_handling_1 { funccall("AnalyzeFetchNce1"); };
+
+/** Fetch UE */
+actionclass mainline_ue_0
+{
+ funccall("AnalyzeFetchUe0");
+ threshold( field(33 / 30 min) );
+ SueSource;
+};
+actionclass mainline_ue_1
+{
+ funccall("AnalyzeFetchUe1");
+ threshold( field(33 / 30 min) );
+ SueSource;
+};
+actionclass mainline_ue_handling_0_UERE
+{
+ try ( funccall("analyzeMbaRcdParityError0"), mainline_ue_0 );
+};
+actionclass mainline_ue_handling_1_UERE
+{
+ try ( funccall("analyzeMbaRcdParityError1"), mainline_ue_1 );
+};
+
+/** Fetch RCE or Prefetch UE */
+actionclass mainline_rce_pue_handling_0 { funccall("AnalyzeFetchRcePue0"); };
+actionclass mainline_rce_pue_handling_1 { funccall("AnalyzeFetchRcePue1"); };
+
diff --git a/src/usr/diag/prdf/common/plat/centaur/centaur_membuf_regs.rule b/src/usr/diag/prdf/common/plat/centaur/centaur_membuf_regs.rule
new file mode 100644
index 000000000..df7723ead
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/centaur/centaur_membuf_regs.rule
@@ -0,0 +1,620 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/centaur/centaur_membuf_regs.rule $
+#
+# OpenPOWER HostBoot Project
+#
+# Contributors Listed Below - COPYRIGHT 2017,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.
+# 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
+
+ ############################################################################
+ # Centaur chip TP_LFIR
+ ############################################################################
+
+ register TP_LFIR_AND
+ {
+ name "Centaur chip TP_LFIR atomic AND";
+ scomaddr 0x0104000b;
+ capture group never;
+ access write_only;
+ };
+
+ register TP_LFIR_MASK_OR
+ {
+ name "Centaur chip TP_LFIR MASK atomic OR";
+ scomaddr 0x0104000f;
+ capture group never;
+ access write_only;
+ };
+
+ ############################################################################
+ # Centaur chip MBIFIR
+ ############################################################################
+
+ register MBIFIR_AND
+ {
+ name "Centaur chip MBIFIR atomic AND";
+ scomaddr 0x02010801;
+ capture group never;
+ access write_only;
+ };
+
+ ############################################################################
+ # Centaur chip MBSFIR
+ ############################################################################
+
+ register MBSFIR_AND
+ {
+ name "Centaur chip MBSFIR atomic AND";
+ scomaddr 0x02011401;
+ capture group never;
+ access write_only;
+ };
+
+ register MBSFIR_MASK_OR
+ {
+ name "Centaur chip MBSFIR MASK atomic OR";
+ scomaddr 0x02011405;
+ capture group never;
+ access write_only;
+ };
+
+ ############################################################################
+ # Centaur chip MBSECCFIR 0
+ ############################################################################
+
+ register MBSECCFIR_0_AND
+ {
+ name "Centaur chip MBSECCFIR 0 atomic AND";
+ scomaddr 0x02011441;
+ capture group never;
+ access write_only;
+ };
+
+ register MBSECCFIR_0_MASK_AND
+ {
+ name "Centaur chip MBSECCFIR 0 MASK atomic AND";
+ scomaddr 0x02011444;
+ capture group never;
+ access write_only;
+ };
+
+ register MBSECCFIR_0_MASK_OR
+ {
+ name "Centaur chip MBSECCFIR 0 MASK atomic OR";
+ scomaddr 0x02011445;
+ capture group never;
+ access write_only;
+ };
+
+ ############################################################################
+ # Centaur chip MBSECCFIR 0
+ ############################################################################
+
+ register MBSECCFIR_1_AND
+ {
+ name "Centaur chip MBSECCFIR 1 atomic AND";
+ scomaddr 0x02011481;
+ capture group never;
+ access write_only;
+ };
+
+ register MBSECCFIR_1_MASK_AND
+ {
+ name "Centaur chip MBSECCFIR 1 MASK atomic AND";
+ scomaddr 0x02011484;
+ capture group never;
+ access write_only;
+ };
+
+ register MBSECCFIR_1_MASK_OR
+ {
+ name "Centaur chip MBSECCFIR 1 MASK atomic OR";
+ scomaddr 0x02011485;
+ capture group never;
+ access write_only;
+ };
+
+ ############################################################################
+ # Interrupt status register
+ ############################################################################
+
+ register INTER_STATUS_REG
+ {
+ name "TPTOP.PIB.PCBMS.INTERRUPT_TYPE_REG";
+ scomaddr 0x000F001A;
+ capture group default;
+ };
+
+ ############################################################################
+ # TP chiplet error report registers
+ ############################################################################
+
+ register TP_ERROR_STATUS
+ {
+ name "TPTOP.TPC.ERROR_STATUS";
+ scomaddr 0x01030009;
+ capture group default;
+ };
+
+ ############################################################################
+ # NEST chiplet error report registers
+ ############################################################################
+
+ register NEST_ERROR_STATUS
+ {
+ name "TCN.ERROR_STATUS";
+ scomaddr 0x02030009;
+ capture group default;
+ };
+
+ register MBIERPT
+ {
+ name "MBU.MBI.MBI.MBIERPT0";
+ scomaddr 0x0201080F;
+ capture group default;
+ };
+
+ register MBSCERR1
+ {
+ name "MBU.MBS.MBSCERR1Q";
+ scomaddr 0x02011413;
+ capture group default;
+ };
+
+ register MBSCERR2
+ {
+ name "MBU.MBS.MBSCERR2Q";
+ scomaddr 0x0201142C;
+ capture group default;
+ };
+
+ register MBA0_MBSECCERRPT_0
+ {
+ name "MBU.MBS.ECC01.MBSECCERR0";
+ scomaddr 0x02011466;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBA0_MBSECCERRPT_1
+ {
+ name "MBU.MBS.ECC01.MBSECCERR1";
+ scomaddr 0x02011467;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBA1_MBSECCERRPT_0
+ {
+ name "MBU.MBS.ECC23.MBSECCERR0";
+ scomaddr 0x020114A6;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ register MBA1_MBSECCERRPT_1
+ {
+ name "MBU.MBS.ECC23.MBSECCERR1";
+ scomaddr 0x020114A7;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ register MBA0_MBXERRSTAT
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBXERRSTATQ";
+ scomaddr 0x0201168f;
+ capture group default;
+ };
+
+ register MBA1_MBXERRSTAT
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBXERRSTATQ";
+ scomaddr 0x0201178f;
+ capture group default;
+ };
+
+ register SENSORCACHEERRPT
+ {
+ name "SCAC.SCAC_ERRRPT";
+ scomaddr 0x020115D4;
+ capture group default;
+ };
+
+ ############################################################################
+ # MEM chiplet error report registers
+ ############################################################################
+
+ register MEM_ERROR_STATUS
+ {
+ name "TCM.ERROR_STATUS";
+ scomaddr 0x03030009;
+ capture group MemChipletRegs;
+ };
+
+ ############################################################################
+ # Memory ECC Error Address Registers
+ ############################################################################
+
+ register MBA0_MBNCER
+ {
+ name "MBA0: MBS Memory NCE Error Address Register";
+ scomaddr 0x02011660;
+ capture group default;
+ };
+
+ register MBA0_MBRCER
+ {
+ name "MBA0: MBS Memory RCE Error Address Register";
+ scomaddr 0x02011661;
+ capture group default;
+ };
+
+ register MBA0_MBMPER
+ {
+ name "MBA0: MBS Memory MPE Error Address Register";
+ scomaddr 0x02011662;
+ capture group default;
+ };
+
+ register MBA0_MBUER
+ {
+ name "MBA0: MBS Memory UE Error Address Register";
+ scomaddr 0x02011663;
+ capture group default;
+ };
+
+ register MBA1_MBNCER
+ {
+ name "MBA1: MBS Memory NCE Error Address Register";
+ scomaddr 0x02011760;
+ capture group default;
+ };
+
+ register MBA1_MBRCER
+ {
+ name "MBA1: MBS Memory RCE Error Address Register";
+ scomaddr 0x02011761;
+ capture group default;
+ };
+
+ register MBA1_MBMPER
+ {
+ name "MBA1: MBS Memory MPE Error Address Register";
+ scomaddr 0x02011762;
+ capture group default;
+ };
+
+ register MBA1_MBUER
+ {
+ name "MBA1: MBS Memory UE Error Address Register";
+ scomaddr 0x02011763;
+ capture group default;
+ };
+
+ ############################################################################
+ # NEST Chiplet memory fetch error vector registers
+ ############################################################################
+
+ register MBA0_MBSEVR
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBSEVRQ";
+ scomaddr 0x0201165f;
+ capture group default;
+ };
+
+ register MBA1_MBSEVR
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBSEVRQ";
+ scomaddr 0x0201175f;
+ capture group default;
+ };
+
+ ############################################################################
+ # NEST Chiplet memory maintenance error count registers
+ ############################################################################
+
+ register MBA0_MBSEC0
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBSEC0Q";
+ scomaddr 0x02011653;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBA0_MBSEC1
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBSEC1Q";
+ scomaddr 0x02011654;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBA1_MBSEC0
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBSEC0Q";
+ scomaddr 0x02011753;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ register MBA1_MBSEC1
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBSEC1Q";
+ scomaddr 0x02011754;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ ############################################################################
+ # Memory maintenance threshold control registers
+ ############################################################################
+
+ register MBSTR_0
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBSTRQ";
+ scomaddr 0x02011655;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBSTR_1
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBSTRQ";
+ scomaddr 0x02011755;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ ############################################################################
+ # NEST Chiplet memory maintenance symbol error control registers
+ ############################################################################
+
+ register MBA0_MBSSYMEC0
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBSSYMEC0Q";
+ scomaddr 0x02011656;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBA0_MBSSYMEC1
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBSSYMEC1Q";
+ scomaddr 0x02011657;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBA0_MBSSYMEC2
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBSSYMEC2Q";
+ scomaddr 0x02011658;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBA0_MBSSYMEC3
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBSSYMEC3Q";
+ scomaddr 0x02011659;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBA0_MBSSYMEC4
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBSSYMEC4Q";
+ scomaddr 0x0201165a;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBA0_MBSSYMEC5
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBSSYMEC5Q";
+ scomaddr 0x0201165b;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBA0_MBSSYMEC6
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBSSYMEC6Q";
+ scomaddr 0x0201165c;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBA0_MBSSYMEC7
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBSSYMEC7Q";
+ scomaddr 0x0201165d;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBA0_MBSSYMEC8
+ {
+ name "MBU.MBS.MCBISTS01.SCOMFIR.MBSSYMEC8Q";
+ scomaddr 0x0201165e;
+ capture group default;
+ capture group MaintCmdRegs_mba0;
+ };
+
+ register MBA1_MBSSYMEC0
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBSSYMEC0Q";
+ scomaddr 0x02011756;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ register MBA1_MBSSYMEC1
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBSSYMEC1Q";
+ scomaddr 0x02011757;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ register MBA1_MBSSYMEC2
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBSSYMEC2Q";
+ scomaddr 0x02011758;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ register MBA1_MBSSYMEC3
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBSSYMEC3Q";
+ scomaddr 0x02011759;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ register MBA1_MBSSYMEC4
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBSSYMEC4Q";
+ scomaddr 0x0201175a;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ register MBA1_MBSSYMEC5
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBSSYMEC5Q";
+ scomaddr 0x0201175b;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ register MBA1_MBSSYMEC6
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBSSYMEC6Q";
+ scomaddr 0x0201175c;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ register MBA1_MBSSYMEC7
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBSSYMEC7Q";
+ scomaddr 0x0201175d;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ register MBA1_MBSSYMEC8
+ {
+ name "MBU.MBS.MCBISTS23.SCOMFIR.MBSSYMEC8Q";
+ scomaddr 0x0201175e;
+ capture group default;
+ capture group MaintCmdRegs_mba1;
+ };
+
+ ############################################################################
+ # MBA Address Translate Control Register
+ ############################################################################
+
+ register MBA0_MBAXCR
+ {
+ name "MBU.MBS.ARB.RXLT.MBAXCR01Q";
+ scomaddr 0x0201140B;
+ capture group default;
+ };
+
+ register MBA1_MBAXCR
+ {
+ name "MBU.MBS.ARB.RXLT.MBAXCR23Q";
+ scomaddr 0x0201140C;
+ capture group default;
+ };
+
+ ############################################################################
+ # MBS Address Translate Control Register
+ ############################################################################
+
+ register MBSXCR
+ {
+ name "MBU.MBS.ARB.RXLT.MBSXCRQ";
+ scomaddr 0x0201140A;
+ capture group never;
+ };
+
+ ############################################################################
+ # Non-existent Registers for Capture
+ ############################################################################
+
+ register VPD_FAILED_LANES_0TO63
+ {
+ name "Bit map 0-63 of failed lanes read from VPD";
+ scomaddr 0xFFFF0001;
+ access no_access;
+ capture group never;
+ };
+
+ register VPD_FAILED_LANES_64TO127
+ {
+ name "Bit map 64-127 of failed lanes read from VPD";
+ scomaddr 0xFFFF0002;
+ access no_access;
+ capture group never;
+ };
+
+ register ALL_FAILED_LANES_0TO63
+ {
+ name "Bit map 0-63 of failed lanes from io_read_erepair";
+ scomaddr 0xFFFF0003;
+ access no_access;
+ capture group never;
+ };
+
+ register ALL_FAILED_LANES_64TO127
+ {
+ name "Bit map 64-127 of failed lanes from io_read_erepair";
+ scomaddr 0xFFFF0004;
+ access no_access;
+ capture group never;
+ };
+
+ ############################################################################
+ # PLL Registers
+ ############################################################################
+
+ register CFAM_FSI_STATUS
+ {
+ name "VI.FSI.STATUS";
+ scomaddr 0x00001007;
+ capture group never;
+ };
+
+ ############################################################################
+ # L4 cache address trap
+ ############################################################################
+
+ register MBCELOG
+ {
+ name "MBU.MBS.MBCELOGQ";
+ scomaddr 0x02011416;
+ capture group L4CacheErr;
+ };
+
OpenPOWER on IntegriCloud