summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/usr/diag/prdf/common/framework/resolution/prdfCalloutMap.H5
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_capp.rule415
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_ec.rule651
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_eq.rule367
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_ex.rule904
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_mc.rule671
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_mc_actions.rule45
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_mcc.rule658
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_mcc_actions.rule32
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_mi.rule260
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_mi_actions.rule31
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_mi_regs.rule63
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_npu.rule1105
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_obus.rule885
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_omic.rule686
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_omic_actions.rule33
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_pec.rule472
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_phb.rule764
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_proc.rule7128
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_proc_actions.rule42
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_xbus.rule593
-rw-r--r--src/usr/diag/prdf/common/plat/axone/prdf_plat_axone.mk41
-rw-r--r--src/usr/diag/prdf/common/plugins/prdfLogParse_common.C21
-rw-r--r--src/usr/diag/prdf/common/plugins/prdfParserEnums.H9
-rwxr-xr-xsrc/usr/diag/prdf/common/rule/prdfRuleFiles.C16
-rwxr-xr-xsrc/usr/diag/prdf/common/rule/prdfRuleFiles.H16
-rw-r--r--src/usr/diag/prdf/common/rule/prdf_rule.mk16
-rwxr-xr-xsrc/usr/diag/prdf/rule/makefile2
28 files changed, 15929 insertions, 2 deletions
diff --git a/src/usr/diag/prdf/common/framework/resolution/prdfCalloutMap.H b/src/usr/diag/prdf/common/framework/resolution/prdfCalloutMap.H
index d6e5156bc..fc9a89a1d 100644
--- a/src/usr/diag/prdf/common/framework/resolution/prdfCalloutMap.H
+++ b/src/usr/diag/prdf/common/framework/resolution/prdfCalloutMap.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2012,2017 */
+/* Contributors Listed Below - COPYRIGHT 2012,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -179,6 +179,7 @@ PRDF_TARGET_TYPE_ALIAS( TYPE_EQ, TARGETING::TYPE_EQ )
PRDF_TARGET_TYPE_ALIAS( TYPE_EX, TARGETING::TYPE_EX )
PRDF_TARGET_TYPE_ALIAS( TYPE_CORE, TARGETING::TYPE_CORE )
PRDF_TARGET_TYPE_ALIAS( TYPE_CAPP, TARGETING::TYPE_CAPP )
+PRDF_TARGET_TYPE_ALIAS( TYPE_NPU, TARGETING::TYPE_NPU )
PRDF_TARGET_TYPE_ALIAS( TYPE_PEC, TARGETING::TYPE_PEC )
PRDF_TARGET_TYPE_ALIAS( TYPE_PHB, TARGETING::TYPE_PHB )
PRDF_TARGET_TYPE_ALIAS( TYPE_OBUS, TARGETING::TYPE_OBUS )
@@ -192,6 +193,8 @@ PRDF_TARGET_TYPE_ALIAS( TYPE_MCA, TARGETING::TYPE_MCA )
PRDF_TARGET_TYPE_ALIAS( TYPE_MC, TARGETING::TYPE_MC )
PRDF_TARGET_TYPE_ALIAS( TYPE_MI, TARGETING::TYPE_MI )
PRDF_TARGET_TYPE_ALIAS( TYPE_DMI, TARGETING::TYPE_DMI )
+PRDF_TARGET_TYPE_ALIAS( TYPE_MCC, TARGETING::TYPE_MCC )
+PRDF_TARGET_TYPE_ALIAS( TYPE_OMIC, TARGETING::TYPE_OMIC )
PRDF_TARGET_TYPE_ALIAS( TYPE_MEMBUF, TARGETING::TYPE_MEMBUF )
PRDF_TARGET_TYPE_ALIAS( TYPE_L4, TARGETING::TYPE_L4 )
PRDF_TARGET_TYPE_ALIAS( TYPE_MBA, TARGETING::TYPE_MBA )
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_capp.rule b/src/usr/diag/prdf/common/plat/axone/axone_capp.rule
new file mode 100644
index 000000000..1afbe83fb
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_capp.rule
@@ -0,0 +1,415 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_capp.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
+
+chip axone_capp
+{
+ name "AXONE CAPP target";
+ targettype TYPE_CAPP;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # P9 CAPP target CXAFIR
+ ############################################################################
+
+ register CXAFIR
+ {
+ name "P9 CAPP target CXAFIR";
+ scomaddr 0x02010800;
+ reset (&, 0x02010801);
+ mask (|, 0x02010805);
+ capture group default;
+ };
+
+ register CXAFIR_MASK
+ {
+ name "P9 CAPP target CXAFIR MASK";
+ scomaddr 0x02010803;
+ capture group default;
+ };
+
+ register CXAFIR_ACT0
+ {
+ name "P9 CAPP target CXAFIR ACT0";
+ scomaddr 0x02010806;
+ capture group default;
+ capture req nonzero("CXAFIR");
+ };
+
+ register CXAFIR_ACT1
+ {
+ name "P9 CAPP target CXAFIR ACT1";
+ scomaddr 0x02010807;
+ capture group default;
+ capture req nonzero("CXAFIR");
+ };
+
+# Include registers not defined by the xml
+.include "p9_common_capp_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# Summary for CAPP
+################################################################################
+
+rule rCAPP
+{
+ CHECK_STOP:
+ summary( 0, rCXAFIR );
+
+ RECOVERABLE:
+ summary( 0, rCXAFIR );
+
+ UNIT_CS:
+ summary( 0, rCXAFIR );
+
+};
+
+group gCAPP attntype CHECK_STOP, RECOVERABLE, UNIT_CS
+ filter singlebit
+{
+ (rCAPP, bit(0)) ? analyzeCXAFIR;
+};
+
+################################################################################
+# P9 CAPP target CXAFIR
+################################################################################
+
+rule rCXAFIR
+{
+ CHECK_STOP:
+ CXAFIR & ~CXAFIR_MASK & ~CXAFIR_ACT0 & ~CXAFIR_ACT1;
+ RECOVERABLE:
+ CXAFIR & ~CXAFIR_MASK & ~CXAFIR_ACT0 & CXAFIR_ACT1;
+ UNIT_CS:
+ CXAFIR & ~CXAFIR_MASK & CXAFIR_ACT0 & CXAFIR_ACT1;
+};
+
+group gCXAFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** CXAFIR[0]
+ * CXA Informational PE
+ */
+ (rCXAFIR, bit(0)) ? defaultMaskedError;
+
+ /** CXAFIR[1]
+ * CXA System Xstop PE
+ */
+ (rCXAFIR, bit(1)) ? self_th_1;
+
+ /** CXAFIR[2]
+ * CXA CE on Master array.
+ */
+ (rCXAFIR, bit(2)) ? self_th_32perDay;
+
+ /** CXAFIR[3]
+ * CXA UE on Master array.
+ */
+ (rCXAFIR, bit(3)) ? self_th_1;
+
+ /** CXAFIR[4]
+ * CXA Timer expired recoverable error
+ */
+ (rCXAFIR, bit(4)) ? level2_th_1;
+
+ /** CXAFIR[5]
+ * Recovery sequencer hang detection
+ */
+ (rCXAFIR, bit(5)) ? self_th_1;
+
+ /** CXAFIR[6]
+ * XPT saw UE on PB data
+ */
+ (rCXAFIR, bit(6)) ? level2_th_1;
+
+ /** CXAFIR[7]
+ * XPT saw SUE on PB data
+ */
+ (rCXAFIR, bit(7)) ? level2_th_1_SUE;
+
+ /** CXAFIR[8]
+ * Correctable error on Snooper array.
+ */
+ (rCXAFIR, bit(8)) ? self_th_5perHour;
+
+ /** CXAFIR[9]
+ * Uncorrectable error on Snooper array.
+ */
+ (rCXAFIR, bit(9)) ? self_th_1;
+
+ /** CXAFIR[10]
+ * RECOVERY_FAILED: CAPP recovery failed
+ */
+ (rCXAFIR, bit(10)) ? self_th_1;
+
+ /** CXAFIR[11]
+ * Illegal LPC BAR access
+ */
+ (rCXAFIR, bit(11)) ? defaultMaskedError;
+
+ /** CXAFIR[12]
+ * XPT recoverable error
+ */
+ (rCXAFIR, bit(12)) ? defaultMaskedError;
+
+ /** CXAFIR[13]
+ * Recoverable errors detected in Master
+ */
+ (rCXAFIR, bit(13)) ? level2_th_1;
+
+ /** CXAFIR[14]
+ * spare
+ */
+ (rCXAFIR, bit(14)) ? defaultMaskedError;
+
+ /** CXAFIR[15]
+ * Scom satellite parity error
+ */
+ (rCXAFIR, bit(15)) ? defaultMaskedError;
+
+ /** CXAFIR[16]
+ * CXA System checkstop errors in master
+ */
+ (rCXAFIR, bit(16)) ? self_th_1;
+
+ /** CXAFIR[17]
+ * CXA System checkstop errors in Snooper
+ */
+ (rCXAFIR, bit(17)) ? self_th_1;
+
+ /** CXAFIR[18]
+ * CXA transport System checkstop errors
+ */
+ (rCXAFIR, bit(18)) ? self_th_1;
+
+ /** CXAFIR[19]
+ * CXA Master uOP FIR 1 for lab use
+ */
+ (rCXAFIR, bit(19)) ? defaultMaskedError;
+
+ /** CXAFIR[20]
+ * CXA Master uOP FIR 2 for lab use
+ */
+ (rCXAFIR, bit(20)) ? defaultMaskedError;
+
+ /** CXAFIR[21]
+ * CXA Master uOP FIR 3 for lab use
+ */
+ (rCXAFIR, bit(21)) ? defaultMaskedError;
+
+ /** CXAFIR[22]
+ * Snooper uOP FIR 1 for lab use
+ */
+ (rCXAFIR, bit(22)) ? defaultMaskedError;
+
+ /** CXAFIR[23]
+ * Snooper uOP FIR 2 for lab use
+ */
+ (rCXAFIR, bit(23)) ? defaultMaskedError;
+
+ /** CXAFIR[24]
+ * Snooper uOP FIR 3 for lab use
+ */
+ (rCXAFIR, bit(24)) ? defaultMaskedError;
+
+ /** CXAFIR[25]
+ * Misc informational PowerBus error
+ */
+ (rCXAFIR, bit(25)) ? parent_proc_th_1;
+
+ /** CXAFIR[26]
+ * CXA Parity error on PowerBus interface
+ */
+ (rCXAFIR, bit(26)) ? parent_proc_th_1;
+
+ /** CXAFIR[27]
+ * CXA: Any PowerBus data hang poll error
+ */
+ (rCXAFIR, bit(27)) ? defaultMaskedError;
+
+ /** CXAFIR[28]
+ * CXA: PowerBus command hang error
+ */
+ (rCXAFIR, bit(28)) ? defaultMaskedError;
+
+ /** CXAFIR[29]
+ * CXA: PB Addr Error detected by APC : ld
+ */
+ (rCXAFIR, bit(29)) ? self_M_level2_L_th_1;
+
+ /** CXAFIR[30]
+ * CXA PB Addr Err detected by APC : st
+ */
+ (rCXAFIR, bit(30)) ? self_M_level2_L_th_1;
+
+ /** CXAFIR[31]
+ * CXA: PPHB0 or PHB1 i linkdown
+ */
+ (rCXAFIR, bit(31)) ? level2_th_1;
+
+ /** CXAFIR[32]
+ * APC ack_dead or ack_ed_dead
+ */
+ (rCXAFIR, bit(32)) ? defaultMaskedError;
+
+ /** CXAFIR[33]
+ * CXA Any PowerBus command hang error
+ */
+ (rCXAFIR, bit(33)) ? defaultMaskedError;
+
+ /** CXAFIR[34]
+ * CXA CE on data received from PB
+ */
+ (rCXAFIR, bit(34)) ? self_th_5perHour;
+
+ /** CXAFIR[35]
+ * CXA: UE on data received from PowerBus
+ */
+ (rCXAFIR, bit(35)) ? self_th_1; # NIMBUS_20,CUMULUS_10
+
+ /** CXAFIR[36]
+ * CXA: SUE on data received from PowerBus
+ */
+ (rCXAFIR, bit(36)) ? defaultMaskedError;
+
+ /** CXAFIR[37]
+ * CXA: TLBI Timeout error.
+ */
+ (rCXAFIR, bit(37)) ? level2_th_1;
+
+ /** CXAFIR[38]
+ * CXA: TLBI seq_err.
+ */
+ (rCXAFIR, bit(38)) ? parent_proc_th_1;
+
+ /** CXAFIR[39]
+ * CXA: TLBI bad op error.
+ */
+ (rCXAFIR, bit(39)) ? parent_proc_th_1;
+
+ /** CXAFIR[40]
+ * CXA: PE on TLBI sequence number
+ */
+ (rCXAFIR, bit(40)) ? level2_th_1;
+
+ /** CXAFIR[41]
+ * APC received ack_dead or ack_ed_dead
+ */
+ (rCXAFIR, bit(41)) ? defaultMaskedError;
+
+ /** CXAFIR[42]
+ * TimeBase error
+ */
+ (rCXAFIR, bit(42)) ? defaultMaskedError;
+
+ /** CXAFIR[43]
+ * XPT Informational Error
+ */
+ (rCXAFIR, bit(43)) ? defaultMaskedError;
+
+ /** CXAFIR[44]
+ * Command_queue_CE
+ */
+ (rCXAFIR, bit(44)) ? self_th_5perHour;
+
+ /** CXAFIR[45]
+ * Command_queue_UE
+ */
+ (rCXAFIR, bit(45)) ? self_th_1;
+
+ /** CXAFIR[46]
+ * PSL credit timeout error
+ */
+ (rCXAFIR, bit(46)) ? level2_th_1;
+
+ /** CXAFIR[47]
+ * spare
+ */
+ (rCXAFIR, bit(47)) ? defaultMaskedError;
+
+ /** CXAFIR[48]
+ * Hypervisor asserted
+ */
+ (rCXAFIR, bit(48)) ? level2_th_1;
+
+ /** CXAFIR[49]
+ * spare
+ */
+ (rCXAFIR, bit(49)) ? defaultMaskedError;
+
+ /** CXAFIR[50]
+ * SCOM err
+ */
+ (rCXAFIR, bit(50)) ? defaultMaskedError;
+
+ /** CXAFIR[51]
+ * SCOM err
+ */
+ (rCXAFIR, bit(51)) ? defaultMaskedError;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "p9_common_capp_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_ec.rule b/src/usr/diag/prdf/common/plat/axone/axone_ec.rule
new file mode 100644
index 000000000..09602866f
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_ec.rule
@@ -0,0 +1,651 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_ec.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
+
+chip axone_ec
+{
+ name "AXONE EC target";
+ targettype TYPE_CORE;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # EC Chiplet FIR
+ ############################################################################
+
+ register EC_CHIPLET_CS_FIR
+ {
+ name "EC Chiplet Checkstop FIR";
+ scomaddr 0x20040000;
+ capture group default;
+ };
+
+ register EC_CHIPLET_RE_FIR
+ {
+ name "EC Chiplet Recoverable FIR";
+ scomaddr 0x20040001;
+ capture group default;
+ };
+
+ register EC_CHIPLET_FIR_MASK
+ {
+ name "EC Chiplet FIR MASK";
+ scomaddr 0x20040002;
+ capture group default;
+ };
+
+ ############################################################################
+ # EC Chiplet Unit Checkstop FIR
+ ############################################################################
+
+ register EC_CHIPLET_UCS_FIR
+ {
+ name "EC Chiplet Unit Checkstop FIR";
+ scomaddr 0x20040018;
+ capture group default;
+ };
+
+ register EC_CHIPLET_UCS_FIR_MASK
+ {
+ name "EC Chiplet Unit Checkstop FIR MASK";
+ scomaddr 0x20040019;
+ capture group default;
+ };
+
+ ############################################################################
+ # P9 EC target EC_LFIR
+ ############################################################################
+
+ register EC_LFIR
+ {
+ name "P9 EC target EC_LFIR";
+ scomaddr 0x2004000a;
+ reset (&, 0x2004000b);
+ mask (|, 0x2004000f);
+ capture group default;
+ };
+
+ register EC_LFIR_MASK
+ {
+ name "P9 EC target EC_LFIR MASK";
+ scomaddr 0x2004000d;
+ capture group default;
+ };
+
+ register EC_LFIR_ACT0
+ {
+ name "P9 EC target EC_LFIR ACT0";
+ scomaddr 0x20040010;
+ capture group default;
+ capture req nonzero("EC_LFIR");
+ };
+
+ register EC_LFIR_ACT1
+ {
+ name "P9 EC target EC_LFIR ACT1";
+ scomaddr 0x20040011;
+ capture group default;
+ capture req nonzero("EC_LFIR");
+ };
+
+ ############################################################################
+ # P9 EC target COREFIR
+ ############################################################################
+
+ register COREFIR
+ {
+ name "P9 EC target COREFIR";
+ scomaddr 0x20010a40;
+ mask (|, 0x20010a45);
+ capture group default;
+ };
+
+ register COREFIR_MASK
+ {
+ name "P9 EC target COREFIR MASK";
+ scomaddr 0x20010a43;
+ capture group default;
+ };
+
+ register COREFIR_ACT0
+ {
+ name "P9 EC target COREFIR ACT0";
+ scomaddr 0x20010a46;
+ capture group default;
+ };
+
+ register COREFIR_ACT1
+ {
+ name "P9 EC target COREFIR ACT1";
+ scomaddr 0x20010a47;
+ capture group default;
+ };
+
+ register COREFIR_WOF
+ {
+ name "P9 EC target COREFIR WOF";
+ scomaddr 0x20010a48;
+ reset (|, 0x20010a48);
+ capture group default;
+ };
+
+# Include registers not defined by the xml
+.include "p9_common_ec_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# EC Chiplet FIR
+################################################################################
+
+rule rEC_CHIPLET_FIR
+{
+ CHECK_STOP:
+ EC_CHIPLET_CS_FIR & ~EC_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+ RECOVERABLE:
+ (EC_CHIPLET_RE_FIR >> 2) & ~EC_CHIPLET_FIR_MASK & `3fffffffffffffff`;
+};
+
+group gEC_CHIPLET_FIR attntype CHECK_STOP, RECOVERABLE
+ filter singlebit
+{
+ /** EC_CHIPLET_FIR[2]
+ * Unit Checkstop from COREFIR (bit0 in RER)
+ */
+ (rEC_CHIPLET_FIR, bit(2)) ? analyzeCOREFIR;
+
+ /** EC_CHIPLET_FIR[3]
+ * Attention from EC_LFIR
+ */
+ (rEC_CHIPLET_FIR, bit(3)) ? analyzeEC_LFIR;
+
+ /** EC_CHIPLET_FIR[4]
+ * Attention from COREFIR
+ */
+ (rEC_CHIPLET_FIR, bit(4)) ? analyzeCOREFIR;
+
+};
+
+################################################################################
+# EC Chiplet Unit Checkstop FIR
+################################################################################
+
+rule rEC_CHIPLET_UCS_FIR
+{
+ UNIT_CS:
+ EC_CHIPLET_UCS_FIR & ~(EC_CHIPLET_UCS_FIR_MASK >> 1) & `7fffffffffffffff`;
+};
+
+group gEC_CHIPLET_UCS_FIR attntype UNIT_CS
+ filter singlebit
+{
+ /** EC_CHIPLET_UCS_FIR[1]
+ * Attention from COREFIR
+ */
+ (rEC_CHIPLET_UCS_FIR, bit(1)) ? analyzeCOREFIR;
+
+};
+
+################################################################################
+# P9 EC target EC_LFIR
+################################################################################
+
+rule rEC_LFIR
+{
+ CHECK_STOP:
+ EC_LFIR & ~EC_LFIR_MASK & ~EC_LFIR_ACT0 & ~EC_LFIR_ACT1;
+ RECOVERABLE:
+ EC_LFIR & ~EC_LFIR_MASK & ~EC_LFIR_ACT0 & EC_LFIR_ACT1;
+};
+
+group gEC_LFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** EC_LFIR[0]
+ * CFIR internal parity error
+ */
+ (rEC_LFIR, bit(0)) ? self_th_32perDay;
+
+ /** EC_LFIR[1]
+ * Chiplet Control Reg: PCB Access Error
+ */
+ (rEC_LFIR, bit(1)) ? self_th_32perDay;
+
+ /** EC_LFIR[2]
+ * Clock Controller: PCB Access Error
+ */
+ (rEC_LFIR, bit(2)) ? self_th_32perDay;
+
+ /** EC_LFIR[3]
+ * Clock Controller: Summarized Error
+ */
+ (rEC_LFIR, bit(3)) ? self_th_32perDay;
+
+ /** EC_LFIR[4]
+ * PSCOM Logic: PCB Access Error
+ */
+ (rEC_LFIR, bit(4)) ? defaultMaskedError;
+
+ /** EC_LFIR[5]
+ * PSCOM Logic: Summarized internal errors
+ */
+ (rEC_LFIR, bit(5)) ? defaultMaskedError;
+
+ /** EC_LFIR[6]
+ * Therm Logic: Summarized internal errors
+ */
+ (rEC_LFIR, bit(6)) ? defaultMaskedError;
+
+ /** EC_LFIR[7]
+ * Therm Logic: PCB Access Error
+ */
+ (rEC_LFIR, bit(7)) ? defaultMaskedError;
+
+ /** EC_LFIR[8]
+ * Therm Logic: Temperature critical trip
+ */
+ (rEC_LFIR, bit(8)) ? defaultMaskedError;
+
+ /** EC_LFIR[9]
+ * Therm Logic: Temperature fatal trip
+ */
+ (rEC_LFIR, bit(9)) ? defaultMaskedError;
+
+ /** EC_LFIR[10]
+ * UNUSED in P9
+ */
+ (rEC_LFIR, bit(10)) ? defaultMaskedError;
+
+ /** EC_LFIR[11]
+ * Debug Logic: Scom Satellite Error
+ */
+ (rEC_LFIR, bit(11)) ? defaultMaskedError;
+
+ /** EC_LFIR[12:40]
+ * spare
+ */
+ (rEC_LFIR, bit(12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40)) ? defaultMaskedError;
+
+ /** EC_LFIR[41]
+ * Malfunction Alert or Local Checkstop
+ */
+ (rEC_LFIR, bit(41)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 EC target COREFIR
+################################################################################
+
+rule rCOREFIR
+{
+ CHECK_STOP:
+ COREFIR & ~COREFIR_MASK & ~COREFIR_ACT0 & ~COREFIR_ACT1;
+ RECOVERABLE:
+ COREFIR_WOF & ~COREFIR_MASK & ~COREFIR_ACT0 & COREFIR_ACT1;
+ UNIT_CS:
+ COREFIR & ~COREFIR_MASK & COREFIR_ACT0 & COREFIR_ACT1;
+};
+
+group gCOREFIR
+ filter priority(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,59,60,61,62,63,57),
+ cs_root_cause
+{
+ /** COREFIR[0]
+ * IFU SRAM Recoverable error
+ */
+ (rCOREFIR, bit(0)) ? self_th_5perHour;
+
+ /** COREFIR[1]
+ * TC Checkstop
+ */
+ (rCOREFIR, bit(1)) ? self_th_1;
+
+ /** COREFIR[2]
+ * Regfile Recoverable error from IFU
+ */
+ (rCOREFIR, bit(2)) ? self_th_5perHour;
+
+ /** COREFIR[3]
+ * Regfile core checkstop
+ */
+ (rCOREFIR, bit(3)) ? self_th_1;
+
+ /** COREFIR[4]
+ * IF Logic Recovery Err
+ */
+ (rCOREFIR, bit(4)) ? self_th_5perHour;
+
+ /** COREFIR[5]
+ * If Logic Checkstop
+ */
+ (rCOREFIR, bit(5)) ? self_th_1;
+
+ /** COREFIR[6:7]
+ * spare
+ */
+ (rCOREFIR, bit(6|7)) ? defaultMaskedError;
+
+ /** COREFIR[8]
+ * Recovery core checkstop
+ */
+ (rCOREFIR, bit(8)) ? self_th_1;
+
+ /** COREFIR[9]
+ * ISU Register File Recoverable Error
+ */
+ (rCOREFIR, bit(9)) ? self_th_5perHour;
+
+ /** COREFIR[10]
+ * ISU Regifle Core Checkstop Err
+ */
+ (rCOREFIR, bit(10)) ? self_th_1;
+
+ /** COREFIR[11]
+ * ISU Logic Recoverable Error
+ */
+ (rCOREFIR, bit(11)) ? self_th_5perHour;
+
+ /** COREFIR[12]
+ * ISU Logic Core Checkstop Err
+ */
+ (rCOREFIR, bit(12)) ? self_th_1;
+
+ /** COREFIR[13]
+ * ISU errr, recov if not in mt window
+ */
+ (rCOREFIR, bit(13)) ? self_th_5perHour;
+
+ /** COREFIR[14]
+ * Machine check and ME = 0 Err
+ */
+ (rCOREFIR, bit(14)) ? self_th_1_SUE;
+
+ /** COREFIR[15]
+ * LSU or IFU detected UE from L2
+ */
+ (rCOREFIR, bit(15)) ? defaultMaskedError;
+
+ /** COREFIR[16]
+ * L2 UE over threshold error
+ */
+ (rCOREFIR, bit(16)) ? defaultMaskedError;
+
+ /** COREFIR[17]
+ * UE on a cache inhibited operation
+ */
+ (rCOREFIR, bit(17)) ? defaultMaskedError;
+
+ /** COREFIR[18]
+ * SW initiated reboot with diagnostics
+ */
+ (rCOREFIR, bit(18)) ? level2_th_1;
+
+ /** COREFIR[19]
+ * spare
+ */
+ (rCOREFIR, bit(19)) ? defaultMaskedError;
+
+ /** COREFIR[20]
+ * ISU checkstop MSR corrupted
+ */
+ (rCOREFIR, bit(20)) ? self_th_1;
+
+ /** COREFIR[21:23]
+ * spare
+ */
+ (rCOREFIR, bit(21|22|23)) ? defaultMaskedError;
+
+ /** COREFIR[24]
+ * VSU recoverable logic error
+ */
+ (rCOREFIR, bit(24)) ? self_th_5perHour;
+
+ /** COREFIR[25]
+ * VS Logic core checkstop
+ */
+ (rCOREFIR, bit(25)) ? self_th_1;
+
+ /** COREFIR[26]
+ * Core errors while in maintenance mode
+ */
+ (rCOREFIR, bit(26)) ? level2_th_1;
+
+ /** COREFIR[27]
+ * DFU recoverable error
+ */
+ (rCOREFIR, bit(27)) ? self_th_5perHour;
+
+ /** COREFIR[28]
+ * PC System Checkstop (recovery disabled)
+ */
+ (rCOREFIR, bit(28)) ? self_th_1;
+
+ /** COREFIR[29]
+ * LSU SRAM recoverable error
+ */
+ (rCOREFIR, bit(29)) ? self_th_5perHour;
+
+ /** COREFIR[30]
+ * LSU Set Delete Err
+ */
+ (rCOREFIR, bit(30)) ? self_th_1;
+
+ /** COREFIR[31]
+ * LSU Reg File Recoverable
+ */
+ (rCOREFIR, bit(31)) ? self_th_5perHour;
+
+ /** COREFIR[32]
+ * LSU Reg core checkstop
+ */
+ (rCOREFIR, bit(32)) ? self_th_1;
+
+ /** COREFIR[33]
+ * Special recovery error, tlb multi-hit
+ */
+ (rCOREFIR, bit(33)) ? threshold_and_mask_self;
+
+ /** COREFIR[34]
+ * LSU SLB multihit error
+ */
+ (rCOREFIR, bit(34)) ? threshold_and_mask_self;
+
+ /** COREFIR[35]
+ * LSU ERAT multihit error
+ */
+ (rCOREFIR, bit(35)) ? threshold_and_mask_self;
+
+ /** COREFIR[36]
+ * Forward Progress Error
+ */
+ (rCOREFIR, bit(36)) ? self_th_1;
+
+ /** COREFIR[37]
+ * LSU logic recoverable error
+ */
+ (rCOREFIR, bit(37)) ? self_th_5perHour;
+
+ /** COREFIR[38]
+ * LSU logic core checkstop error
+ */
+ (rCOREFIR, bit(38)) ? self_th_1;
+
+ /** COREFIR[39]
+ * LSU err, recov if not in mt window
+ */
+ (rCOREFIR, bit(39)) ? self_th_5perHour;
+
+ /** COREFIR[40]
+ * spare
+ */
+ (rCOREFIR, bit(40)) ? defaultMaskedError;
+
+ /** COREFIR[41]
+ * LSU system checkstop
+ */
+ (rCOREFIR, bit(41)) ? self_th_1;
+
+ /** COREFIR[42]
+ * spare
+ */
+ (rCOREFIR, bit(42)) ? defaultMaskedError;
+
+ /** COREFIR[43]
+ * Thread Hang caused recovery
+ */
+ (rCOREFIR, bit(43)) ? self_level2_th_5perHour;
+
+ /** COREFIR[44]
+ * spare
+ */
+ (rCOREFIR, bit(44)) ? defaultMaskedError;
+
+ /** COREFIR[45]
+ * PC core cs
+ */
+ (rCOREFIR, bit(45)) ? self_th_1;
+
+ /** COREFIR[46]
+ * spare
+ */
+ (rCOREFIR, bit(46)) ? defaultMaskedError;
+
+ /** COREFIR[47]
+ * Timebase facility unrecoverable error.
+ */
+ (rCOREFIR, bit(47)) ? defaultMaskedError;
+
+ /** COREFIR[48]
+ * Hypervisor resource parity error
+ */
+ (rCOREFIR, bit(48)) ? self_th_1;
+
+ /** COREFIR[49:51]
+ * spare
+ */
+ (rCOREFIR, bit(49|50|51)) ? defaultMaskedError;
+
+ /** COREFIR[52]
+ * Core Hang, recovery failed
+ */
+ (rCOREFIR, bit(52)) ? self_th_1;
+
+ /** COREFIR[53]
+ * Internal Core Hang, recovery attemped
+ */
+ (rCOREFIR, bit(53)) ? defaultMaskedError;
+
+ /** COREFIR[54]
+ * spare
+ */
+ (rCOREFIR, bit(54)) ? defaultMaskedError;
+
+ /** COREFIR[55]
+ * Nest hang detected, recovery attempted
+ */
+ (rCOREFIR, bit(55)) ? self_M_level2_L_th_1;
+
+ /** COREFIR[56]
+ * Other Core Recoverable error
+ */
+ (rCOREFIR, bit(56)) ? defaultMaskedError;
+
+ /** COREFIR[57]
+ * Other Core Core Checkstop
+ */
+ (rCOREFIR, bit(57)) ? self_th_1;
+
+ /** COREFIR[58]
+ * Other Core System Checkstop
+ */
+ (rCOREFIR, bit(58)) ? defaultMaskedError;
+
+ /** COREFIR[59]
+ * SCOM error handling
+ */
+ (rCOREFIR, bit(59)) ? defaultMaskedError;
+
+ /** COREFIR[60]
+ * debug checkstop on trigger
+ */
+ (rCOREFIR, bit(60)) ? defaultMaskedError;
+
+ /** COREFIR[61]
+ * SCOM or Recoverable error inject
+ */
+ (rCOREFIR, bit(61)) ? defaultMaskedError;
+
+ /** COREFIR[62]
+ * Firmware injected checkstop
+ */
+ (rCOREFIR, bit(62)) ? defaultMaskedError;
+
+ /** COREFIR[63]
+ * PHYP injected core checkstop
+ */
+ (rCOREFIR, bit(63)) ? level2_th_1;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "p9_common_ec_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_eq.rule b/src/usr/diag/prdf/common/plat/axone/axone_eq.rule
new file mode 100644
index 000000000..040cb1aac
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_eq.rule
@@ -0,0 +1,367 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_eq.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
+
+chip axone_eq
+{
+ name "AXONE EQ target";
+ targettype TYPE_EQ;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # EQ Chiplet FIR
+ ############################################################################
+
+ register EQ_CHIPLET_CS_FIR
+ {
+ name "EQ Chiplet Checkstop FIR";
+ scomaddr 0x10040000;
+ capture group default;
+ };
+
+ register EQ_CHIPLET_RE_FIR
+ {
+ name "EQ Chiplet Recoverable FIR";
+ scomaddr 0x10040001;
+ capture group default;
+ };
+
+ register EQ_CHIPLET_FIR_MASK
+ {
+ name "EQ Chiplet FIR MASK";
+ scomaddr 0x10040002;
+ capture group default;
+ };
+
+ ############################################################################
+ # P9 EQ target EQ_LFIR
+ ############################################################################
+
+ register EQ_LFIR
+ {
+ name "P9 EQ target EQ_LFIR";
+ scomaddr 0x1004000a;
+ reset (&, 0x1004000b);
+ mask (|, 0x1004000f);
+ capture group default;
+ };
+
+ register EQ_LFIR_MASK
+ {
+ name "P9 EQ target EQ_LFIR MASK";
+ scomaddr 0x1004000d;
+ capture group default;
+ };
+
+ register EQ_LFIR_ACT0
+ {
+ name "P9 EQ target EQ_LFIR ACT0";
+ scomaddr 0x10040010;
+ capture group default;
+ capture req nonzero("EQ_LFIR");
+ };
+
+ register EQ_LFIR_ACT1
+ {
+ name "P9 EQ target EQ_LFIR ACT1";
+ scomaddr 0x10040011;
+ capture group default;
+ capture req nonzero("EQ_LFIR");
+ };
+
+# Include registers not defined by the xml
+.include "p9_common_eq_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# EQ Chiplet FIR
+################################################################################
+
+rule rEQ_CHIPLET_FIR
+{
+ CHECK_STOP:
+ EQ_CHIPLET_CS_FIR & ~EQ_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+ RECOVERABLE:
+ (EQ_CHIPLET_RE_FIR >> 2) & ~EQ_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+};
+
+group gEQ_CHIPLET_FIR attntype CHECK_STOP, RECOVERABLE
+ filter singlebit
+{
+ /** EQ_CHIPLET_FIR[3]
+ * Attention from EQ_LFIR
+ */
+ (rEQ_CHIPLET_FIR, bit(3)) ? analyzeEQ_LFIR;
+
+ /** EQ_CHIPLET_FIR[4]
+ * Attention from L3FIR 0
+ */
+ (rEQ_CHIPLET_FIR, bit(4)) ? analyzeConnectedEX0;
+
+ /** EQ_CHIPLET_FIR[5]
+ * Attention from L3FIR 1
+ */
+ (rEQ_CHIPLET_FIR, bit(5)) ? analyzeConnectedEX1;
+
+ /** EQ_CHIPLET_FIR[6]
+ * Attention from L2FIR 0
+ */
+ (rEQ_CHIPLET_FIR, bit(6)) ? analyzeConnectedEX0;
+
+ /** EQ_CHIPLET_FIR[7]
+ * Attention from L2FIR 1
+ */
+ (rEQ_CHIPLET_FIR, bit(7)) ? analyzeConnectedEX1;
+
+ /** EQ_CHIPLET_FIR[8]
+ * Attention from NCUFIR 0
+ */
+ (rEQ_CHIPLET_FIR, bit(8)) ? analyzeConnectedEX0;
+
+ /** EQ_CHIPLET_FIR[9]
+ * Attention from NCUFIR 1
+ */
+ (rEQ_CHIPLET_FIR, bit(9)) ? analyzeConnectedEX1;
+
+ /** EQ_CHIPLET_FIR[11]
+ * Attention from CMEFIR 0
+ */
+ (rEQ_CHIPLET_FIR, bit(11)) ? analyzeConnectedEX0;
+
+ /** EQ_CHIPLET_FIR[12]
+ * Attention from CMEFIR 1
+ */
+ (rEQ_CHIPLET_FIR, bit(12)) ? analyzeConnectedEX1;
+
+};
+
+################################################################################
+# P9 EQ target EQ_LFIR
+################################################################################
+
+rule rEQ_LFIR
+{
+ CHECK_STOP:
+ EQ_LFIR & ~EQ_LFIR_MASK & ~EQ_LFIR_ACT0 & ~EQ_LFIR_ACT1;
+ RECOVERABLE:
+ EQ_LFIR & ~EQ_LFIR_MASK & ~EQ_LFIR_ACT0 & EQ_LFIR_ACT1;
+};
+
+group gEQ_LFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** EQ_LFIR[0]
+ * CFIR internal parity error
+ */
+ (rEQ_LFIR, bit(0)) ? self_th_32perDay;
+
+ /** EQ_LFIR[1]
+ * Chiplet Control Reg: PCB Access Error
+ */
+ (rEQ_LFIR, bit(1)) ? self_th_32perDay;
+
+ /** EQ_LFIR[2]
+ * Clock Controller: PCB Access Error
+ */
+ (rEQ_LFIR, bit(2)) ? self_th_32perDay;
+
+ /** EQ_LFIR[3]
+ * Clock Controller: Summarized Error
+ */
+ (rEQ_LFIR, bit(3)) ? self_th_32perDay;
+
+ /** EQ_LFIR[4]
+ * PSCOM Logic: PCB Access Error
+ */
+ (rEQ_LFIR, bit(4)) ? defaultMaskedError;
+
+ /** EQ_LFIR[5]
+ * PSCOM Logic: Summarized internal errors
+ */
+ (rEQ_LFIR, bit(5)) ? defaultMaskedError;
+
+ /** EQ_LFIR[6]
+ * Therm Logic: Summarized internal errors
+ */
+ (rEQ_LFIR, bit(6)) ? defaultMaskedError;
+
+ /** EQ_LFIR[7]
+ * Therm Logic: PCB Access Error
+ */
+ (rEQ_LFIR, bit(7)) ? defaultMaskedError;
+
+ /** EQ_LFIR[8]
+ * Therm Logic: Temperature critical trip
+ */
+ (rEQ_LFIR, bit(8)) ? defaultMaskedError;
+
+ /** EQ_LFIR[9]
+ * Therm Logic: Temperature fatal trip
+ */
+ (rEQ_LFIR, bit(9)) ? defaultMaskedError;
+
+ /** EQ_LFIR[10]
+ * UNUSED in P9
+ */
+ (rEQ_LFIR, bit(10)) ? defaultMaskedError;
+
+ /** EQ_LFIR[11]
+ * Debug Logic: Scom Satellite Error
+ */
+ (rEQ_LFIR, bit(11)) ? defaultMaskedError;
+
+ /** EQ_LFIR[12]
+ * Scom Satellite Error - L3 Trace0
+ */
+ (rEQ_LFIR, bit(12)) ? defaultMaskedError;
+
+ /** EQ_LFIR[13]
+ * Scom Satellite Error - L3 Trace0
+ */
+ (rEQ_LFIR, bit(13)) ? defaultMaskedError;
+
+ /** EQ_LFIR[14]
+ * Scom Satellite Error - L3 Trace1
+ */
+ (rEQ_LFIR, bit(14)) ? defaultMaskedError;
+
+ /** EQ_LFIR[15]
+ * Scom Satellite Error - L3 Trace1
+ */
+ (rEQ_LFIR, bit(15)) ? defaultMaskedError;
+
+ /** EQ_LFIR[16]
+ * Scom Satellite Error - L20 Trace0
+ */
+ (rEQ_LFIR, bit(16)) ? defaultMaskedError;
+
+ /** EQ_LFIR[17]
+ * Scom Satellite Error - L20 Trace0
+ */
+ (rEQ_LFIR, bit(17)) ? defaultMaskedError;
+
+ /** EQ_LFIR[18]
+ * Scom Satellite Error - L20 Trace1
+ */
+ (rEQ_LFIR, bit(18)) ? defaultMaskedError;
+
+ /** EQ_LFIR[19]
+ * Scom Satellite Error - L20 Trace1
+ */
+ (rEQ_LFIR, bit(19)) ? defaultMaskedError;
+
+ /** EQ_LFIR[20]
+ * Duty Cycle Adjust Logic error: cache clk
+ */
+ (rEQ_LFIR, bit(20)) ? self_th_32perDay;
+
+ /** EQ_LFIR[21]
+ * Duty Cycle Adjust Logic error: ex00_c0
+ */
+ (rEQ_LFIR, bit(21)) ? self_th_32perDay;
+
+ /** EQ_LFIR[22]
+ * Duty Cycle Adjust error : ex00_c1
+ */
+ (rEQ_LFIR, bit(22)) ? self_th_32perDay;
+
+ /** EQ_LFIR[23]
+ * Duty Cycle Adjust error : ex00_l2
+ */
+ (rEQ_LFIR, bit(23)) ? self_th_32perDay;
+
+ /** EQ_LFIR[24]
+ * Duty Cycle Adjust Logic error : ex01_c0
+ */
+ (rEQ_LFIR, bit(24)) ? self_th_32perDay;
+
+ /** EQ_LFIR[25]
+ * Duty Cycle Adjust Logic error : ex01_c1
+ */
+ (rEQ_LFIR, bit(25)) ? self_th_32perDay;
+
+ /** EQ_LFIR[26]
+ * Duty Cycle Adjust Logic error : ex01_l2
+ */
+ (rEQ_LFIR, bit(26)) ? self_th_32perDay;
+
+ /** EQ_LFIR[27]
+ * Skew Adjust Logic Data or deskew error
+ */
+ (rEQ_LFIR, bit(27)) ? self_th_32perDay;
+
+ /** EQ_LFIR[28:40]
+ * spare
+ */
+ (rEQ_LFIR, bit(28|29|30|31|32|33|34|35|36|37|38|39|40)) ? defaultMaskedError;
+
+ /** EQ_LFIR[41]
+ * Malfunction Alert or Local Checkstop
+ */
+ (rEQ_LFIR, bit(41)) ? defaultMaskedError;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "p9_common_eq_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_ex.rule b/src/usr/diag/prdf/common/plat/axone/axone_ex.rule
new file mode 100644
index 000000000..c943add56
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_ex.rule
@@ -0,0 +1,904 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_ex.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
+
+chip axone_ex
+{
+ name "AXONE EX target";
+ targettype TYPE_EX;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+# Import signatures
+.include "prdfP9ExExtraSig.H";
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # P9 EX target L2FIR
+ ############################################################################
+
+ register L2FIR
+ {
+ name "P9 EX target L2FIR";
+ scomaddr 0x10010800;
+ reset (&, 0x10010801);
+ mask (|, 0x10010805);
+ capture group default;
+ };
+
+ register L2FIR_MASK
+ {
+ name "P9 EX target L2FIR MASK";
+ scomaddr 0x10010803;
+ capture group default;
+ };
+
+ register L2FIR_ACT0
+ {
+ name "P9 EX target L2FIR ACT0";
+ scomaddr 0x10010806;
+ capture group default;
+ capture req nonzero("L2FIR");
+ };
+
+ register L2FIR_ACT1
+ {
+ name "P9 EX target L2FIR ACT1";
+ scomaddr 0x10010807;
+ capture group default;
+ capture req nonzero("L2FIR");
+ };
+
+ ############################################################################
+ # P9 EX target NCUFIR
+ ############################################################################
+
+ register NCUFIR
+ {
+ name "P9 EX target NCUFIR";
+ scomaddr 0x10011000;
+ reset (&, 0x10011001);
+ mask (|, 0x10011005);
+ capture group default;
+ };
+
+ register NCUFIR_MASK
+ {
+ name "P9 EX target NCUFIR MASK";
+ scomaddr 0x10011003;
+ capture group default;
+ };
+
+ register NCUFIR_ACT0
+ {
+ name "P9 EX target NCUFIR ACT0";
+ scomaddr 0x10011006;
+ capture group default;
+ capture req nonzero("NCUFIR");
+ };
+
+ register NCUFIR_ACT1
+ {
+ name "P9 EX target NCUFIR ACT1";
+ scomaddr 0x10011007;
+ capture group default;
+ capture req nonzero("NCUFIR");
+ };
+
+ ############################################################################
+ # P9 EX target L3FIR
+ ############################################################################
+
+ register L3FIR
+ {
+ name "P9 EX target L3FIR";
+ scomaddr 0x10011800;
+ reset (&, 0x10011801);
+ mask (|, 0x10011805);
+ capture group default;
+ };
+
+ register L3FIR_MASK
+ {
+ name "P9 EX target L3FIR MASK";
+ scomaddr 0x10011803;
+ capture group default;
+ };
+
+ register L3FIR_ACT0
+ {
+ name "P9 EX target L3FIR ACT0";
+ scomaddr 0x10011806;
+ capture group default;
+ capture req nonzero("L3FIR");
+ };
+
+ register L3FIR_ACT1
+ {
+ name "P9 EX target L3FIR ACT1";
+ scomaddr 0x10011807;
+ capture group default;
+ capture req nonzero("L3FIR");
+ };
+
+ ############################################################################
+ # P9 EX target CMEFIR
+ ############################################################################
+
+ register CMEFIR
+ {
+ name "P9 EX target CMEFIR";
+ scomaddr 0x10012000;
+ reset (&, 0x10012001);
+ mask (|, 0x10012005);
+ capture group default;
+ };
+
+ register CMEFIR_MASK
+ {
+ name "P9 EX target CMEFIR MASK";
+ scomaddr 0x10012003;
+ capture group default;
+ };
+
+ register CMEFIR_ACT0
+ {
+ name "P9 EX target CMEFIR ACT0";
+ scomaddr 0x10012006;
+ capture group default;
+ capture req nonzero("CMEFIR");
+ };
+
+ register CMEFIR_ACT1
+ {
+ name "P9 EX target CMEFIR ACT1";
+ scomaddr 0x10012007;
+ capture group default;
+ capture req nonzero("CMEFIR");
+ };
+
+# Include registers not defined by the xml
+.include "p9_common_ex_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# Summary for EX
+################################################################################
+
+rule rEX
+{
+ CHECK_STOP:
+ summary( 0, rL2FIR ) |
+ summary( 1, rNCUFIR ) |
+ summary( 2, rL3FIR ) |
+ summary( 3, rCMEFIR );
+
+ RECOVERABLE:
+ summary( 0, rL2FIR ) |
+ summary( 1, rNCUFIR ) |
+ summary( 2, rL3FIR ) |
+ summary( 3, rCMEFIR );
+
+};
+
+group gEX attntype CHECK_STOP, RECOVERABLE
+ filter singlebit
+{
+ (rEX, bit(0)) ? analyzeL2FIR;
+ (rEX, bit(1)) ? analyzeNCUFIR;
+ (rEX, bit(2)) ? analyzeL3FIR;
+ (rEX, bit(3)) ? analyzeCMEFIR;
+};
+
+################################################################################
+# P9 EX target L2FIR
+################################################################################
+
+rule rL2FIR
+{
+ CHECK_STOP:
+ L2FIR & ~L2FIR_MASK & ~L2FIR_ACT0 & ~L2FIR_ACT1;
+ RECOVERABLE:
+ L2FIR & ~L2FIR_MASK & ~L2FIR_ACT0 & L2FIR_ACT1;
+};
+
+group gL2FIR
+ filter singlebit,
+ cs_root_cause(1,17,18,20)
+{
+ /** L2FIR[0]
+ * L2 cache read CE
+ */
+ (rL2FIR, bit(0)) ? l2_cache_ce;
+
+ /** L2FIR[1]
+ * L2 cache read UE
+ */
+ (rL2FIR, bit(1)) ? l2_cache_ue_UERE;
+
+ /** L2FIR[2]
+ * L2 cache read SUE
+ */
+ (rL2FIR, bit(2)) ? defaultMaskedError;
+
+ /** L2FIR[3]
+ * Hw directory initiated line delete
+ */
+ (rL2FIR, bit(3)) ? defaultMaskedError;
+
+ /** L2FIR[4]
+ * ue or sue detected by on modified line
+ */
+ (rL2FIR, bit(4)) ? defaultMaskedError;
+
+ /** L2FIR[5]
+ * ue or sue detected on non-modified line
+ */
+ (rL2FIR, bit(5)) ? defaultMaskedError;
+
+ /** L2FIR[6]
+ * L2 directory read CE
+ */
+ (rL2FIR, bit(6)) ? l2_dir_ce;
+
+ /** L2FIR[7]
+ * L2 directory read UE
+ */
+ (rL2FIR, bit(7)) ? self_th_1;
+
+ /** L2FIR[8]
+ * L2 directory CE due to stuck bit
+ */
+ (rL2FIR, bit(8)) ? self_th_1;
+
+ /** L2FIR[9]
+ * L2 directory stuck bit CE repair failed
+ */
+ (rL2FIR, bit(9)) ? self_th_1;
+
+ /** L2FIR[10]
+ * Muliple l2 cache dir errors
+ */
+ (rL2FIR, bit(10)) ? defaultMaskedError;
+
+ /** L2FIR[11]
+ * LRU read error detected
+ */
+ (rL2FIR, bit(11)) ? self_th_32perDay;
+
+ /** L2FIR[12]
+ * RC Powerbus data timeout
+ */
+ (rL2FIR, bit(12)) ? level2_th_1;
+
+ /** L2FIR[13]
+ * NCU Powerbus data timeout
+ */
+ (rL2FIR, bit(13)) ? level2_th_1;
+
+ /** L2FIR[14]
+ * Hardware control error
+ */
+ (rL2FIR, bit(14)) ? level2_M_proc_L_th_1;
+
+ /** L2FIR[15]
+ * LRU all members in a class line deleted
+ */
+ (rL2FIR, bit(15)) ? self_th_1;
+
+ /** L2FIR[16]
+ * Cache line inhibited hit cacheable space
+ */
+ (rL2FIR, bit(16)) ? self_th_1;
+
+ /** L2FIR[17]
+ * (RC) load received pb cresp addr error
+ */
+ (rL2FIR, bit(17)) ? self_M_level2_L_th_1;
+
+ /** L2FIR[18]
+ * (RC) store received pb cresp addr error
+ */
+ (rL2FIR, bit(18)) ? self_M_level2_L_th_1;
+
+ /** L2FIR[19]
+ * Rc or NCU Pb data CE error
+ */
+ (rL2FIR, bit(19)) ? l2_power_bus_ce;
+
+ /** L2FIR[20]
+ * RC or NCU Pb data UE error
+ */
+ (rL2FIR, bit(20)) ? self_th_1_UERE;
+
+ /** L2FIR[21]
+ * RC or NCU PB data SUE detected
+ */
+ (rL2FIR, bit(21)) ? defaultMaskedError;
+
+ /** L2FIR[22]
+ * TGT_NODAL_REQ_DINC_ERR
+ */
+ (rL2FIR, bit(22)) ? self_th_1;
+
+ /** L2FIR[23]
+ * RC fabric op Ld cresp addr error for hyp
+ */
+ (rL2FIR, bit(23)) ? defaultMaskedError;
+
+ /** L2FIR[24]
+ * PE on data from RCDAT
+ */
+ (rL2FIR, bit(24)) ? self_th_1;
+
+ /** L2FIR[25]
+ * L2 castout or CN cresp addr err
+ */
+ (rL2FIR, bit(25)) ? self_M_level2_L_th_1;
+
+ /** L2FIR[26]
+ * LVDIR tracking PE
+ */
+ (rL2FIR, bit(26)) ? self_th_32perDay;
+
+ /** L2FIR[27]
+ * RC fabric op cresp=ack_dead error
+ */
+ (rL2FIR, bit(27)) ? defaultMaskedError;
+
+ /** L2FIR[28]
+ * Darn data timeout
+ */
+ (rL2FIR, bit(28)) ? self_th_1;
+
+ /** L2FIR[29]
+ * RC fabric op store cresp/misc error
+ */
+ (rL2FIR, bit(29)) ? defaultMaskedError;
+
+ /** L2FIR[30:35]
+ * spare
+ */
+ (rL2FIR, bit(30|31|32|33|34|35)) ? defaultMaskedError;
+
+ /** L2FIR[36]
+ * Cache CE and UE in short time period
+ */
+ (rL2FIR, bit(36)) ? threshold_and_mask_self;
+
+ /** L2FIR[37:38]
+ * spare
+ */
+ (rL2FIR, bit(37|38)) ? defaultMaskedError;
+
+ /** L2FIR[39]
+ * reserved
+ */
+ (rL2FIR, bit(39)) ? defaultMaskedError;
+
+ /** L2FIR[40]
+ * scom error
+ */
+ (rL2FIR, bit(40)) ? defaultMaskedError;
+
+ /** L2FIR[41]
+ * scom error
+ */
+ (rL2FIR, bit(41)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 EX target NCUFIR
+################################################################################
+
+rule rNCUFIR
+{
+ CHECK_STOP:
+ NCUFIR & ~NCUFIR_MASK & ~NCUFIR_ACT0 & ~NCUFIR_ACT1;
+ RECOVERABLE:
+ NCUFIR & ~NCUFIR_MASK & ~NCUFIR_ACT0 & NCUFIR_ACT1;
+};
+
+group gNCUFIR
+ filter singlebit,
+ cs_root_cause(3,4,7,8)
+{
+ /** NCUFIR[0]
+ * NCU store queue control error
+ */
+ (rNCUFIR, bit(0)) ? self_th_1;
+
+ /** NCUFIR[1]
+ * TLBIE control error.
+ */
+ (rNCUFIR, bit(1)) ? level2_M_self_L_th_1;
+
+ /** NCUFIR[2]
+ * TL or SLBIEG illegal fields from core.
+ */
+ (rNCUFIR, bit(2)) ? level2_M_self_L_th_1;
+
+ /** NCUFIR[3]
+ * NCU Store Address Error
+ */
+ (rNCUFIR, bit(3)) ? self_M_level2_L_th_1;
+
+ /** NCUFIR[4]
+ * NCU load Address Error
+ */
+ (rNCUFIR, bit(4)) ? self_M_level2_L_th_1;
+
+ /** NCUFIR[5]
+ * Store received ack_dead.
+ */
+ (rNCUFIR, bit(5)) ? defaultMaskedError;
+
+ /** NCUFIR[6]
+ * Load received ack_dead.
+ */
+ (rNCUFIR, bit(6)) ? defaultMaskedError;
+
+ /** NCUFIR[7]
+ * MSGSND received addr_err
+ */
+ (rNCUFIR, bit(7)) ? self_M_level2_L_th_1;
+
+ /** NCUFIR[8]
+ * NCU Store Queue Data Parity Err
+ */
+ (rNCUFIR, bit(8)) ? self_th_1_UERE;
+
+ /** NCUFIR[9]
+ * store timed out on pb
+ */
+ (rNCUFIR, bit(9)) ? threshold_and_mask_self;
+
+ /** NCUFIR[10]
+ * tlbie master timeout
+ */
+ (rNCUFIR, bit(10)) ? level2_M_self_L_th_1;
+
+ /** NCUFIR[11]
+ * NCU no response to snooped TLBIE
+ */
+ (rNCUFIR, bit(11)) ? level2_M_self_L_th_1;
+
+ /** NCUFIR[12]
+ * ima cresp addr error
+ */
+ (rNCUFIR, bit(12)) ? self_M_level2_L_th_1;
+
+ /** NCUFIR[13]
+ * ima received ack_dead
+ */
+ (rNCUFIR, bit(13)) ? defaultMaskedError;
+
+ /** NCUFIR[14]
+ * pmisc cresp addr err
+ */
+ (rNCUFIR, bit(14)) ? self_M_level2_L_th_1;
+
+ /** NCUFIR[15]
+ * PPE read cresp address error
+ */
+ (rNCUFIR, bit(15)) ? self_M_level2_L_th_1;
+
+ /** NCUFIR[16]
+ * PPE write cresp address error
+ */
+ (rNCUFIR, bit(16)) ? self_M_level2_L_th_1;
+
+ /** NCUFIR[17]
+ * ppe read received ack dead
+ */
+ (rNCUFIR, bit(17)) ? defaultMaskedError;
+
+ /** NCUFIR[18]
+ * ppe write received ack dead
+ */
+ (rNCUFIR, bit(18)) ? defaultMaskedError;
+
+ /** NCUFIR[19]
+ * tgt nodal ppe write received ack dead
+ */
+ (rNCUFIR, bit(19)) ? defaultMaskedError;
+
+ /** NCUFIR[20]
+ * darn ttype while darn not enabled
+ */
+ (rNCUFIR, bit(20)) ? level2_M_self_L_th_1;
+
+ /** NCUFIR[21]
+ * Darn cresp address error
+ */
+ (rNCUFIR, bit(21)) ? level2_M_self_L_th_1;
+
+ /** NCUFIR[22:28]
+ * spare
+ */
+ (rNCUFIR, bit(22|23|24|25|26|27|28)) ? defaultMaskedError;
+
+ /** NCUFIR[29]
+ * scom error
+ */
+ (rNCUFIR, bit(29)) ? defaultMaskedError;
+
+ /** NCUFIR[30]
+ * scom error
+ */
+ (rNCUFIR, bit(30)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 EX target L3FIR
+################################################################################
+
+rule rL3FIR
+{
+ CHECK_STOP:
+ L3FIR & ~L3FIR_MASK & ~L3FIR_ACT0 & ~L3FIR_ACT1;
+ RECOVERABLE:
+ L3FIR & ~L3FIR_MASK & ~L3FIR_ACT0 & L3FIR_ACT1;
+};
+
+group gL3FIR
+ filter singlebit,
+ cs_root_cause(5,8,11,17,21)
+{
+ /** L3FIR[0]
+ * L3_RDDSP_SEGR_LCO_ALL_MEM_UNAVAIL_ERR
+ */
+ (rL3FIR, bit(0)) ? self_th_1;
+
+ /** L3FIR[1:2]
+ * spare
+ */
+ (rL3FIR, bit(1|2)) ? defaultMaskedError;
+
+ /** L3FIR[3]
+ * L3 cache CE and UE within a short period
+ */
+ (rL3FIR, bit(3)) ? threshold_and_mask_self;
+
+ /** L3FIR[4]
+ * CE detected on L3 cache read
+ */
+ (rL3FIR, bit(4)) ? l3_cache_ce;
+
+ /** L3FIR[5]
+ * UE detected on L3 cache read
+ */
+ (rL3FIR, bit(5)) ? l3_cache_ue_UERE;
+
+ /** L3FIR[6]
+ * SUE detected on L3 cache read
+ */
+ (rL3FIR, bit(6)) ? defaultMaskedError;
+
+ /** L3FIR[7]
+ * L3 cache write data CE from Power Bus
+ */
+ (rL3FIR, bit(7)) ? self_th_32perDay;
+
+ /** L3FIR[8]
+ * L3 cache write data UE from Power Bus
+ */
+ (rL3FIR, bit(8)) ? self_th_1_UERE;
+
+ /** L3FIR[9]
+ * L3 cache write data sue from Power Bus
+ */
+ (rL3FIR, bit(9)) ? defaultMaskedError;
+
+ /** L3FIR[10]
+ * L3 cache write data CE from L2
+ */
+ (rL3FIR, bit(10)) ? self_th_32perDay;
+
+ /** L3FIR[11]
+ * L3 cache write data UE from L2
+ */
+ (rL3FIR, bit(11)) ? l3_cache_ue_UERE;
+
+ /** L3FIR[12]
+ * L3 cache write SUE from L2
+ */
+ (rL3FIR, bit(12)) ? defaultMaskedError;
+
+ /** L3FIR[13]
+ * L3 DIR read CE
+ */
+ (rL3FIR, bit(13)) ? l3_dir_ce;
+
+ /** L3FIR[14]
+ * L3 Dir read UE
+ */
+ (rL3FIR, bit(14)) ? self_th_1;
+
+ /** L3FIR[15]
+ * Dir error not found during corr seq.
+ */
+ (rL3FIR, bit(15)) ? defaultMaskedError;
+
+ /** L3FIR[16]
+ * addr_error cresp for mem SN or CO
+ */
+ (rL3FIR, bit(16)) ? self_M_level2_L_th_1;
+
+ /** L3FIR[17]
+ * Received addr_error cresp for Prefetch
+ */
+ (rL3FIR, bit(17)) ? self_M_level2_L_th_1;
+
+ /** L3FIR[18]
+ * An L3 machine hung waiting for PB cresp
+ */
+ (rL3FIR, bit(18)) ? defaultMaskedError;
+
+ /** L3FIR[19]
+ * Invalid LRU count error
+ */
+ (rL3FIR, bit(19)) ? defaultMaskedError;
+
+ /** L3FIR[20]
+ * CE detected on PowerBus read for PPE
+ */
+ (rL3FIR, bit(20)) ? self_th_32perDay;
+
+ /** L3FIR[21]
+ * UE detected on PowerBus read for PPE
+ */
+ (rL3FIR, bit(21)) ? self_th_1_UERE;
+
+ /** L3FIR[22]
+ * L3 PPE SUE
+ */
+ (rL3FIR, bit(22)) ? defaultMaskedError;
+
+ /** L3FIR[23]
+ * L3 mach hang
+ */
+ (rL3FIR, bit(23)) ? self_M_level2_L_th_1;
+
+ /** L3FIR[24]
+ * L3 Hw control err
+ */
+ (rL3FIR, bit(24)) ? self_th_1;
+
+ /** L3FIR[25]
+ * Cache inhitited op in L3 directory
+ */
+ (rL3FIR, bit(25)) ? self_M_level2_L_th_1;
+
+ /** L3FIR[26]
+ * L3 line delete CE done
+ */
+ (rL3FIR, bit(26)) ? defaultMaskedError;
+
+ /** L3FIR[27]
+ * L3 DRAM logic error
+ */
+ (rL3FIR, bit(27)) ? self_th_1;
+
+ /** L3FIR[28]
+ * L3 LRU array parity error
+ */
+ (rL3FIR, bit(28)) ? l3_lru_parity_error;
+
+ /** L3FIR[29]
+ * L3 cache congruence class deleted
+ */
+ (rL3FIR, bit(29)) ? self_th_1;
+
+ /** L3FIR[30]
+ * L3 cache timer refresh error
+ */
+ (rL3FIR, bit(30)) ? self_th_1;
+
+ /** L3FIR[31]
+ * L3 PowerBus Master Write CRESP ack_dead
+ */
+ (rL3FIR, bit(31)) ? defaultMaskedError;
+
+ /** L3FIR[32]
+ * PB Master Read received ack_dead CRESP
+ */
+ (rL3FIR, bit(32)) ? defaultMaskedError;
+
+ /** L3FIR[33]
+ * scom error
+ */
+ (rL3FIR, bit(33)) ? defaultMaskedError;
+
+ /** L3FIR[34]
+ * scom error
+ */
+ (rL3FIR, bit(34)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 EX target CMEFIR
+################################################################################
+
+rule rCMEFIR
+{
+ CHECK_STOP:
+ CMEFIR & ~CMEFIR_MASK & ~CMEFIR_ACT0 & ~CMEFIR_ACT1;
+ RECOVERABLE:
+ CMEFIR & ~CMEFIR_MASK & ~CMEFIR_ACT0 & CMEFIR_ACT1;
+};
+
+group gCMEFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** CMEFIR[0]
+ * PPE asserted an internal error
+ */
+ (rCMEFIR, bit(0)) ? TBDDefaultCallout;
+
+ /** CMEFIR[1]
+ * PPE external interface error
+ */
+ (rCMEFIR, bit(1)) ? TBDDefaultCallout;
+
+ /** CMEFIR[2]
+ * PPE lack of forward progress
+ */
+ (rCMEFIR, bit(2)) ? TBDDefaultCallout;
+
+ /** CMEFIR[3]
+ * PPE software-requested breakpoint event.
+ */
+ (rCMEFIR, bit(3)) ? TBDDefaultCallout;
+
+ /** CMEFIR[4]
+ * PPE watchdog timeout
+ */
+ (rCMEFIR, bit(4)) ? TBDDefaultCallout;
+
+ /** CMEFIR[5]
+ * PPE asserted a halt condition.
+ */
+ (rCMEFIR, bit(5)) ? defaultMaskedError;
+
+ /** CMEFIR[6]
+ * PPE asserted a debug trigger
+ */
+ (rCMEFIR, bit(6)) ? defaultMaskedError;
+
+ /** CMEFIR[7]
+ * PPE SRAM Uncorrectable Error.
+ */
+ (rCMEFIR, bit(7)) ? self_th_1;
+
+ /** CMEFIR[8]
+ * SRAM Correctable Error
+ */
+ (rCMEFIR, bit(8)) ? threshold_and_mask_self;
+
+ /** CMEFIR[9]
+ * Scrub timer tick, scrub still pending
+ */
+ (rCMEFIR, bit(9)) ? threshold_and_mask_self;
+
+ /** CMEFIR[10]
+ * Block Copy Engine Error
+ */
+ (rCMEFIR, bit(10)) ? defaultMaskedError;
+
+ /** CMEFIR[11:12]
+ * spare
+ */
+ (rCMEFIR, bit(11|12)) ? defaultMaskedError;
+
+ /** CMEFIR[13]
+ * Dropout detected on Core0 Chiplet iVRM
+ */
+ (rCMEFIR, bit(13)) ? defaultMaskedError;
+
+ /** CMEFIR[14]
+ * Dropout detected on Core1 Chiplet iVRM
+ */
+ (rCMEFIR, bit(14)) ? defaultMaskedError;
+
+ /** CMEFIR[15]
+ * CME Dropout Cache Chiplet iVRM.
+ */
+ (rCMEFIR, bit(15)) ? defaultMaskedError;
+
+ /** CMEFIR[16]
+ * CME Extreme Droop over time exceeded
+ */
+ (rCMEFIR, bit(16)) ? defaultMaskedError;
+
+ /** CMEFIR[17]
+ * CME Large Droop exceeded
+ */
+ (rCMEFIR, bit(17)) ? defaultMaskedError;
+
+ /** CMEFIR[18]
+ * CME Small Droop exceeded
+ */
+ (rCMEFIR, bit(18)) ? defaultMaskedError;
+
+ /** CMEFIR[19]
+ * Detected non-thermometer code
+ */
+ (rCMEFIR, bit(19)) ? defaultMaskedError;
+
+ /** CMEFIR[20]
+ * scom error
+ */
+ (rCMEFIR, bit(20)) ? defaultMaskedError;
+
+ /** CMEFIR[21]
+ * scom error
+ */
+ (rCMEFIR, bit(21)) ? defaultMaskedError;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "p9_common_ex_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_mc.rule b/src/usr/diag/prdf/common/plat/axone/axone_mc.rule
new file mode 100644
index 000000000..4f63011fc
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_mc.rule
@@ -0,0 +1,671 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_mc.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
+
+chip axone_mc
+{
+ name "AXONE MC target";
+ targettype TYPE_MC;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # MC Chiplet FIR
+ ############################################################################
+
+ register MC_CHIPLET_CS_FIR
+ {
+ name "MC Chiplet Checkstop FIR";
+ scomaddr 0x07040000;
+ capture group default;
+ };
+
+ register MC_CHIPLET_RE_FIR
+ {
+ name "MC Chiplet Recoverable FIR";
+ scomaddr 0x07040001;
+ capture group default;
+ };
+
+ register MC_CHIPLET_FIR_MASK
+ {
+ name "MC Chiplet FIR MASK";
+ scomaddr 0x07040002;
+ capture group default;
+ };
+
+ ############################################################################
+ # MC Chiplet Unit Checkstop FIR
+ ############################################################################
+
+ register MC_CHIPLET_UCS_FIR
+ {
+ name "MC Chiplet Unit Checkstop FIR";
+ scomaddr 0x07040018;
+ capture group default;
+ };
+
+ register MC_CHIPLET_UCS_FIR_MASK
+ {
+ name "MC Chiplet Unit Checkstop FIR MASK";
+ scomaddr 0x07040019;
+ capture group default;
+ };
+
+ ############################################################################
+ # MC Chiplet Host Attention FIR
+ ############################################################################
+
+ register MC_CHIPLET_HA_FIR
+ {
+ name "MC Chiplet Host Attention FIR";
+ scomaddr 0x07040009;
+ capture group default;
+ };
+
+ register MC_CHIPLET_HA_FIR_MASK
+ {
+ name "MC Chiplet Host Attention FIR MASK";
+ scomaddr 0x0704001a;
+ capture group default;
+ };
+
+ ############################################################################
+ # P9 chip MC_LFIR
+ ############################################################################
+
+ register MC_LFIR
+ {
+ name "P9 chip MC_LFIR";
+ scomaddr 0x0704000a;
+ reset (&, 0x0704000b);
+ mask (|, 0x0704000f);
+ capture group default;
+ };
+
+ register MC_LFIR_MASK
+ {
+ name "P9 chip MC_LFIR MASK";
+ scomaddr 0x0704000d;
+ capture group default;
+ };
+
+ register MC_LFIR_ACT0
+ {
+ name "P9 chip MC_LFIR ACT0";
+ scomaddr 0x07040010;
+ capture group default;
+ capture req nonzero("MC_LFIR");
+ };
+
+ register MC_LFIR_ACT1
+ {
+ name "P9 chip MC_LFIR ACT1";
+ scomaddr 0x07040011;
+ capture group default;
+ capture req nonzero("MC_LFIR");
+ };
+
+ ############################################################################
+ # P9 MC target MCBISTFIR
+ ############################################################################
+
+ register MCBISTFIR
+ {
+ name "P9 MC target MCBISTFIR";
+ scomaddr 0x07012300;
+ reset (&, 0x07012301);
+ mask (|, 0x07012305);
+ capture group default;
+ };
+
+ register MCBISTFIR_MASK
+ {
+ name "P9 MC target MCBISTFIR MASK";
+ scomaddr 0x07012303;
+ capture group default;
+ };
+
+ register MCBISTFIR_ACT0
+ {
+ name "P9 MC target MCBISTFIR ACT0";
+ scomaddr 0x07012306;
+ capture group default;
+ capture req nonzero("MCBISTFIR");
+ };
+
+ register MCBISTFIR_ACT1
+ {
+ name "P9 MC target MCBISTFIR ACT1";
+ scomaddr 0x07012307;
+ capture group default;
+ capture req nonzero("MCBISTFIR");
+ };
+
+# Include registers not defined by the xml
+.include "axone_mc_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# MC Chiplet FIR
+################################################################################
+
+rule rMC_CHIPLET_FIR
+{
+ CHECK_STOP:
+ MC_CHIPLET_CS_FIR & ~MC_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+ RECOVERABLE:
+ (MC_CHIPLET_RE_FIR >> 2) & ~MC_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+};
+
+group gMC_CHIPLET_FIR attntype CHECK_STOP, RECOVERABLE
+ filter singlebit
+{
+ /** MC_CHIPLET_FIR[3]
+ * Attention from MC_LFIR
+ */
+ (rMC_CHIPLET_FIR, bit(3)) ? analyzeMC_LFIR;
+
+ /** MC_CHIPLET_FIR[4]
+ * Attention from DSTLFIR 0
+ */
+ (rMC_CHIPLET_FIR, bit(4)) ? analyzeConnectedMCC0;
+
+ /** MC_CHIPLET_FIR[5]
+ * Attention from USTLFIR 0
+ */
+ (rMC_CHIPLET_FIR, bit(5)) ? analyzeConnectedMCC0;
+
+ /** MC_CHIPLET_FIR[6]
+ * Attention from DSTLFIR 1
+ */
+ (rMC_CHIPLET_FIR, bit(6)) ? analyzeConnectedMCC1;
+
+ /** MC_CHIPLET_FIR[7]
+ * Attention from USTLFIR 1
+ */
+ (rMC_CHIPLET_FIR, bit(7)) ? analyzeConnectedMCC1;
+
+ /** MC_CHIPLET_FIR[8]
+ * Attention from DSTLFIR 2
+ */
+ (rMC_CHIPLET_FIR, bit(8)) ? analyzeConnectedMCC2;
+
+ /** MC_CHIPLET_FIR[9]
+ * Attention from USTLFIR 2
+ */
+ (rMC_CHIPLET_FIR, bit(9)) ? analyzeConnectedMCC2;
+
+ /** MC_CHIPLET_FIR[10]
+ * Attention from DSTLFIR 3
+ */
+ (rMC_CHIPLET_FIR, bit(10)) ? analyzeConnectedMCC3;
+
+ /** MC_CHIPLET_FIR[11]
+ * Attention from USTLFIR 3
+ */
+ (rMC_CHIPLET_FIR, bit(11)) ? analyzeConnectedMCC3;
+
+ /** MC_CHIPLET_FIR[12]
+ * Attention from MCBISTFIR
+ */
+ (rMC_CHIPLET_FIR, bit(12)) ? analyzeMCBISTFIR;
+
+ /** MC_CHIPLET_FIR[13]
+ * Attention from IOOMIFIR 0
+ */
+ (rMC_CHIPLET_FIR, bit(13)) ? analyzeConnectedOMIC0;
+
+ /** MC_CHIPLET_FIR[14]
+ * Attention from IOOMIFIR 1
+ */
+ (rMC_CHIPLET_FIR, bit(14)) ? analyzeConnectedOMIC1;
+
+ /** MC_CHIPLET_FIR[15]
+ * Attention from IOOMIFIR 2
+ */
+ (rMC_CHIPLET_FIR, bit(15)) ? analyzeConnectedOMIC2;
+
+ /** MC_CHIPLET_FIR[16]
+ * Attention from MCPPEFIR 0
+ */
+ (rMC_CHIPLET_FIR, bit(16)) ? analyzeConnectedOMIC0;
+
+ /** MC_CHIPLET_FIR[17]
+ * Attention from MCPPEFIR 1
+ */
+ (rMC_CHIPLET_FIR, bit(17)) ? analyzeConnectedOMIC1;
+
+ /** MC_CHIPLET_FIR[18]
+ * Attention from MCPPEFIR 2
+ */
+ (rMC_CHIPLET_FIR, bit(18)) ? analyzeConnectedOMIC2;
+
+ /** MC_CHIPLET_FIR[19]
+ * Attention from OMIDLFIR 0
+ */
+ (rMC_CHIPLET_FIR, bit(19)) ? analyzeConnectedOMIC0;
+
+ /** MC_CHIPLET_FIR[20]
+ * Attention from OMIDLFIR 1
+ */
+ (rMC_CHIPLET_FIR, bit(20)) ? analyzeConnectedOMIC1;
+
+ /** MC_CHIPLET_FIR[21]
+ * Attention from OMIDLFIR 2
+ */
+ (rMC_CHIPLET_FIR, bit(21)) ? analyzeConnectedOMIC2;
+
+};
+
+################################################################################
+# MC Chiplet Unit Checkstop FIR
+################################################################################
+
+rule rMC_CHIPLET_UCS_FIR
+{
+ UNIT_CS:
+ MC_CHIPLET_UCS_FIR & ~(MC_CHIPLET_UCS_FIR_MASK >> 1) & `7fffffffffffffff`;
+};
+
+group gMC_CHIPLET_UCS_FIR attntype UNIT_CS
+ filter singlebit
+{
+ /** MC_CHIPLET_UCS_FIR[1]
+ * Attention from DSTLFIR 0
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(1)) ? analyzeConnectedMCC0;
+
+ /** MC_CHIPLET_UCS_FIR[2]
+ * Attention from USTLFIR 0
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(2)) ? analyzeConnectedMCC0;
+
+ /** MC_CHIPLET_UCS_FIR[3]
+ * Attention from DSTLFIR 1
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(3)) ? analyzeConnectedMCC1;
+
+ /** MC_CHIPLET_UCS_FIR[4]
+ * Attention from USTLFIR 1
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(4)) ? analyzeConnectedMCC1;
+
+ /** MC_CHIPLET_UCS_FIR[5]
+ * Attention from DSTLFIR 2
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(5)) ? analyzeConnectedMCC2;
+
+ /** MC_CHIPLET_UCS_FIR[6]
+ * Attention from USTLFIR 2
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(6)) ? analyzeConnectedMCC2;
+
+ /** MC_CHIPLET_UCS_FIR[7]
+ * Attention from DSTLFIR 3
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(7)) ? analyzeConnectedMCC3;
+
+ /** MC_CHIPLET_UCS_FIR[8]
+ * Attention from USTLFIR 3
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(8)) ? analyzeConnectedMCC3;
+
+ /** MC_CHIPLET_UCS_FIR[9]
+ * Attention from MCBISTFIR
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(9)) ? analyzeMCBISTFIR;
+
+ /** MC_CHIPLET_UCS_FIR[10]
+ * Attention from IOOMIFIR 0
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(10)) ? analyzeConnectedOMIC0;
+
+ /** MC_CHIPLET_UCS_FIR[11]
+ * Attention from IOOMIFIR 1
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(11)) ? analyzeConnectedOMIC1;
+
+ /** MC_CHIPLET_UCS_FIR[12]
+ * Attention from IOOMIFIR 2
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(12)) ? analyzeConnectedOMIC2;
+
+ /** MC_CHIPLET_UCS_FIR[13]
+ * Attention from MCPPEFIR 0
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(13)) ? analyzeConnectedOMIC0;
+
+ /** MC_CHIPLET_UCS_FIR[14]
+ * Attention from MCPPEFIR 1
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(14)) ? analyzeConnectedOMIC1;
+
+ /** MC_CHIPLET_UCS_FIR[15]
+ * Attention from MCPPEFIR 2
+ */
+ (rMC_CHIPLET_UCS_FIR, bit(15)) ? analyzeConnectedOMIC2;
+
+};
+
+################################################################################
+# MC Chiplet Host Attention FIR
+################################################################################
+
+rule rMC_CHIPLET_HA_FIR
+{
+ HOST_ATTN:
+ MC_CHIPLET_HA_FIR & ~(MC_CHIPLET_HA_FIR_MASK >> 1) & `7fffffffffffffff`;
+};
+
+group gMC_CHIPLET_HA_FIR attntype HOST_ATTN
+ filter singlebit
+{
+ /** MC_CHIPLET_HA_FIR[1]
+ * Attention from DSTLFIR 0
+ */
+ (rMC_CHIPLET_HA_FIR, bit(1)) ? analyzeConnectedMCC0;
+
+ /** MC_CHIPLET_HA_FIR[2]
+ * Attention from USTLFIR 0
+ */
+ (rMC_CHIPLET_HA_FIR, bit(2)) ? analyzeConnectedMCC0;
+
+ /** MC_CHIPLET_HA_FIR[3]
+ * Attention from DSTLFIR 1
+ */
+ (rMC_CHIPLET_HA_FIR, bit(3)) ? analyzeConnectedMCC1;
+
+ /** MC_CHIPLET_HA_FIR[4]
+ * Attention from USTLFIR 1
+ */
+ (rMC_CHIPLET_HA_FIR, bit(4)) ? analyzeConnectedMCC1;
+
+ /** MC_CHIPLET_HA_FIR[5]
+ * Attention from DSTLFIR 2
+ */
+ (rMC_CHIPLET_HA_FIR, bit(5)) ? analyzeConnectedMCC2;
+
+ /** MC_CHIPLET_HA_FIR[6]
+ * Attention from USTLFIR 2
+ */
+ (rMC_CHIPLET_HA_FIR, bit(6)) ? analyzeConnectedMCC2;
+
+ /** MC_CHIPLET_HA_FIR[7]
+ * Attention from DSTLFIR 3
+ */
+ (rMC_CHIPLET_HA_FIR, bit(7)) ? analyzeConnectedMCC3;
+
+ /** MC_CHIPLET_HA_FIR[8]
+ * Attention from USTLFIR 3
+ */
+ (rMC_CHIPLET_HA_FIR, bit(8)) ? analyzeConnectedMCC3;
+
+ /** MC_CHIPLET_HA_FIR[9]
+ * Attention from MCBISTFIR
+ */
+ (rMC_CHIPLET_HA_FIR, bit(9)) ? analyzeMCBISTFIR;
+
+};
+
+################################################################################
+# P9 chip MC_LFIR
+################################################################################
+
+rule rMC_LFIR
+{
+ CHECK_STOP:
+ MC_LFIR & ~MC_LFIR_MASK & ~MC_LFIR_ACT0 & ~MC_LFIR_ACT1;
+ RECOVERABLE:
+ MC_LFIR & ~MC_LFIR_MASK & ~MC_LFIR_ACT0 & MC_LFIR_ACT1;
+};
+
+group gMC_LFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** MC_LFIR[0]
+ * CFIR internal parity error
+ */
+ (rMC_LFIR, bit(0)) ? self_th_32perDay;
+
+ /** MC_LFIR[1]
+ * Chiplet Control Reg: PCB Access Error
+ */
+ (rMC_LFIR, bit(1)) ? self_th_32perDay;
+
+ /** MC_LFIR[2]
+ * Clock Controller: PCB Access Error
+ */
+ (rMC_LFIR, bit(2)) ? self_th_32perDay;
+
+ /** MC_LFIR[3]
+ * Clock Controller: Summarized Error
+ */
+ (rMC_LFIR, bit(3)) ? self_th_32perDay;
+
+ /** MC_LFIR[4]
+ * PSCOM Logic: PCB Access Error
+ */
+ (rMC_LFIR, bit(4)) ? defaultMaskedError;
+
+ /** MC_LFIR[5]
+ * PSCOM Logic: Summarized internal errors
+ */
+ (rMC_LFIR, bit(5)) ? defaultMaskedError;
+
+ /** MC_LFIR[6]
+ * Therm Logic: Summarized internal errors
+ */
+ (rMC_LFIR, bit(6)) ? defaultMaskedError;
+
+ /** MC_LFIR[7]
+ * Therm Logic: PCB Access Error
+ */
+ (rMC_LFIR, bit(7)) ? defaultMaskedError;
+
+ /** MC_LFIR[8]
+ * Therm Logic: Temperature critical trip
+ */
+ (rMC_LFIR, bit(8)) ? defaultMaskedError;
+
+ /** MC_LFIR[9]
+ * Therm Logic: Temperature fatal trip
+ */
+ (rMC_LFIR, bit(9)) ? defaultMaskedError;
+
+ /** MC_LFIR[10]
+ * UNUSED in P9
+ */
+ (rMC_LFIR, bit(10)) ? defaultMaskedError;
+
+ /** MC_LFIR[11]
+ * Debug Logic: Scom Satellite Error
+ */
+ (rMC_LFIR, bit(11)) ? defaultMaskedError;
+
+ /** MC_LFIR[12]
+ * Scom Satellite Error - Trace0
+ */
+ (rMC_LFIR, bit(12)) ? defaultMaskedError;
+
+ /** MC_LFIR[13]
+ * Scom Satellite Error - Trace0
+ */
+ (rMC_LFIR, bit(13)) ? defaultMaskedError;
+
+ /** MC_LFIR[14]
+ * Scom Satellite Error - Trace1
+ */
+ (rMC_LFIR, bit(14)) ? defaultMaskedError;
+
+ /** MC_LFIR[15]
+ * Scom Satellite Error - Trace1
+ */
+ (rMC_LFIR, bit(15)) ? defaultMaskedError;
+
+ /** MC_LFIR[16:40]
+ * spare
+ */
+ (rMC_LFIR, bit(16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40)) ? defaultMaskedError;
+
+ /** MC_LFIR[41]
+ * Malfunction Alert or Local Checkstop
+ */
+ (rMC_LFIR, bit(41)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 MC target MCBISTFIR
+################################################################################
+
+rule rMCBISTFIR
+{
+ CHECK_STOP:
+ MCBISTFIR & ~MCBISTFIR_MASK & ~MCBISTFIR_ACT0 & ~MCBISTFIR_ACT1;
+ RECOVERABLE:
+ MCBISTFIR & ~MCBISTFIR_MASK & ~MCBISTFIR_ACT0 & MCBISTFIR_ACT1;
+ HOST_ATTN:
+ MCBISTFIR & ~MCBISTFIR_MASK & MCBISTFIR_ACT0 & ~MCBISTFIR_ACT1;
+ UNIT_CS:
+ MCBISTFIR & ~MCBISTFIR_MASK & MCBISTFIR_ACT0 & MCBISTFIR_ACT1;
+};
+
+group gMCBISTFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** MCBISTFIR[0]
+ * WAT debug bus attn
+ */
+ (rMCBISTFIR, bit(0)) ? defaultMaskedError;
+
+ /** MCBISTFIR[1]
+ * WAT debug register parity error
+ */
+ (rMCBISTFIR, bit(1)) ? defaultMaskedError;
+
+ /** MCBISTFIR[2]
+ * SCOM recoverable register parity error
+ */
+ (rMCBISTFIR, bit(2)) ? defaultMaskedError;
+
+ /** MCBISTFIR[3]
+ * Spare
+ */
+ (rMCBISTFIR, bit(3)) ? defaultMaskedError;
+
+ /** MCBISTFIR[4]
+ * Chan 0A application interrupt
+ */
+ (rMCBISTFIR, bit(4)) ? defaultMaskedError;
+
+ /** MCBISTFIR[5]
+ * Chan 0B application interrupt
+ */
+ (rMCBISTFIR, bit(5)) ? defaultMaskedError;
+
+ /** MCBISTFIR[6]
+ * Chan 1A application interrupt
+ */
+ (rMCBISTFIR, bit(6)) ? defaultMaskedError;
+
+ /** MCBISTFIR[7]
+ * Chan 1B application interrupt
+ */
+ (rMCBISTFIR, bit(7)) ? defaultMaskedError;
+
+ /** MCBISTFIR[8]
+ * Chan 2A application interrupt
+ */
+ (rMCBISTFIR, bit(8)) ? defaultMaskedError;
+
+ /** MCBISTFIR[9]
+ * Chan 2B application interrupt
+ */
+ (rMCBISTFIR, bit(9)) ? defaultMaskedError;
+
+ /** MCBISTFIR[10]
+ * Chan 3A application interrupt
+ */
+ (rMCBISTFIR, bit(10)) ? defaultMaskedError;
+
+ /** MCBISTFIR[11]
+ * Chan 3B application interrupt
+ */
+ (rMCBISTFIR, bit(11)) ? defaultMaskedError;
+
+ /** MCBISTFIR[12]
+ * Internal SCOM error
+ */
+ (rMCBISTFIR, bit(12)) ? defaultMaskedError;
+
+ /** MCBISTFIR[13]
+ * Internal SCOM error clone
+ */
+ (rMCBISTFIR, bit(13)) ? defaultMaskedError;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "axone_mc_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_mc_actions.rule b/src/usr/diag/prdf/common/plat/axone/axone_mc_actions.rule
new file mode 100644
index 000000000..aab2297ef
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_mc_actions.rule
@@ -0,0 +1,45 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_mc_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 groups
+###############################################################################
+
+actionclass analyzeMC_LFIR { analyze(gMC_LFIR); };
+actionclass analyzeMCBISTFIR { analyze(gMCBISTFIR); };
+
+###############################################################################
+# Analyze connected
+###############################################################################
+
+actionclass analyzeConnectedMCC0 { analyze(connected(TYPE_MCC, 0)); };
+actionclass analyzeConnectedMCC1 { analyze(connected(TYPE_MCC, 1)); };
+actionclass analyzeConnectedMCC2 { analyze(connected(TYPE_MCC, 2)); };
+actionclass analyzeConnectedMCC3 { analyze(connected(TYPE_MCC, 3)); };
+
+actionclass analyzeConnectedOMIC0 { analyze(connected(TYPE_OMIC, 0)); };
+actionclass analyzeConnectedOMIC1 { analyze(connected(TYPE_OMIC, 1)); };
+actionclass analyzeConnectedOMIC2 { analyze(connected(TYPE_OMIC, 2)); };
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_mcc.rule b/src/usr/diag/prdf/common/plat/axone/axone_mcc.rule
new file mode 100644
index 000000000..bf632abbb
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_mcc.rule
@@ -0,0 +1,658 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_mcc.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
+
+chip axone_mcc
+{
+ name "AXONE MCC target";
+ targettype TYPE_MCC;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # P9 MCC target DSTLFIR
+ ############################################################################
+
+ register DSTLFIR
+ {
+ name "P9 MCC target DSTLFIR";
+ scomaddr 0x07010900;
+ reset (&, 0x07010901);
+ mask (|, 0x07010905);
+ capture group default;
+ };
+
+ register DSTLFIR_MASK
+ {
+ name "P9 MCC target DSTLFIR MASK";
+ scomaddr 0x07010903;
+ capture group default;
+ };
+
+ register DSTLFIR_ACT0
+ {
+ name "P9 MCC target DSTLFIR ACT0";
+ scomaddr 0x07010906;
+ capture group default;
+ capture req nonzero("DSTLFIR");
+ };
+
+ register DSTLFIR_ACT1
+ {
+ name "P9 MCC target DSTLFIR ACT1";
+ scomaddr 0x07010907;
+ capture group default;
+ capture req nonzero("DSTLFIR");
+ };
+
+ ############################################################################
+ # P9 MCC target USTLFIR
+ ############################################################################
+
+ register USTLFIR
+ {
+ name "P9 MCC target USTLFIR";
+ scomaddr 0x07010a00;
+ reset (&, 0x07010a01);
+ mask (|, 0x07010a05);
+ capture group default;
+ };
+
+ register USTLFIR_MASK
+ {
+ name "P9 MCC target USTLFIR MASK";
+ scomaddr 0x07010a03;
+ capture group default;
+ };
+
+ register USTLFIR_ACT0
+ {
+ name "P9 MCC target USTLFIR ACT0";
+ scomaddr 0x07010a06;
+ capture group default;
+ capture req nonzero("USTLFIR");
+ };
+
+ register USTLFIR_ACT1
+ {
+ name "P9 MCC target USTLFIR ACT1";
+ scomaddr 0x07010a07;
+ capture group default;
+ capture req nonzero("USTLFIR");
+ };
+
+# Include registers not defined by the xml
+.include "axone_mcc_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# Summary for MCC
+################################################################################
+
+rule rMCC
+{
+ CHECK_STOP:
+ summary( 0, rDSTLFIR ) |
+ summary( 1, rUSTLFIR );
+
+ RECOVERABLE:
+ summary( 0, rDSTLFIR ) |
+ summary( 1, rUSTLFIR );
+
+ UNIT_CS:
+ summary( 0, rDSTLFIR ) |
+ summary( 1, rUSTLFIR );
+
+ HOST_ATTN:
+ summary( 0, rDSTLFIR ) |
+ summary( 1, rUSTLFIR );
+
+};
+
+group gMCC attntype CHECK_STOP, RECOVERABLE, UNIT_CS, HOST_ATTN
+ filter singlebit
+{
+ (rMCC, bit(0)) ? analyzeDSTLFIR;
+ (rMCC, bit(1)) ? analyzeUSTLFIR;
+};
+
+################################################################################
+# P9 MCC target DSTLFIR
+################################################################################
+
+rule rDSTLFIR
+{
+ CHECK_STOP:
+ DSTLFIR & ~DSTLFIR_MASK & ~DSTLFIR_ACT0 & ~DSTLFIR_ACT1;
+ RECOVERABLE:
+ DSTLFIR & ~DSTLFIR_MASK & ~DSTLFIR_ACT0 & DSTLFIR_ACT1;
+ HOST_ATTN:
+ DSTLFIR & ~DSTLFIR_MASK & DSTLFIR_ACT0 & ~DSTLFIR_ACT1;
+ UNIT_CS:
+ DSTLFIR & ~DSTLFIR_MASK & DSTLFIR_ACT0 & DSTLFIR_ACT1;
+};
+
+group gDSTLFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** DSTLFIR[0]
+ * AFU initiated Checkstop on Subchannel A
+ */
+ (rDSTLFIR, bit(0)) ? defaultMaskedError;
+
+ /** DSTLFIR[1]
+ * AFU initiated Recoverable Attn on Subchannel A
+ */
+ (rDSTLFIR, bit(1)) ? defaultMaskedError;
+
+ /** DSTLFIR[2]
+ * AFU initiated Special Attn on Subchannel A
+ */
+ (rDSTLFIR, bit(2)) ? defaultMaskedError;
+
+ /** DSTLFIR[3]
+ * AFU initiated Application Interrupt Attn on Subchannel A
+ */
+ (rDSTLFIR, bit(3)) ? defaultMaskedError;
+
+ /** DSTLFIR[4]
+ * AFU initiated Checkstop on Subchannel B
+ */
+ (rDSTLFIR, bit(4)) ? defaultMaskedError;
+
+ /** DSTLFIR[5]
+ * AFU initiated Recoverable Attn on Subchannel B
+ */
+ (rDSTLFIR, bit(5)) ? defaultMaskedError;
+
+ /** DSTLFIR[6]
+ * AFU initiated Special Attn on Subchannel B
+ */
+ (rDSTLFIR, bit(6)) ? defaultMaskedError;
+
+ /** DSTLFIR[7]
+ * AFU initiated Application Interrupt Attn on Subchannel B
+ */
+ (rDSTLFIR, bit(7)) ? defaultMaskedError;
+
+ /** DSTLFIR[8]
+ * Async crossing parity error
+ */
+ (rDSTLFIR, bit(8)) ? defaultMaskedError;
+
+ /** DSTLFIR[9]
+ * Async crossing sequence error
+ */
+ (rDSTLFIR, bit(9)) ? defaultMaskedError;
+
+ /** DSTLFIR[10]
+ * Config reg recoverable parity error
+ */
+ (rDSTLFIR, bit(10)) ? defaultMaskedError;
+
+ /** DSTLFIR[11]
+ * Config reg fatal parity error
+ */
+ (rDSTLFIR, bit(11)) ? defaultMaskedError;
+
+ /** DSTLFIR[12]
+ * Subchannel A counter error
+ */
+ (rDSTLFIR, bit(12)) ? defaultMaskedError;
+
+ /** DSTLFIR[13]
+ * Subchannel B counter error
+ */
+ (rDSTLFIR, bit(13)) ? defaultMaskedError;
+
+ /** DSTLFIR[14]
+ * Subchannel A timeout error
+ */
+ (rDSTLFIR, bit(14)) ? defaultMaskedError;
+
+ /** DSTLFIR[15]
+ * Subchannel B timeout error
+ */
+ (rDSTLFIR, bit(15)) ? defaultMaskedError;
+
+ /** DSTLFIR[16]
+ * Subchannel A buffer overuse error
+ */
+ (rDSTLFIR, bit(16)) ? defaultMaskedError;
+
+ /** DSTLFIR[17]
+ * Subchannel B buffer overuse error
+ */
+ (rDSTLFIR, bit(17)) ? defaultMaskedError;
+
+ /** DSTLFIR[18]
+ * Subchannel A DL link down
+ */
+ (rDSTLFIR, bit(18)) ? defaultMaskedError;
+
+ /** DSTLFIR[19]
+ * Subchannel B DL link down
+ */
+ (rDSTLFIR, bit(19)) ? defaultMaskedError;
+
+ /** DSTLFIR[20]
+ * Subchannel A fail action
+ */
+ (rDSTLFIR, bit(20)) ? defaultMaskedError;
+
+ /** DSTLFIR[21]
+ * Subchannel B fail action
+ */
+ (rDSTLFIR, bit(21)) ? defaultMaskedError;
+
+ /** DSTLFIR[22]
+ * Internal SCOM error
+ */
+ (rDSTLFIR, bit(22)) ? defaultMaskedError;
+
+ /** DSTLFIR[23]
+ * Internal SCOM error clone
+ */
+ (rDSTLFIR, bit(23)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 MCC target USTLFIR
+################################################################################
+
+rule rUSTLFIR
+{
+ CHECK_STOP:
+ USTLFIR & ~USTLFIR_MASK & ~USTLFIR_ACT0 & ~USTLFIR_ACT1;
+ RECOVERABLE:
+ USTLFIR & ~USTLFIR_MASK & ~USTLFIR_ACT0 & USTLFIR_ACT1;
+ HOST_ATTN:
+ USTLFIR & ~USTLFIR_MASK & USTLFIR_ACT0 & ~USTLFIR_ACT1;
+ UNIT_CS:
+ USTLFIR & ~USTLFIR_MASK & USTLFIR_ACT0 & USTLFIR_ACT1;
+};
+
+group gUSTLFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** USTLFIR[0]
+ * Chan A unexpected data error
+ */
+ (rUSTLFIR, bit(0)) ? defaultMaskedError;
+
+ /** USTLFIR[1]
+ * Chan B unexpected data error
+ */
+ (rUSTLFIR, bit(1)) ? defaultMaskedError;
+
+ /** USTLFIR[2]
+ * Chan A invalid template error
+ */
+ (rUSTLFIR, bit(2)) ? defaultMaskedError;
+
+ /** USTLFIR[3]
+ * Chan B invalid template error
+ */
+ (rUSTLFIR, bit(3)) ? defaultMaskedError;
+
+ /** USTLFIR[4]
+ * Chan A half speed mode
+ */
+ (rUSTLFIR, bit(4)) ? defaultMaskedError;
+
+ /** USTLFIR[5]
+ * Chan B half speed mode
+ */
+ (rUSTLFIR, bit(5)) ? defaultMaskedError;
+
+ /** USTLFIR[6]
+ * WDF buffer CE
+ */
+ (rUSTLFIR, bit(6)) ? defaultMaskedError;
+
+ /** USTLFIR[7]
+ * WDF buffer UE
+ */
+ (rUSTLFIR, bit(7)) ? defaultMaskedError;
+
+ /** USTLFIR[8]
+ * WDF buffer SUE
+ */
+ (rUSTLFIR, bit(8)) ? defaultMaskedError;
+
+ /** USTLFIR[9]
+ * WDF buffer overrun
+ */
+ (rUSTLFIR, bit(9)) ? defaultMaskedError;
+
+ /** USTLFIR[10]
+ * WDF tag parity error
+ */
+ (rUSTLFIR, bit(10)) ? defaultMaskedError;
+
+ /** USTLFIR[11]
+ * WDF scom sequencer error
+ */
+ (rUSTLFIR, bit(11)) ? defaultMaskedError;
+
+ /** USTLFIR[12]
+ * WDF pwctl sequencer error
+ */
+ (rUSTLFIR, bit(12)) ? defaultMaskedError;
+
+ /** USTLFIR[13]
+ * WDF misc_reg parity error
+ */
+ (rUSTLFIR, bit(13)) ? defaultMaskedError;
+
+ /** USTLFIR[14]
+ * WDF MCA async error
+ */
+ (rUSTLFIR, bit(14)) ? defaultMaskedError;
+
+ /** USTLFIR[15]
+ * WDF Data Syndrome NE0
+ */
+ (rUSTLFIR, bit(15)) ? defaultMaskedError;
+
+ /** USTLFIR[16]
+ * WDF CMT parity error
+ */
+ (rUSTLFIR, bit(16)) ? defaultMaskedError;
+
+ /** USTLFIR[17]
+ * TBD
+ */
+ (rUSTLFIR, bit(17)) ? defaultMaskedError;
+
+ /** USTLFIR[18]
+ * TBD
+ */
+ (rUSTLFIR, bit(18)) ? defaultMaskedError;
+
+ /** USTLFIR[19]
+ * TBD
+ */
+ (rUSTLFIR, bit(19)) ? defaultMaskedError;
+
+ /** USTLFIR[20]
+ * WRT Buffer CE
+ */
+ (rUSTLFIR, bit(20)) ? defaultMaskedError;
+
+ /** USTLFIR[21]
+ * WRT Buffer UE
+ */
+ (rUSTLFIR, bit(21)) ? defaultMaskedError;
+
+ /** USTLFIR[22]
+ * WRT Buffer SUE
+ */
+ (rUSTLFIR, bit(22)) ? defaultMaskedError;
+
+ /** USTLFIR[23]
+ * WRT scom sequencer error
+ */
+ (rUSTLFIR, bit(23)) ? defaultMaskedError;
+
+ /** USTLFIR[24]
+ * WRT misc_reg parity error
+ */
+ (rUSTLFIR, bit(24)) ? defaultMaskedError;
+
+ /** USTLFIR[25:26]
+ * WRT error information spares
+ */
+ (rUSTLFIR, bit(25|26)) ? defaultMaskedError;
+
+ /** USTLFIR[27]
+ * Chan A fail response checkstop
+ */
+ (rUSTLFIR, bit(27)) ? defaultMaskedError;
+
+ /** USTLFIR[28]
+ * Chan B fail response checkstop
+ */
+ (rUSTLFIR, bit(28)) ? defaultMaskedError;
+
+ /** USTLFIR[29]
+ * Chan A fail response recoverable
+ */
+ (rUSTLFIR, bit(29)) ? defaultMaskedError;
+
+ /** USTLFIR[30]
+ * Chan B fail response recoverable
+ */
+ (rUSTLFIR, bit(30)) ? defaultMaskedError;
+
+ /** USTLFIR[31]
+ * Chan A lol drop checkstop
+ */
+ (rUSTLFIR, bit(31)) ? defaultMaskedError;
+
+ /** USTLFIR[32]
+ * Chan B lol drop checkstop
+ */
+ (rUSTLFIR, bit(32)) ? defaultMaskedError;
+
+ /** USTLFIR[33]
+ * Chan A lol drop recoverable
+ */
+ (rUSTLFIR, bit(33)) ? defaultMaskedError;
+
+ /** USTLFIR[34]
+ * Chan B lol drop recoverable
+ */
+ (rUSTLFIR, bit(34)) ? defaultMaskedError;
+
+ /** USTLFIR[35]
+ * Chan A flit parity error
+ */
+ (rUSTLFIR, bit(35)) ? defaultMaskedError;
+
+ /** USTLFIR[36]
+ * Chan B flit parity error
+ */
+ (rUSTLFIR, bit(36)) ? defaultMaskedError;
+
+ /** USTLFIR[37]
+ * Chan A fatal parity error
+ */
+ (rUSTLFIR, bit(37)) ? defaultMaskedError;
+
+ /** USTLFIR[38]
+ * Chan B fatal parity error
+ */
+ (rUSTLFIR, bit(38)) ? defaultMaskedError;
+
+ /** USTLFIR[39]
+ * Chan A more than 2 data flits for template 9
+ */
+ (rUSTLFIR, bit(39)) ? defaultMaskedError;
+
+ /** USTLFIR[40]
+ * Chan B more than 2 data flits for template 9
+ */
+ (rUSTLFIR, bit(40)) ? defaultMaskedError;
+
+ /** USTLFIR[41]
+ * Chan A excess bad data bits
+ */
+ (rUSTLFIR, bit(41)) ? defaultMaskedError;
+
+ /** USTLFIR[42]
+ * Chan B excess bad data bits
+ */
+ (rUSTLFIR, bit(42)) ? defaultMaskedError;
+
+ /** USTLFIR[43]
+ * Chan A memory read data returned in template 0
+ */
+ (rUSTLFIR, bit(43)) ? defaultMaskedError;
+
+ /** USTLFIR[44]
+ * Chan B memory read data returned in template 0
+ */
+ (rUSTLFIR, bit(44)) ? defaultMaskedError;
+
+ /** USTLFIR[45]
+ * Chan A MMIO in lol mode
+ */
+ (rUSTLFIR, bit(45)) ? defaultMaskedError;
+
+ /** USTLFIR[46]
+ * Chan B MMIO in lol mode
+ */
+ (rUSTLFIR, bit(46)) ? defaultMaskedError;
+
+ /** USTLFIR[47]
+ * Chan A bad data
+ */
+ (rUSTLFIR, bit(47)) ? defaultMaskedError;
+
+ /** USTLFIR[48]
+ * Chan B bad data
+ */
+ (rUSTLFIR, bit(48)) ? defaultMaskedError;
+
+ /** USTLFIR[49]
+ * Chan A excess data error
+ */
+ (rUSTLFIR, bit(49)) ? defaultMaskedError;
+
+ /** USTLFIR[50]
+ * Chan B excess data error
+ */
+ (rUSTLFIR, bit(50)) ? defaultMaskedError;
+
+ /** USTLFIR[51]
+ * Chan A Bad CRC data not valid error
+ */
+ (rUSTLFIR, bit(51)) ? defaultMaskedError;
+
+ /** USTLFIR[52]
+ * Chan B Bad CRC data not valid error
+ */
+ (rUSTLFIR, bit(52)) ? defaultMaskedError;
+
+ /** USTLFIR[53]
+ * Chan A FIFO overflow error
+ */
+ (rUSTLFIR, bit(53)) ? defaultMaskedError;
+
+ /** USTLFIR[54]
+ * Chan B FIFO overflow error
+ */
+ (rUSTLFIR, bit(54)) ? defaultMaskedError;
+
+ /** USTLFIR[55]
+ * Chan A invalid cmd error
+ */
+ (rUSTLFIR, bit(55)) ? defaultMaskedError;
+
+ /** USTLFIR[56]
+ * Chan B invalid cmd error
+ */
+ (rUSTLFIR, bit(56)) ? defaultMaskedError;
+
+ /** USTLFIR[57]
+ * Fatal reg parity error
+ */
+ (rUSTLFIR, bit(57)) ? defaultMaskedError;
+
+ /** USTLFIR[58]
+ * Recoverable reg parity error
+ */
+ (rUSTLFIR, bit(58)) ? defaultMaskedError;
+
+ /** USTLFIR[59]
+ * Chan A invalid DL DP combo
+ */
+ (rUSTLFIR, bit(59)) ? defaultMaskedError;
+
+ /** USTLFIR[60]
+ * Chan B invalid DL DP combo
+ */
+ (rUSTLFIR, bit(60)) ? defaultMaskedError;
+
+ /** USTLFIR[61]
+ * spare
+ */
+ (rUSTLFIR, bit(61)) ? defaultMaskedError;
+
+ /** USTLFIR[62]
+ * Internal parity error
+ */
+ (rUSTLFIR, bit(62)) ? defaultMaskedError;
+
+ /** USTLFIR[63]
+ * Internal parity error copy
+ */
+ (rUSTLFIR, bit(63)) ? defaultMaskedError;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "axone_mcc_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_mcc_actions.rule b/src/usr/diag/prdf/common/plat/axone/axone_mcc_actions.rule
new file mode 100644
index 000000000..38edbaaea
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_mcc_actions.rule
@@ -0,0 +1,32 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_mcc_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
+
+################################################################################
+# Analyze groups
+################################################################################
+
+actionclass analyzeDSTLFIR { analyze(gDSTLFIR); };
+actionclass analyzeUSTLFIR { analyze(gUSTLFIR); };
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_mi.rule b/src/usr/diag/prdf/common/plat/axone/axone_mi.rule
new file mode 100644
index 000000000..3acae6371
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_mi.rule
@@ -0,0 +1,260 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_mi.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
+
+chip axone_mi
+{
+ name "AXONE MI target";
+ targettype TYPE_MI;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # P9 MI target MCFIR
+ ############################################################################
+
+ register MCFIR
+ {
+ name "P9 MI target MCFIR";
+ scomaddr 0x05010800;
+ reset (&, 0x05010801);
+ mask (|, 0x05010805);
+ capture group default;
+ };
+
+ register MCFIR_MASK
+ {
+ name "P9 MI target MCFIR MASK";
+ scomaddr 0x05010803;
+ capture group default;
+ };
+
+ register MCFIR_ACT0
+ {
+ name "P9 MI target MCFIR ACT0";
+ scomaddr 0x05010806;
+ capture group default;
+ capture req nonzero("MCFIR");
+ };
+
+ register MCFIR_ACT1
+ {
+ name "P9 MI target MCFIR ACT1";
+ scomaddr 0x05010807;
+ capture group default;
+ capture req nonzero("MCFIR");
+ };
+
+# Include registers not defined by the xml
+.include "axone_mi_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# Summary for MI
+################################################################################
+
+rule rMI
+{
+ CHECK_STOP:
+ summary( 0, rMCFIR );
+
+ RECOVERABLE:
+ summary( 0, rMCFIR );
+
+ UNIT_CS:
+ summary( 0, rMCFIR );
+
+ HOST_ATTN:
+ summary( 0, rMCFIR );
+
+};
+
+group gMI attntype CHECK_STOP, RECOVERABLE, UNIT_CS, HOST_ATTN
+ filter singlebit
+{
+ (rMI, bit(0)) ? analyzeMCFIR;
+};
+
+################################################################################
+# P9 MI target MCFIR
+################################################################################
+
+rule rMCFIR
+{
+ CHECK_STOP:
+ MCFIR & ~MCFIR_MASK & ~MCFIR_ACT0 & ~MCFIR_ACT1;
+ RECOVERABLE:
+ MCFIR & ~MCFIR_MASK & ~MCFIR_ACT0 & MCFIR_ACT1;
+ HOST_ATTN:
+ MCFIR & ~MCFIR_MASK & MCFIR_ACT0 & ~MCFIR_ACT1;
+ UNIT_CS:
+ MCFIR & ~MCFIR_MASK & MCFIR_ACT0 & MCFIR_ACT1;
+};
+
+group gMCFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** MCFIR[0]
+ * MC internal recoverable error
+ */
+ (rMCFIR, bit(0)) ? defaultMaskedError;
+
+ /** MCFIR[1]
+ * MC internal non recoverable error
+ */
+ (rMCFIR, bit(1)) ? defaultMaskedError;
+
+ /** MCFIR[2]
+ * Powerbus protocol error
+ */
+ (rMCFIR, bit(2)) ? defaultMaskedError;
+
+ /** MCFIR[3]
+ * Inband bar hit with incorrect ttype
+ */
+ (rMCFIR, bit(3)) ? defaultMaskedError;
+
+ /** MCFIR[4]
+ * Multiple bar
+ */
+ (rMCFIR, bit(4)) ? defaultMaskedError;
+
+ /** MCFIR[5]
+ * PB write ECC syndrome NE0
+ */
+ (rMCFIR, bit(5)) ? defaultMaskedError;
+
+ /** MCFIR[6:7]
+ * reserved
+ */
+ (rMCFIR, bit(6|7)) ? defaultMaskedError;
+
+ /** MCFIR[8]
+ * Command list timeout
+ */
+ (rMCFIR, bit(8)) ? defaultMaskedError;
+
+ /** MCFIR[9:10]
+ * reserved
+ */
+ (rMCFIR, bit(9|10)) ? defaultMaskedError;
+
+ /** MCFIR[11]
+ * MCS wat0 event
+ */
+ (rMCFIR, bit(11)) ? defaultMaskedError;
+
+ /** MCFIR[12]
+ * MCS wat1 event
+ */
+ (rMCFIR, bit(12)) ? defaultMaskedError;
+
+ /** MCFIR[13]
+ * MCS wat2 event
+ */
+ (rMCFIR, bit(13)) ? defaultMaskedError;
+
+ /** MCFIR[14]
+ * MCS wat3 event
+ */
+ (rMCFIR, bit(14)) ? defaultMaskedError;
+
+ /** MCFIR[15:16]
+ * reserved
+ */
+ (rMCFIR, bit(15|16)) ? defaultMaskedError;
+
+ /** MCFIR[17]
+ * WAT debug config reg error
+ */
+ (rMCFIR, bit(17)) ? defaultMaskedError;
+
+ /** MCFIR[18:21]
+ * reserved
+ */
+ (rMCFIR, bit(18|19|20|21)) ? defaultMaskedError;
+
+ /** MCFIR[22]
+ * Invalid SMF access
+ */
+ (rMCFIR, bit(22)) ? defaultMaskedError;
+
+ /** MCFIR[23]
+ * reserved
+ */
+ (rMCFIR, bit(23)) ? defaultMaskedError;
+
+ /** MCFIR[24]
+ * Internal SCOM error
+ */
+ (rMCFIR, bit(24)) ? defaultMaskedError;
+
+ /** MCFIR[25]
+ * Internal SCOM error clone
+ */
+ (rMCFIR, bit(25)) ? defaultMaskedError;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "axone_mi_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_mi_actions.rule b/src/usr/diag/prdf/common/plat/axone/axone_mi_actions.rule
new file mode 100644
index 000000000..ca2eebcf3
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_mi_actions.rule
@@ -0,0 +1,31 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_mi_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
+
+################################################################################
+# Analyze groups
+################################################################################
+
+actionclass analyzeMCFIR { analyze(gMCFIR); };
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_mi_regs.rule b/src/usr/diag/prdf/common/plat/axone/axone_mi_regs.rule
new file mode 100644
index 000000000..7793c661f
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_mi_regs.rule
@@ -0,0 +1,63 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_mi_regs.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
+
+ ############################################################################
+ # Additional regs for P9 MI target MCFIR
+ ############################################################################
+
+ register MCERPT0
+ {
+ name "MCERPT0";
+ scomaddr 0x0501081E;
+ capture group default;
+ };
+
+ register MCERPT1
+ {
+ name "MCERPT1";
+ scomaddr 0x0501081F;
+ capture group default;
+ };
+
+ register MCERPT2
+ {
+ name "MCERPT2";
+ scomaddr 0x0501081A;
+ capture group default;
+ };
+
+ register MCFGP
+ {
+ name "MCFGP";
+ scomaddr 0x501080A;
+ capture group default;
+ };
+
+ register MCFGPM
+ {
+ name "MCFGPM";
+ scomaddr 0x501080C;
+ capture group default;
+ };
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_npu.rule b/src/usr/diag/prdf/common/plat/axone/axone_npu.rule
new file mode 100644
index 000000000..ede5ef5cc
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_npu.rule
@@ -0,0 +1,1105 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_npu.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
+
+chip axone_npu
+{
+ name "AXONE NPU target";
+ targettype TYPE_NPU;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # P9 NPU target NPU0FIR
+ ############################################################################
+
+ register NPU0FIR
+ {
+ name "P9 NPU target NPU0FIR";
+ scomaddr 0x05013c00;
+ reset (&, 0x05013c01);
+ mask (|, 0x05013c05);
+ capture group npu0fir_ffdc;
+ };
+
+ register NPU0FIR_MASK
+ {
+ name "P9 NPU target NPU0FIR MASK";
+ scomaddr 0x05013c03;
+ capture group npu0fir_ffdc;
+ };
+
+ register NPU0FIR_ACT0
+ {
+ name "P9 NPU target NPU0FIR ACT0";
+ scomaddr 0x05013c06;
+ capture group npu0fir_ffdc;
+ capture req nonzero("NPU0FIR");
+ };
+
+ register NPU0FIR_ACT1
+ {
+ name "P9 NPU target NPU0FIR ACT1";
+ scomaddr 0x05013c07;
+ capture group npu0fir_ffdc;
+ capture req nonzero("NPU0FIR");
+ };
+
+ ############################################################################
+ # P9 NPU target NPU1FIR
+ ############################################################################
+
+ register NPU1FIR
+ {
+ name "P9 NPU target NPU1FIR";
+ scomaddr 0x05013c40;
+ reset (&, 0x05013c41);
+ mask (|, 0x05013c45);
+ capture group npu1fir_ffdc;
+ };
+
+ register NPU1FIR_MASK
+ {
+ name "P9 NPU target NPU1FIR MASK";
+ scomaddr 0x05013c43;
+ capture group npu1fir_ffdc;
+ };
+
+ register NPU1FIR_ACT0
+ {
+ name "P9 NPU target NPU1FIR ACT0";
+ scomaddr 0x05013c46;
+ capture group npu1fir_ffdc;
+ capture req nonzero("NPU1FIR");
+ };
+
+ register NPU1FIR_ACT1
+ {
+ name "P9 NPU target NPU1FIR ACT1";
+ scomaddr 0x05013c47;
+ capture group npu1fir_ffdc;
+ capture req nonzero("NPU1FIR");
+ };
+
+ ############################################################################
+ # P9 NPU target NPU2FIR
+ ############################################################################
+
+ register NPU2FIR
+ {
+ name "P9 NPU target NPU2FIR";
+ scomaddr 0x05013c80;
+ reset (&, 0x05013c81);
+ mask (|, 0x05013c85);
+ capture group npu2fir_ffdc;
+ };
+
+ register NPU2FIR_MASK
+ {
+ name "P9 NPU target NPU2FIR MASK";
+ scomaddr 0x05013c83;
+ capture group npu2fir_ffdc;
+ };
+
+ register NPU2FIR_ACT0
+ {
+ name "P9 NPU target NPU2FIR ACT0";
+ scomaddr 0x05013c86;
+ capture group npu2fir_ffdc;
+ capture req nonzero("NPU2FIR");
+ };
+
+ register NPU2FIR_ACT1
+ {
+ name "P9 NPU target NPU2FIR ACT1";
+ scomaddr 0x05013c87;
+ capture group npu2fir_ffdc;
+ capture req nonzero("NPU2FIR");
+ };
+
+# Include registers not defined by the xml
+.include "p9_common_npu_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# Summary for NPU
+################################################################################
+
+rule rNPU
+{
+ CHECK_STOP:
+ summary( 0, rNPU0FIR ) |
+ summary( 1, rNPU1FIR ) |
+ summary( 2, rNPU2FIR );
+
+ RECOVERABLE:
+ summary( 0, rNPU0FIR ) |
+ summary( 1, rNPU1FIR ) |
+ summary( 2, rNPU2FIR );
+
+ UNIT_CS:
+ summary( 0, rNPU0FIR ) |
+ summary( 1, rNPU1FIR ) |
+ summary( 2, rNPU2FIR );
+
+};
+
+group gNPU attntype CHECK_STOP, RECOVERABLE, UNIT_CS
+ filter singlebit
+{
+ (rNPU, bit(0)) ? analyzeNPU0FIR;
+ (rNPU, bit(1)) ? analyzeNPU1FIR;
+ (rNPU, bit(2)) ? analyzeNPU2FIR;
+};
+
+################################################################################
+# P9 NPU target NPU0FIR
+################################################################################
+
+rule rNPU0FIR
+{
+ CHECK_STOP:
+ NPU0FIR & ~NPU0FIR_MASK & ~NPU0FIR_ACT0 & ~NPU0FIR_ACT1;
+ RECOVERABLE:
+ NPU0FIR & ~NPU0FIR_MASK & ~NPU0FIR_ACT0 & NPU0FIR_ACT1;
+ UNIT_CS:
+ NPU0FIR & ~NPU0FIR_MASK & NPU0FIR_ACT0 & NPU0FIR_ACT1;
+};
+
+group gNPU0FIR
+ filter singlebit,
+ cs_root_cause(1,2,3,4,5,6,7,9,10,16,18,29,31,42,44)
+{
+ /** NPU0FIR[0]
+ * NTL array CE
+ */
+ (rNPU0FIR, bit(0)) ? self_th_32perDay;
+
+ /** NPU0FIR[1]
+ * NTL header array UE
+ */
+ (rNPU0FIR, bit(1)) ? self_th_1;
+
+ /** NPU0FIR[2]
+ * NTL Data Array UE
+ */
+ (rNPU0FIR, bit(2)) ? self_th_1;
+
+ /** NPU0FIR[3]
+ * NTL NVLInk Control/Header/AE PE
+ */
+ (rNPU0FIR, bit(3)) ? self_th_1;
+
+ /** NPU0FIR[4]
+ * NTL NVLink Data Parity error
+ */
+ (rNPU0FIR, bit(4)) ? self_th_1;
+
+ /** NPU0FIR[5]
+ * NTL NVLink Malformed Packet
+ */
+ (rNPU0FIR, bit(5)) ? self_th_1;
+
+ /** NPU0FIR[6]
+ * NTL NVLink Unsupported Packet
+ */
+ (rNPU0FIR, bit(6)) ? self_th_1;
+
+ /** NPU0FIR[7]
+ * NTL NVLink Config errors
+ */
+ (rNPU0FIR, bit(7)) ? self_th_1;
+
+ /** NPU0FIR[8]
+ * NTL NVLink CRC errors or LMD=Stomp
+ */
+ (rNPU0FIR, bit(8)) ? defaultMaskedError;
+
+ /** NPU0FIR[9]
+ * NTL PRI errors
+ */
+ (rNPU0FIR, bit(9)) ? self_th_1;
+
+ /** NPU0FIR[10]
+ * NTL logic error
+ */
+ (rNPU0FIR, bit(10)) ? self_th_1;
+
+ /** NPU0FIR[11]
+ * NTL LMD=Data Posion
+ */
+ (rNPU0FIR, bit(11)) ? defaultMaskedError;
+
+ /** NPU0FIR[12]
+ * NTL data array SUE
+ */
+ (rNPU0FIR, bit(12)) ? defaultMaskedError;
+
+ /** NPU0FIR[13]
+ * CQ CTL/SM ASBE Array single-bit CE
+ */
+ (rNPU0FIR, bit(13)) ? self_th_32perDay;
+
+ /** NPU0FIR[14]
+ * CQ CTL/SM PBR PowerBus Recoverable err
+ */
+ (rNPU0FIR, bit(14)) ? defaultMaskedError;
+
+ /** NPU0FIR[15]
+ * CQ CTL/SM REG Register ring error
+ */
+ (rNPU0FIR, bit(15)) ? self_th_32perDay;
+
+ /** NPU0FIR[16]
+ * Data UE for MMIO store data
+ */
+ (rNPU0FIR, bit(16)) ? self_th_1;
+
+ /** NPU0FIR[17]
+ * spare
+ */
+ (rNPU0FIR, bit(17)) ? defaultMaskedError;
+
+ /** NPU0FIR[18]
+ * CQ CTL/SM NCF NVLink config error
+ */
+ (rNPU0FIR, bit(18)) ? self_th_1;
+
+ /** NPU0FIR[19]
+ * CQ CTL/SM NVF NVLink fatal error
+ */
+ (rNPU0FIR, bit(19)) ? self_th_1;
+
+ /** NPU0FIR[20]
+ * spare
+ */
+ (rNPU0FIR, bit(20)) ? defaultMaskedError;
+
+ /** NPU0FIR[21]
+ * CQ CTL/SM AUE Array UE
+ */
+ (rNPU0FIR, bit(21)) ? self_th_1;
+
+ /** NPU0FIR[22]
+ * CQ CTL/SM PBP PowerBus parity error
+ */
+ (rNPU0FIR, bit(22)) ? self_th_1;
+
+ /** NPU0FIR[23]
+ * CQ CTL/SM PBF PowerBus Fatal Error
+ */
+ (rNPU0FIR, bit(23)) ? self_M_level2_L_th_1;
+
+ /** NPU0FIR[24]
+ * PowerBus configuration error
+ */
+ (rNPU0FIR, bit(24)) ? level2_M_self_L_th_1;
+
+ /** NPU0FIR[25]
+ * CQ CTL/SM FWD Forward-Progress error
+ */
+ (rNPU0FIR, bit(25)) ? self_th_1;
+
+ /** NPU0FIR[26]
+ * CQ CTL/SM NLG NPU Logic error
+ */
+ (rNPU0FIR, bit(26)) ? self_th_1;
+
+ /** NPU0FIR[27]
+ * Invalid access to secure memory attempted
+ */
+ (rNPU0FIR, bit(27)) ? defaultMaskedError;
+
+ /** NPU0FIR[28]
+ * spare
+ */
+ (rNPU0FIR, bit(28)) ? defaultMaskedError;
+
+ /** NPU0FIR[29]
+ * CQ DAT ECC UE/SUE on data/BE arrays
+ */
+ (rNPU0FIR, bit(29)) ? self_th_1;
+
+ /** NPU0FIR[30]
+ * CQ DAT ECC CE on data/BE arrays
+ */
+ (rNPU0FIR, bit(30)) ? self_M_level2_L_th_32perDay;
+
+ /** NPU0FIR[31]
+ * CQ DAT parity error on data/BE latches
+ */
+ (rNPU0FIR, bit(31)) ? self_th_1;
+
+ /** NPU0FIR[32]
+ * CQ DAT parity errs on config regs
+ */
+ (rNPU0FIR, bit(32)) ? self_th_1;
+
+ /** NPU0FIR[33]
+ * CQ DAT parity errs/PowerBus rtag
+ */
+ (rNPU0FIR, bit(33)) ? self_th_1;
+
+ /** NPU0FIR[34]
+ * CQ DAT parity errs nternal state latches
+ */
+ (rNPU0FIR, bit(34)) ? self_th_1;
+
+ /** NPU0FIR[35]
+ * CQ DAT logic error
+ */
+ (rNPU0FIR, bit(35)) ? self_th_1;
+
+ /** NPU0FIR[36]
+ * Future SUE
+ */
+ (rNPU0FIR, bit(36)) ? defaultMaskedError;
+
+ /** NPU0FIR[37]
+ * ECC SUE on PB received data
+ */
+ (rNPU0FIR, bit(37)) ? defaultMaskedError;
+
+ /** NPU0FIR[38:39]
+ * spare
+ */
+ (rNPU0FIR, bit(38|39)) ? defaultMaskedError;
+
+ /** NPU0FIR[40]
+ * XTS internal logic error
+ */
+ (rNPU0FIR, bit(40)) ? self_th_1;
+
+ /** NPU0FIR[41]
+ * XTS correctable errs in XTS SRAM
+ */
+ (rNPU0FIR, bit(41)) ? self_M_level2_L_th_32perDay;
+
+ /** NPU0FIR[42]
+ * XTS Ues in XTS internal SRAM
+ */
+ (rNPU0FIR, bit(42)) ? self_th_1;
+
+ /** NPU0FIR[43]
+ * XTS CE on incoming stack transactions
+ */
+ (rNPU0FIR, bit(43)) ? self_M_level2_L_th_32perDay;
+
+ /** NPU0FIR[44]
+ * XTS errs incoming stack transaction
+ */
+ (rNPU0FIR, bit(44)) ? self_th_1;
+
+ /** NPU0FIR[45]
+ * XTS errs on incoming PBUS transaction
+ */
+ (rNPU0FIR, bit(45)) ? self_th_1;
+
+ /** NPU0FIR[46]
+ * XTS Translate Request Fail
+ */
+ (rNPU0FIR, bit(46)) ? defaultMaskedError;
+
+ /** NPU0FIR[47:59]
+ * spare
+ */
+ (rNPU0FIR, bit(47|48|49|50|51|52|53|54|55|56|57|58|59)) ? defaultMaskedError;
+
+ /** NPU0FIR[60]
+ * MISC Pervasive SCOM satellite err
+ */
+ (rNPU0FIR, bit(60)) ? defaultMaskedError;
+
+ /** NPU0FIR[61]
+ * MISC Pervasive SCOM satellite err
+ */
+ (rNPU0FIR, bit(61)) ? defaultMaskedError;
+
+ /** NPU0FIR[62]
+ * Local FIR Parity Error RAS duplicate
+ */
+ (rNPU0FIR, bit(62)) ? defaultMaskedError;
+
+ /** NPU0FIR[63]
+ * Local FIR Parity Err
+ */
+ (rNPU0FIR, bit(63)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 NPU target NPU1FIR
+################################################################################
+
+rule rNPU1FIR
+{
+ CHECK_STOP:
+ NPU1FIR & ~NPU1FIR_MASK & ~NPU1FIR_ACT0 & ~NPU1FIR_ACT1;
+ RECOVERABLE:
+ NPU1FIR & ~NPU1FIR_MASK & ~NPU1FIR_ACT0 & NPU1FIR_ACT1;
+ UNIT_CS:
+ NPU1FIR & ~NPU1FIR_MASK & NPU1FIR_ACT0 & NPU1FIR_ACT1;
+};
+
+group gNPU1FIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** NPU1FIR[0]
+ * NDL Brick0 stall
+ */
+ (rNPU1FIR, bit(0)) ? defaultMaskedError;
+
+ /** NPU1FIR[1]
+ * NDL Brick0 nostall
+ */
+ (rNPU1FIR, bit(1)) ? defaultMaskedError;
+
+ /** NPU1FIR[2]
+ * NDL Brick1 stall
+ */
+ (rNPU1FIR, bit(2)) ? defaultMaskedError;
+
+ /** NPU1FIR[3]
+ * NDL Brick1 nostall
+ */
+ (rNPU1FIR, bit(3)) ? defaultMaskedError;
+
+ /** NPU1FIR[4]
+ * NDL Brick2 stall
+ */
+ (rNPU1FIR, bit(4)) ? defaultMaskedError;
+
+ /** NPU1FIR[5]
+ * NDL Brick2 nostall
+ */
+ (rNPU1FIR, bit(5)) ? defaultMaskedError;
+
+ /** NPU1FIR[6]
+ * NDL Brick3 stall
+ */
+ (rNPU1FIR, bit(6)) ? defaultMaskedError;
+
+ /** NPU1FIR[7]
+ * NDL Brick3 nostall
+ */
+ (rNPU1FIR, bit(7)) ? defaultMaskedError;
+
+ /** NPU1FIR[8]
+ * NDL Brick4 stall
+ */
+ (rNPU1FIR, bit(8)) ? defaultMaskedError;
+
+ /** NPU1FIR[9]
+ * NDL Brick4 nostall
+ */
+ (rNPU1FIR, bit(9)) ? defaultMaskedError;
+
+ /** NPU1FIR[10]
+ * NDL Brick5 stall
+ */
+ (rNPU1FIR, bit(10)) ? defaultMaskedError;
+
+ /** NPU1FIR[11]
+ * NDL Brick5 nostall
+ */
+ (rNPU1FIR, bit(11)) ? defaultMaskedError;
+
+ /** NPU1FIR[12]
+ * MISC Register ring error (ie noack)
+ */
+ (rNPU1FIR, bit(12)) ? defaultMaskedError;
+
+ /** NPU1FIR[13]
+ * MISC Parity error from ibr addr regi
+ */
+ (rNPU1FIR, bit(13)) ? defaultMaskedError;
+
+ /** NPU1FIR[14]
+ * MISC Parity error on SCOM D/A addr reg
+ */
+ (rNPU1FIR, bit(14)) ? defaultMaskedError;
+
+ /** NPU1FIR[15]
+ * MISC Parity error on MISC Cntrl reg
+ */
+ (rNPU1FIR, bit(15)) ? defaultMaskedError;
+
+ /** NPU1FIR[16]
+ * Reserved
+ */
+ (rNPU1FIR, bit(16)) ? defaultMaskedError;
+
+ /** NPU1FIR[17]
+ * ATS Invalid TVT entry
+ */
+ (rNPU1FIR, bit(17)) ? defaultMaskedError;
+
+ /** NPU1FIR[18]
+ * ATS TVT Address range error
+ */
+ (rNPU1FIR, bit(18)) ? defaultMaskedError;
+
+ /** NPU1FIR[19]
+ * ATS TCE Page access error
+ */
+ (rNPU1FIR, bit(19)) ? defaultMaskedError;
+
+ /** NPU1FIR[20]
+ * ATS Effective Address hit multiple TCE
+ */
+ (rNPU1FIR, bit(20)) ? defaultMaskedError;
+
+ /** NPU1FIR[21]
+ * ATS TCE Page access error
+ */
+ (rNPU1FIR, bit(21)) ? defaultMaskedError;
+
+ /** NPU1FIR[22]
+ * ATS Timeout on TCE tree walk
+ */
+ (rNPU1FIR, bit(22)) ? defaultMaskedError;
+
+ /** NPU1FIR[23]
+ * ATS Parity error on TCE cache dir array
+ */
+ (rNPU1FIR, bit(23)) ? defaultMaskedError;
+
+ /** NPU1FIR[24]
+ * ATS Parity error on TCE cache data array
+ */
+ (rNPU1FIR, bit(24)) ? defaultMaskedError;
+
+ /** NPU1FIR[25]
+ * ATS ECC UE on Effective Address array
+ */
+ (rNPU1FIR, bit(25)) ? defaultMaskedError;
+
+ /** NPU1FIR[26]
+ * ATS ECC CE on Effective Address array
+ */
+ (rNPU1FIR, bit(26)) ? defaultMaskedError;
+
+ /** NPU1FIR[27]
+ * ATS ECC UE on TDRmem array
+ */
+ (rNPU1FIR, bit(27)) ? defaultMaskedError;
+
+ /** NPU1FIR[28]
+ * ATS ECC CE on TDRmem array
+ */
+ (rNPU1FIR, bit(28)) ? defaultMaskedError;
+
+ /** NPU1FIR[29]
+ * ATS ECC UE on CQ CTL DMA Read
+ */
+ (rNPU1FIR, bit(29)) ? defaultMaskedError;
+
+ /** NPU1FIR[30]
+ * ATS ECC CE on CQ CTL DMA Read
+ */
+ (rNPU1FIR, bit(30)) ? defaultMaskedError;
+
+ /** NPU1FIR[31]
+ * ATS Parity error on TVT entry
+ */
+ (rNPU1FIR, bit(31)) ? defaultMaskedError;
+
+ /** NPU1FIR[32]
+ * ATS Parity err on IODA Address Reg
+ */
+ (rNPU1FIR, bit(32)) ? defaultMaskedError;
+
+ /** NPU1FIR[33]
+ * ATS Parity error on ATS Control Register
+ */
+ (rNPU1FIR, bit(33)) ? defaultMaskedError;
+
+ /** NPU1FIR[34]
+ * ATS Parity error on ATS Timeout Control Register
+ */
+ (rNPU1FIR, bit(34)) ? defaultMaskedError;
+
+ /** NPU1FIR[35]
+ * ATS Invalid IODA Table Select entry
+ */
+ (rNPU1FIR, bit(35)) ? defaultMaskedError;
+
+ /** NPU1FIR[36]
+ * Reserved
+ */
+ (rNPU1FIR, bit(36)) ? defaultMaskedError;
+
+ /** NPU1FIR[37]
+ * Kill xlate epoch timeout
+ */
+ (rNPU1FIR, bit(37)) ? defaultMaskedError;
+
+ /** NPU1FIR[38]
+ * PEE secure SMF not secure
+ */
+ (rNPU1FIR, bit(38)) ? defaultMaskedError;
+
+ /** NPU1FIR[39]
+ * XSL in suspend mode when OTL sends cmd
+ */
+ (rNPU1FIR, bit(39)) ? defaultMaskedError;
+
+ /** NPU1FIR[40:46]
+ * Reserved
+ */
+ (rNPU1FIR, bit(40|41|42|43|44|45|46)) ? defaultMaskedError;
+
+ /** NPU1FIR[47]
+ * NDL Brick6 stall
+ */
+ (rNPU1FIR, bit(47)) ? defaultMaskedError;
+
+ /** NPU1FIR[48]
+ * NDL Brick6 nostall
+ */
+ (rNPU1FIR, bit(48)) ? defaultMaskedError;
+
+ /** NPU1FIR[49]
+ * NDL Brick7 stall
+ */
+ (rNPU1FIR, bit(49)) ? defaultMaskedError;
+
+ /** NPU1FIR[50]
+ * NDL Brick7 nostall
+ */
+ (rNPU1FIR, bit(50)) ? defaultMaskedError;
+
+ /** NPU1FIR[51]
+ * NDL Brick8 stall
+ */
+ (rNPU1FIR, bit(51)) ? defaultMaskedError;
+
+ /** NPU1FIR[52]
+ * NDL Brick8 nostall
+ */
+ (rNPU1FIR, bit(52)) ? defaultMaskedError;
+
+ /** NPU1FIR[53]
+ * NDL Brick9 stall
+ */
+ (rNPU1FIR, bit(53)) ? defaultMaskedError;
+
+ /** NPU1FIR[54]
+ * NDL Brick9 nostall
+ */
+ (rNPU1FIR, bit(54)) ? defaultMaskedError;
+
+ /** NPU1FIR[55]
+ * NDL Brick10 stall
+ */
+ (rNPU1FIR, bit(55)) ? defaultMaskedError;
+
+ /** NPU1FIR[56]
+ * NDL Brick10 nostall
+ */
+ (rNPU1FIR, bit(56)) ? defaultMaskedError;
+
+ /** NPU1FIR[57]
+ * NDL Brick11 stall
+ */
+ (rNPU1FIR, bit(57)) ? defaultMaskedError;
+
+ /** NPU1FIR[58]
+ * NDL Brick11 nostall
+ */
+ (rNPU1FIR, bit(58)) ? defaultMaskedError;
+
+ /** NPU1FIR[59]
+ * Reserved
+ */
+ (rNPU1FIR, bit(59)) ? defaultMaskedError;
+
+ /** NPU1FIR[60]
+ * MISC SCOM ring 0 sat 0 signaled internal FSM err
+ */
+ (rNPU1FIR, bit(60)) ? defaultMaskedError;
+
+ /** NPU1FIR[61]
+ * MISC SCOM ring 0 sat 1 signaled internal FSM err
+ */
+ (rNPU1FIR, bit(61)) ? defaultMaskedError;
+
+ /** NPU1FIR[62]
+ * Scom Error
+ */
+ (rNPU1FIR, bit(62)) ? defaultMaskedError;
+
+ /** NPU1FIR[63]
+ * Scom Error
+ */
+ (rNPU1FIR, bit(63)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 NPU target NPU2FIR
+################################################################################
+
+rule rNPU2FIR
+{
+ CHECK_STOP:
+ NPU2FIR & ~NPU2FIR_MASK & ~NPU2FIR_ACT0 & ~NPU2FIR_ACT1;
+ RECOVERABLE:
+ NPU2FIR & ~NPU2FIR_MASK & ~NPU2FIR_ACT0 & NPU2FIR_ACT1;
+ UNIT_CS:
+ NPU2FIR & ~NPU2FIR_MASK & NPU2FIR_ACT0 & NPU2FIR_ACT1;
+};
+
+group gNPU2FIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** NPU2FIR[0]
+ * OTL Brick2 translation fault
+ */
+ (rNPU2FIR, bit(0)) ? defaultMaskedError;
+
+ /** NPU2FIR[1]
+ * OTL Brick3 translation fault
+ */
+ (rNPU2FIR, bit(1)) ? defaultMaskedError;
+
+ /** NPU2FIR[2]
+ * OTL Brick4 translation fault
+ */
+ (rNPU2FIR, bit(2)) ? defaultMaskedError;
+
+ /** NPU2FIR[3]
+ * OTL Brick5 translation fault
+ */
+ (rNPU2FIR, bit(3)) ? defaultMaskedError;
+
+ /** NPU2FIR[4]
+ * OTL TL credit ctr overflow
+ */
+ (rNPU2FIR, bit(4)) ? defaultMaskedError;
+
+ /** NPU2FIR[5]
+ * OTL RX acTag invalid
+ */
+ (rNPU2FIR, bit(5)) ? defaultMaskedError;
+
+ /** NPU2FIR[6]
+ * OTL RX acTag points to an invalid entry.
+ */
+ (rNPU2FIR, bit(6)) ? defaultMaskedError;
+
+ /** NPU2FIR[7]
+ * OTL RX reserved opcode used.
+ */
+ (rNPU2FIR, bit(7)) ? defaultMaskedError;
+
+ /** NPU2FIR[8]
+ * OTL RX rtn_tl_credit cmd outside slot0.
+ */
+ (rNPU2FIR, bit(8)) ? defaultMaskedError;
+
+ /** NPU2FIR[9]
+ * OTL RX bad opcode and template combo
+ */
+ (rNPU2FIR, bit(9)) ? defaultMaskedError;
+
+ /** NPU2FIR[10]
+ * OTL RX unsupported template format.
+ */
+ (rNPU2FIR, bit(10)) ? defaultMaskedError;
+
+ /** NPU2FIR[11]
+ * OTL RX bad template x00 format.
+ */
+ (rNPU2FIR, bit(11)) ? defaultMaskedError;
+
+ /** NPU2FIR[12]
+ * OTL RX control flit overrun.
+ */
+ (rNPU2FIR, bit(12)) ? defaultMaskedError;
+
+ /** NPU2FIR[13]
+ * OTL RX unexpected data flit.
+ */
+ (rNPU2FIR, bit(13)) ? defaultMaskedError;
+
+ /** NPU2FIR[14]
+ * OTL RX DL link down.
+ */
+ (rNPU2FIR, bit(14)) ? defaultMaskedError;
+
+ /** NPU2FIR[15]
+ * OTL RX bad data received on command.
+ */
+ (rNPU2FIR, bit(15)) ? defaultMaskedError;
+
+ /** NPU2FIR[16]
+ * OTL RX bad data received on response.
+ */
+ (rNPU2FIR, bit(16)) ? defaultMaskedError;
+
+ /** NPU2FIR[17]
+ * OTL RX AP response not allowed
+ */
+ (rNPU2FIR, bit(17)) ? defaultMaskedError;
+
+ /** NPU2FIR[18]
+ * OR of all OTL parity errors.
+ */
+ (rNPU2FIR, bit(18)) ? defaultMaskedError;
+
+ /** NPU2FIR[19]
+ * OR of all OTL ECC CE errors.
+ */
+ (rNPU2FIR, bit(19)) ? defaultMaskedError;
+
+ /** NPU2FIR[20]
+ * OR of all OTL ECC UE errors.
+ */
+ (rNPU2FIR, bit(20)) ? defaultMaskedError;
+
+ /** NPU2FIR[21]
+ * RXO OP Errors.
+ */
+ (rNPU2FIR, bit(21)) ? defaultMaskedError;
+
+ /** NPU2FIR[22]
+ * RXO Internal Errors.
+ */
+ (rNPU2FIR, bit(22)) ? defaultMaskedError;
+
+ /** NPU2FIR[23]
+ * OTL RXI fifo overrun.
+ */
+ (rNPU2FIR, bit(23)) ? defaultMaskedError;
+
+ /** NPU2FIR[24]
+ * OTL RXI ctrl flit data run len invalid.
+ */
+ (rNPU2FIR, bit(24)) ? defaultMaskedError;
+
+ /** NPU2FIR[25]
+ * OTL RXI opcode specifies dL=0b00.
+ */
+ (rNPU2FIR, bit(25)) ? defaultMaskedError;
+
+ /** NPU2FIR[26]
+ * OTL RXI bad data received vc2
+ */
+ (rNPU2FIR, bit(26)) ? defaultMaskedError;
+
+ /** NPU2FIR[27]
+ * OTL RXI dcp2 fifo overrun
+ */
+ (rNPU2FIR, bit(27)) ? defaultMaskedError;
+
+ /** NPU2FIR[28]
+ * OTL RXI vc1 fifo overrun
+ */
+ (rNPU2FIR, bit(28)) ? defaultMaskedError;
+
+ /** NPU2FIR[29]
+ * OTL RXI vc2 fifo overrun
+ */
+ (rNPU2FIR, bit(29)) ? defaultMaskedError;
+
+ /** NPU2FIR[30]
+ * Reserved
+ */
+ (rNPU2FIR, bit(30)) ? defaultMaskedError;
+
+ /** NPU2FIR[31]
+ * OTL TXI opcode error
+ */
+ (rNPU2FIR, bit(31)) ? defaultMaskedError;
+
+ /** NPU2FIR[32]
+ * Malformed packet error type 4
+ */
+ (rNPU2FIR, bit(32)) ? defaultMaskedError;
+
+ /** NPU2FIR[33:35]
+ * Reserved
+ */
+ (rNPU2FIR, bit(33|34|35)) ? defaultMaskedError;
+
+ /** NPU2FIR[36]
+ * MMIO invalidate while one in progress.
+ */
+ (rNPU2FIR, bit(36)) ? defaultMaskedError;
+
+ /** NPU2FIR[37]
+ * Unexpected ITAG on itag completion pt 0
+ */
+ (rNPU2FIR, bit(37)) ? defaultMaskedError;
+
+ /** NPU2FIR[38]
+ * Unexpected ITAG on itag completion pt 1
+ */
+ (rNPU2FIR, bit(38)) ? defaultMaskedError;
+
+ /** NPU2FIR[39]
+ * Unexpected Read PEE completion.
+ */
+ (rNPU2FIR, bit(39)) ? defaultMaskedError;
+
+ /** NPU2FIR[40]
+ * Unexpected Checkout response.
+ */
+ (rNPU2FIR, bit(40)) ? defaultMaskedError;
+
+ /** NPU2FIR[41]
+ * Translation request but SPAP is invalid.
+ */
+ (rNPU2FIR, bit(41)) ? defaultMaskedError;
+
+ /** NPU2FIR[42]
+ * Read a PEE which was not valid.
+ */
+ (rNPU2FIR, bit(42)) ? defaultMaskedError;
+
+ /** NPU2FIR[43]
+ * Bloom filter protection error.
+ */
+ (rNPU2FIR, bit(43)) ? defaultMaskedError;
+
+ /** NPU2FIR[44]
+ * Translation request to non-valid TA
+ */
+ (rNPU2FIR, bit(44)) ? defaultMaskedError;
+
+ /** NPU2FIR[45]
+ * TA Translation request to an invalid TA
+ */
+ (rNPU2FIR, bit(45)) ? defaultMaskedError;
+
+ /** NPU2FIR[46]
+ * correctable array error (SBE).
+ */
+ (rNPU2FIR, bit(46)) ? defaultMaskedError;
+
+ /** NPU2FIR[47]
+ * array error (UE or parity).
+ */
+ (rNPU2FIR, bit(47)) ? defaultMaskedError;
+
+ /** NPU2FIR[48]
+ * S/TLBI buffer overflow.
+ */
+ (rNPU2FIR, bit(48)) ? defaultMaskedError;
+
+ /** NPU2FIR[49]
+ * SBE CE on Pb cout rsp or PEE read data.
+ */
+ (rNPU2FIR, bit(49)) ? defaultMaskedError;
+
+ /** NPU2FIR[50]
+ * UE on Pb cut rsp or PEE read data.
+ */
+ (rNPU2FIR, bit(50)) ? defaultMaskedError;
+
+ /** NPU2FIR[51]
+ * SUE on Pb chkout rsp or Pb PEE rd data.
+ */
+ (rNPU2FIR, bit(51)) ? defaultMaskedError;
+
+ /** NPU2FIR[52]
+ * PA mem_hit when bar mode is nonzero
+ */
+ (rNPU2FIR, bit(52)) ? defaultMaskedError;
+
+ /** NPU2FIR[53]
+ * XSL Reserved, macro bit 17.
+ */
+ (rNPU2FIR, bit(53)) ? defaultMaskedError;
+
+ /** NPU2FIR[54]
+ * OTL Brick0 translation fault
+ */
+ (rNPU2FIR, bit(54)) ? defaultMaskedError;
+
+ /** NPU2FIR[55]
+ * OTL Brick1 translation fault
+ */
+ (rNPU2FIR, bit(55)) ? defaultMaskedError;
+
+ /** NPU2FIR[56:61]
+ * Reserved
+ */
+ (rNPU2FIR, bit(56|57|58|59|60|61)) ? defaultMaskedError;
+
+ /** NPU2FIR[62]
+ * Local FIR PE RAS dup (ring 2, sat 2)
+ */
+ (rNPU2FIR, bit(62)) ? defaultMaskedError;
+
+ /** NPU2FIR[63]
+ * Lcl PE ACTION/MASK regs (ring 2, sat 2)
+ */
+ (rNPU2FIR, bit(63)) ? defaultMaskedError;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "p9_common_npu_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_obus.rule b/src/usr/diag/prdf/common/plat/axone/axone_obus.rule
new file mode 100644
index 000000000..1e90ada6f
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_obus.rule
@@ -0,0 +1,885 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_obus.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
+
+chip axone_obus
+{
+ name "AXONE OBUS target";
+ targettype TYPE_OBUS;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+# Import signatures
+.include "prdfLaneRepairExtraSig.H";
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # OB Chiplet FIR
+ ############################################################################
+
+ register OB_CHIPLET_CS_FIR
+ {
+ name "OB Chiplet Checkstop FIR";
+ scomaddr 0x09040000;
+ capture group default;
+ };
+
+ register OB_CHIPLET_RE_FIR
+ {
+ name "OB Chiplet Recoverable FIR";
+ scomaddr 0x09040001;
+ capture group default;
+ };
+
+ register OB_CHIPLET_FIR_MASK
+ {
+ name "OB Chiplet FIR MASK";
+ scomaddr 0x09040002;
+ capture group default;
+ };
+
+ ############################################################################
+ # OB Chiplet Unit Checkstop FIR
+ ############################################################################
+
+ register OB_CHIPLET_UCS_FIR
+ {
+ name "OB Chiplet Unit Checkstop FIR";
+ scomaddr 0x09040018;
+ capture group default;
+ };
+
+ register OB_CHIPLET_UCS_FIR_MASK
+ {
+ name "OB Chiplet Unit Checkstop FIR MASK";
+ scomaddr 0x09040019;
+ capture group default;
+ };
+
+ ############################################################################
+ # P9 OBUS target OB_LFIR
+ ############################################################################
+
+ register OB_LFIR
+ {
+ name "P9 OBUS target OB_LFIR";
+ scomaddr 0x0904000a;
+ reset (&, 0x0904000b);
+ mask (|, 0x0904000f);
+ capture group default;
+ };
+
+ register OB_LFIR_MASK
+ {
+ name "P9 OBUS target OB_LFIR MASK";
+ scomaddr 0x0904000d;
+ capture group default;
+ };
+
+ register OB_LFIR_ACT0
+ {
+ name "P9 OBUS target OB_LFIR ACT0";
+ scomaddr 0x09040010;
+ capture group default;
+ capture req nonzero("OB_LFIR");
+ };
+
+ register OB_LFIR_ACT1
+ {
+ name "P9 OBUS target OB_LFIR ACT1";
+ scomaddr 0x09040011;
+ capture group default;
+ capture req nonzero("OB_LFIR");
+ };
+
+ ############################################################################
+ # P9 OBUS target IOOLFIR
+ ############################################################################
+
+ register IOOLFIR
+ {
+ name "P9 OBUS target IOOLFIR";
+ scomaddr 0x09010800;
+ reset (&, 0x09010801);
+ mask (|, 0x09010805);
+ capture group default;
+ capture group smpCableFFDC;
+ };
+
+ register IOOLFIR_MASK
+ {
+ name "P9 OBUS target IOOLFIR MASK";
+ scomaddr 0x09010803;
+ capture group default;
+ };
+
+ register IOOLFIR_ACT0
+ {
+ name "P9 OBUS target IOOLFIR ACT0";
+ scomaddr 0x09010806;
+ capture group default;
+ capture req nonzero("IOOLFIR");
+ };
+
+ register IOOLFIR_ACT1
+ {
+ name "P9 OBUS target IOOLFIR ACT1";
+ scomaddr 0x09010807;
+ capture group default;
+ capture req nonzero("IOOLFIR");
+ };
+
+ ############################################################################
+ # P9 OBUS target IOOBFIR
+ ############################################################################
+
+ register IOOBFIR
+ {
+ name "P9 OBUS target IOOBFIR";
+ scomaddr 0x09010c00;
+ reset (&, 0x09010c01);
+ mask (|, 0x09010c05);
+ capture group default;
+ };
+
+ register IOOBFIR_MASK
+ {
+ name "P9 OBUS target IOOBFIR MASK";
+ scomaddr 0x09010c03;
+ capture group default;
+ };
+
+ register IOOBFIR_ACT0
+ {
+ name "P9 OBUS target IOOBFIR ACT0";
+ scomaddr 0x09010c06;
+ capture group default;
+ capture req nonzero("IOOBFIR");
+ };
+
+ register IOOBFIR_ACT1
+ {
+ name "P9 OBUS target IOOBFIR ACT1";
+ scomaddr 0x09010c07;
+ capture group default;
+ capture req nonzero("IOOBFIR");
+ };
+
+ ############################################################################
+ # P9 OBUS target OBPPEFIR
+ ############################################################################
+
+ register OBPPEFIR
+ {
+ name "P9 OBUS target OBPPEFIR";
+ scomaddr 0x09011040;
+ reset (&, 0x09011041);
+ mask (|, 0x09011045);
+ capture group default;
+ };
+
+ register OBPPEFIR_MASK
+ {
+ name "P9 OBUS target OBPPEFIR MASK";
+ scomaddr 0x09011043;
+ capture group default;
+ };
+
+ register OBPPEFIR_ACT0
+ {
+ name "P9 OBUS target OBPPEFIR ACT0";
+ scomaddr 0x09011046;
+ capture group default;
+ capture req nonzero("OBPPEFIR");
+ };
+
+ register OBPPEFIR_ACT1
+ {
+ name "P9 OBUS target OBPPEFIR ACT1";
+ scomaddr 0x09011047;
+ capture group default;
+ capture req nonzero("OBPPEFIR");
+ };
+
+# Include registers not defined by the xml
+.include "p9_common_obus_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# OB Chiplet FIR
+################################################################################
+
+rule rOB_CHIPLET_FIR
+{
+ CHECK_STOP:
+ OB_CHIPLET_CS_FIR & ~OB_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+ RECOVERABLE:
+ (OB_CHIPLET_RE_FIR >> 2) & ~OB_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+};
+
+group gOB_CHIPLET_FIR attntype CHECK_STOP, RECOVERABLE
+ filter singlebit
+{
+ /** OB_CHIPLET_FIR[3]
+ * Attention from OB_LFIR
+ */
+ (rOB_CHIPLET_FIR, bit(3)) ? analyzeOB_LFIR;
+
+ /** OB_CHIPLET_FIR[4]
+ * Attention from IOOLFIR
+ */
+ (rOB_CHIPLET_FIR, bit(4)) ? analyzeIOOLFIR;
+
+ /** OB_CHIPLET_FIR[5]
+ * Attention from IOOBFIR
+ */
+ (rOB_CHIPLET_FIR, bit(5)) ? analyzeIOOBFIR;
+
+ /** OB_CHIPLET_FIR[6]
+ * Attention from OBPPEFIR
+ */
+ (rOB_CHIPLET_FIR, bit(6)) ? analyzeOBPPEFIR;
+
+};
+
+################################################################################
+# OB Chiplet Unit Checkstop FIR
+################################################################################
+
+rule rOB_CHIPLET_UCS_FIR
+{
+ UNIT_CS:
+ OB_CHIPLET_UCS_FIR & ~(OB_CHIPLET_UCS_FIR_MASK >> 1) & `7fffffffffffffff`;
+};
+
+group gOB_CHIPLET_UCS_FIR attntype UNIT_CS
+ filter singlebit
+{
+ /** OB_CHIPLET_UCS_FIR[2]
+ * Attention from IOOBFIR
+ */
+ (rOB_CHIPLET_UCS_FIR, bit(2)) ? analyzeIOOBFIR;
+
+ /** OB_CHIPLET_UCS_FIR[3]
+ * Attention from OBPPEFIR
+ */
+ (rOB_CHIPLET_UCS_FIR, bit(3)) ? analyzeOBPPEFIR;
+
+};
+
+################################################################################
+# P9 OBUS target OB_LFIR
+################################################################################
+
+rule rOB_LFIR
+{
+ CHECK_STOP:
+ OB_LFIR & ~OB_LFIR_MASK & ~OB_LFIR_ACT0 & ~OB_LFIR_ACT1;
+ RECOVERABLE:
+ OB_LFIR & ~OB_LFIR_MASK & ~OB_LFIR_ACT0 & OB_LFIR_ACT1;
+};
+
+group gOB_LFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** OB_LFIR[0]
+ * CFIR internal parity error
+ */
+ (rOB_LFIR, bit(0)) ? self_th_32perDay;
+
+ /** OB_LFIR[1]
+ * Chiplet Control Reg: PCB Access Error
+ */
+ (rOB_LFIR, bit(1)) ? self_th_32perDay;
+
+ /** OB_LFIR[2]
+ * Clock Controller: PCB Access Error
+ */
+ (rOB_LFIR, bit(2)) ? self_th_32perDay;
+
+ /** OB_LFIR[3]
+ * Clock Controller: Summarized Error
+ */
+ (rOB_LFIR, bit(3)) ? self_th_32perDay;
+
+ /** OB_LFIR[4]
+ * PSCOM Logic: PCB Access Error
+ */
+ (rOB_LFIR, bit(4)) ? defaultMaskedError;
+
+ /** OB_LFIR[5]
+ * PSCOM Logic: Summarized internal errors
+ */
+ (rOB_LFIR, bit(5)) ? defaultMaskedError;
+
+ /** OB_LFIR[6]
+ * Therm Logic: Summarized internal errors
+ */
+ (rOB_LFIR, bit(6)) ? defaultMaskedError;
+
+ /** OB_LFIR[7]
+ * Therm Logic: PCB Access Error
+ */
+ (rOB_LFIR, bit(7)) ? defaultMaskedError;
+
+ /** OB_LFIR[8]
+ * Therm Logic: Temperature critical trip
+ */
+ (rOB_LFIR, bit(8)) ? defaultMaskedError;
+
+ /** OB_LFIR[9]
+ * Therm Logic: Temperature fatal trip
+ */
+ (rOB_LFIR, bit(9)) ? defaultMaskedError;
+
+ /** OB_LFIR[10]
+ * UNUSED in P9
+ */
+ (rOB_LFIR, bit(10)) ? defaultMaskedError;
+
+ /** OB_LFIR[11]
+ * Debug Logic: Scom Satellite Error
+ */
+ (rOB_LFIR, bit(11)) ? defaultMaskedError;
+
+ /** OB_LFIR[12]
+ * Scom Satellite Error - L3 Trace0
+ */
+ (rOB_LFIR, bit(12)) ? defaultMaskedError;
+
+ /** OB_LFIR[13]
+ * Scom Satellite Error - L3 Trace0
+ */
+ (rOB_LFIR, bit(13)) ? defaultMaskedError;
+
+ /** OB_LFIR[14:40]
+ * unused
+ */
+ (rOB_LFIR, bit(14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40)) ? defaultMaskedError;
+
+ /** OB_LFIR[41]
+ * Malfunction Alert or Local Checkstop
+ */
+ (rOB_LFIR, bit(41)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 OBUS target IOOLFIR
+################################################################################
+
+rule rIOOLFIR
+{
+ CHECK_STOP:
+ IOOLFIR & ~IOOLFIR_MASK & ~IOOLFIR_ACT0 & ~IOOLFIR_ACT1;
+ RECOVERABLE:
+ IOOLFIR & ~IOOLFIR_MASK & ~IOOLFIR_ACT0 & IOOLFIR_ACT1;
+};
+
+group gIOOLFIR
+ filter singlebit,
+ cs_root_cause(54,55,56,57,58,59)
+{
+ /** IOOLFIR[0]
+ * link0 trained
+ */
+ (rIOOLFIR, bit(0)) ? defaultMaskedError;
+
+ /** IOOLFIR[1]
+ * link1 trained
+ */
+ (rIOOLFIR, bit(1)) ? defaultMaskedError;
+
+ /** IOOLFIR[2]
+ * link0 op irq
+ */
+ (rIOOLFIR, bit(2)) ? defaultMaskedError;
+
+ /** IOOLFIR[3]
+ * link1 op irq
+ */
+ (rIOOLFIR, bit(3)) ? defaultMaskedError;
+
+ /** IOOLFIR[4]
+ * link0 replay threshold
+ */
+ (rIOOLFIR, bit(4)) ? defaultMaskedError;
+
+ /** IOOLFIR[5]
+ * link1 replay threshold
+ */
+ (rIOOLFIR, bit(5)) ? defaultMaskedError;
+
+ /** IOOLFIR[6]
+ * link0 crc error
+ */
+ (rIOOLFIR, bit(6)) ? threshold_and_mask_self;
+
+ /** IOOLFIR[7]
+ * link1 crc error
+ */
+ (rIOOLFIR, bit(7)) ? threshold_and_mask_self;
+
+ /** IOOLFIR[8]
+ * link0 nak received
+ */
+ (rIOOLFIR, bit(8)) ? defaultMaskedError;
+
+ /** IOOLFIR[9]
+ * link1 nak received
+ */
+ (rIOOLFIR, bit(9)) ? defaultMaskedError;
+
+ /** IOOLFIR[10]
+ * link0 replay buffer full
+ */
+ (rIOOLFIR, bit(10)) ? defaultMaskedError;
+
+ /** IOOLFIR[11]
+ * link1 replay buffer full
+ */
+ (rIOOLFIR, bit(11)) ? defaultMaskedError;
+
+ /** IOOLFIR[12]
+ * link0 sl ecc threshold
+ */
+ (rIOOLFIR, bit(12)) ? defaultMaskedError;
+
+ /** IOOLFIR[13]
+ * link1 sl ecc threshold
+ */
+ (rIOOLFIR, bit(13)) ? defaultMaskedError;
+
+ /** IOOLFIR[14]
+ * link0 sl ecc correctable
+ */
+ (rIOOLFIR, bit(14)) ? threshold_and_mask_self;
+
+ /** IOOLFIR[15]
+ * link1 sl ecc correctable
+ */
+ (rIOOLFIR, bit(15)) ? threshold_and_mask_self;
+
+ /** IOOLFIR[16]
+ * link0 sl ecc ue
+ */
+ (rIOOLFIR, bit(16)) ? threshold_and_mask_self;
+
+ /** IOOLFIR[17]
+ * link1 sl ecc ue
+ */
+ (rIOOLFIR, bit(17)) ? threshold_and_mask_self;
+
+ /** IOOLFIR[18]
+ * link0 retrain threshold
+ */
+ (rIOOLFIR, bit(18)) ? defaultMaskedError;
+
+ /** IOOLFIR[19]
+ * link1 retrain threshold
+ */
+ (rIOOLFIR, bit(19)) ? defaultMaskedError;
+
+ /** IOOLFIR[20]
+ * link0 loss block align
+ */
+ (rIOOLFIR, bit(20)) ? defaultMaskedError;
+
+ /** IOOLFIR[21]
+ * link1 loss block align
+ */
+ (rIOOLFIR, bit(21)) ? defaultMaskedError;
+
+ /** IOOLFIR[22]
+ * link0 invalid block
+ */
+ (rIOOLFIR, bit(22)) ? defaultMaskedError;
+
+ /** IOOLFIR[23]
+ * link1 invalid block
+ */
+ (rIOOLFIR, bit(23)) ? defaultMaskedError;
+
+ /** IOOLFIR[24]
+ * link0 deskew error
+ */
+ (rIOOLFIR, bit(24)) ? defaultMaskedError;
+
+ /** IOOLFIR[25]
+ * link1 deskew error
+ */
+ (rIOOLFIR, bit(25)) ? defaultMaskedError;
+
+ /** IOOLFIR[26]
+ * link0 deskew overflow
+ */
+ (rIOOLFIR, bit(26)) ? defaultMaskedError;
+
+ /** IOOLFIR[27]
+ * link1 deskew overflow
+ */
+ (rIOOLFIR, bit(27)) ? defaultMaskedError;
+
+ /** IOOLFIR[28]
+ * link0 sw retrain
+ */
+ (rIOOLFIR, bit(28)) ? defaultMaskedError;
+
+ /** IOOLFIR[29]
+ * link1 sw retrain
+ */
+ (rIOOLFIR, bit(29)) ? defaultMaskedError;
+
+ /** IOOLFIR[30]
+ * link0 ack queue overflow
+ */
+ (rIOOLFIR, bit(30)) ? defaultMaskedError;
+
+ /** IOOLFIR[31]
+ * link1 ack queue overflow
+ */
+ (rIOOLFIR, bit(31)) ? defaultMaskedError;
+
+ /** IOOLFIR[32]
+ * link0 ack queue underflow
+ */
+ (rIOOLFIR, bit(32)) ? defaultMaskedError;
+
+ /** IOOLFIR[33]
+ * link1 ack queue underflow
+ */
+ (rIOOLFIR, bit(33)) ? defaultMaskedError;
+
+ /** IOOLFIR[34]
+ * link0 num replay
+ */
+ (rIOOLFIR, bit(34)) ? defaultMaskedError;
+
+ /** IOOLFIR[35]
+ * link1 num replay
+ */
+ (rIOOLFIR, bit(35)) ? defaultMaskedError;
+
+ /** IOOLFIR[36]
+ * link0 training set received
+ */
+ (rIOOLFIR, bit(36)) ? defaultMaskedError;
+
+ /** IOOLFIR[37]
+ * link1 training set received
+ */
+ (rIOOLFIR, bit(37)) ? defaultMaskedError;
+
+ /** IOOLFIR[38]
+ * link0 prbs select error
+ */
+ (rIOOLFIR, bit(38)) ? threshold_and_mask_self;
+
+ /** IOOLFIR[39]
+ * link1 prbs select error
+ */
+ (rIOOLFIR, bit(39)) ? threshold_and_mask_self;
+
+ /** IOOLFIR[40]
+ * link0 tcomplete bad
+ */
+ (rIOOLFIR, bit(40)) ? defaultMaskedError;
+
+ /** IOOLFIR[41]
+ * link1 tcomplete bad
+ */
+ (rIOOLFIR, bit(41)) ? defaultMaskedError;
+
+ /** IOOLFIR[42]
+ * link0 no spare lane available
+ */
+ (rIOOLFIR, bit(42)) ? obusSmpCallout_L0;
+
+ /** IOOLFIR[43]
+ * link1 no spare lane available
+ */
+ (rIOOLFIR, bit(43)) ? obusSmpCallout_L1;
+
+ /** IOOLFIR[44]
+ * link0 spare done
+ */
+ (rIOOLFIR, bit(44)) ? obusSmpCallout_th32_L0;
+
+ /** IOOLFIR[45]
+ * link1 spare done
+ */
+ (rIOOLFIR, bit(45)) ? obusSmpCallout_th32_L1;
+
+ /** IOOLFIR[46]
+ * link0 too many crc errors
+ */
+ (rIOOLFIR, bit(46)) ? obusSmpCallout_L0;
+
+ /** IOOLFIR[47]
+ * link1 too many crc errors
+ */
+ (rIOOLFIR, bit(47)) ? obusSmpCallout_L1;
+
+ /** IOOLFIR[48]
+ * link0 npu error
+ */
+ (rIOOLFIR, bit(48)) ? threshold_and_mask_self;
+
+ /** IOOLFIR[49]
+ * link1 npu error
+ */
+ (rIOOLFIR, bit(49)) ? threshold_and_mask_self;
+
+ /** IOOLFIR[50]
+ * linkx npu error
+ */
+ (rIOOLFIR, bit(50)) ? threshold_and_mask_self;
+
+ /** IOOLFIR[51]
+ * osc switch
+ */
+ (rIOOLFIR, bit(51)) ? threshold_and_mask_self;
+
+ /** IOOLFIR[52]
+ * link0 correctable array error
+ */
+ (rIOOLFIR, bit(52)) ? obusSmpCallout_th32_L0;
+
+ /** IOOLFIR[53]
+ * link1 correctable array error
+ */
+ (rIOOLFIR, bit(53)) ? obusSmpCallout_th32_L1;
+
+ /** IOOLFIR[54]
+ * link0 uncorrectable array error
+ */
+ (rIOOLFIR, bit(54)) ? obusSmpCallout_th32_L0;
+
+ /** IOOLFIR[55]
+ * link1 uncorrectable array error
+ */
+ (rIOOLFIR, bit(55)) ? obusSmpCallout_th32_L1;
+
+ /** IOOLFIR[56]
+ * link0 training failed
+ */
+ (rIOOLFIR, bit(56)) ? obusSmpFailure_L0;
+
+ /** IOOLFIR[57]
+ * link1 training failed
+ */
+ (rIOOLFIR, bit(57)) ? obusSmpFailure_L1;
+
+ /** IOOLFIR[58]
+ * link0 unrecoverable error
+ */
+ (rIOOLFIR, bit(58)) ? obusSmpCallout_th32_L0;
+
+ /** IOOLFIR[59]
+ * link1 unrecoverable error
+ */
+ (rIOOLFIR, bit(59)) ? obusSmpCallout_th32_L1;
+
+ /** IOOLFIR[60]
+ * link0 internal error
+ */
+ (rIOOLFIR, bit(60)) ? self_th_32perDay;
+
+ /** IOOLFIR[61]
+ * link1 internal error
+ */
+ (rIOOLFIR, bit(61)) ? self_th_32perDay;
+
+ /** IOOLFIR[62]
+ * fir scom err dup
+ */
+ (rIOOLFIR, bit(62)) ? defaultMaskedError;
+
+ /** IOOLFIR[63]
+ * fir scom err
+ */
+ (rIOOLFIR, bit(63)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 OBUS target IOOBFIR
+################################################################################
+
+rule rIOOBFIR
+{
+ CHECK_STOP:
+ IOOBFIR & ~IOOBFIR_MASK & ~IOOBFIR_ACT0 & ~IOOBFIR_ACT1;
+ RECOVERABLE:
+ IOOBFIR & ~IOOBFIR_MASK & ~IOOBFIR_ACT0 & IOOBFIR_ACT1;
+ UNIT_CS:
+ IOOBFIR & ~IOOBFIR_MASK & IOOBFIR_ACT0 & IOOBFIR_ACT1;
+};
+
+group gIOOBFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** IOOBFIR[0]
+ * A RX state machine error
+ */
+ (rIOOBFIR, bit(0)) ? defaultMaskedError;
+
+ /** IOOBFIR[1]
+ * A TX state machine error
+ */
+ (rIOOBFIR, bit(1)) ? defaultMaskedError;
+
+ /** IOOBFIR[2]
+ * The per-bus GCR ring hang detector error
+ */
+ (rIOOBFIR, bit(2)) ? self_th_1;
+
+ /** IOOBFIR[3:47]
+ * spare
+ */
+ (rIOOBFIR, bit(3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47)) ? defaultMaskedError;
+
+ /** IOOBFIR[48]
+ * scom error
+ */
+ (rIOOBFIR, bit(48)) ? defaultMaskedError;
+
+ /** IOOBFIR[49]
+ * scom error
+ */
+ (rIOOBFIR, bit(49)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 OBUS target OBPPEFIR
+################################################################################
+
+rule rOBPPEFIR
+{
+ CHECK_STOP:
+ OBPPEFIR & ~OBPPEFIR_MASK & ~OBPPEFIR_ACT0 & ~OBPPEFIR_ACT1;
+ RECOVERABLE:
+ OBPPEFIR & ~OBPPEFIR_MASK & ~OBPPEFIR_ACT0 & OBPPEFIR_ACT1;
+ UNIT_CS:
+ OBPPEFIR & ~OBPPEFIR_MASK & OBPPEFIR_ACT0 & OBPPEFIR_ACT1;
+};
+
+group gOBPPEFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** OBPPEFIR[0:3]
+ * PPE general error.
+ */
+ (rOBPPEFIR, bit(0|1|2|3)) ? threshold_and_mask_self;
+
+ /** OBPPEFIR[4]
+ * PPE halted.
+ */
+ (rOBPPEFIR, bit(4)) ? defaultMaskedError;
+
+ /** OBPPEFIR[5]
+ * PPE watchdog timer timed out.
+ */
+ (rOBPPEFIR, bit(5)) ? defaultMaskedError;
+
+ /** OBPPEFIR[6]
+ * PPE MMIO data in error.
+ */
+ (rOBPPEFIR, bit(6)) ? defaultMaskedError;
+
+ /** OBPPEFIR[7]
+ * PPE Arb missed scrub tick.
+ */
+ (rOBPPEFIR, bit(7)) ? threshold_and_mask_self;
+
+ /** OBPPEFIR[8]
+ * PPE Arb ary ue error.
+ */
+ (rOBPPEFIR, bit(8)) ? self_th_1;
+
+ /** OBPPEFIR[9]
+ * PPE Arb ary ce error.
+ */
+ (rOBPPEFIR, bit(9)) ? threshold_and_mask_self;
+
+ /** OBPPEFIR[10]
+ * spare
+ */
+ (rOBPPEFIR, bit(10)) ? defaultMaskedError;
+
+ /** OBPPEFIR[11]
+ * scom error
+ */
+ (rOBPPEFIR, bit(11)) ? defaultMaskedError;
+
+ /** OBPPEFIR[12]
+ * scom error
+ */
+ (rOBPPEFIR, bit(12)) ? defaultMaskedError;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "p9_common_obus_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_omic.rule b/src/usr/diag/prdf/common/plat/axone/axone_omic.rule
new file mode 100644
index 000000000..09ed59f2d
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_omic.rule
@@ -0,0 +1,686 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_omic.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
+
+chip axone_omic
+{
+ name "AXONE OMIC target";
+ targettype TYPE_OMIC;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # P9 OMIC target IOOMIFIR
+ ############################################################################
+
+ register IOOMIFIR
+ {
+ name "P9 OMIC target IOOMIFIR";
+ scomaddr 0x07011000;
+ reset (&, 0x07011001);
+ mask (|, 0x07011005);
+ capture group default;
+ };
+
+ register IOOMIFIR_MASK
+ {
+ name "P9 OMIC target IOOMIFIR MASK";
+ scomaddr 0x07011003;
+ capture group default;
+ };
+
+ register IOOMIFIR_ACT0
+ {
+ name "P9 OMIC target IOOMIFIR ACT0";
+ scomaddr 0x07011006;
+ capture group default;
+ capture req nonzero("IOOMIFIR");
+ };
+
+ register IOOMIFIR_ACT1
+ {
+ name "P9 OMIC target IOOMIFIR ACT1";
+ scomaddr 0x07011007;
+ capture group default;
+ capture req nonzero("IOOMIFIR");
+ };
+
+ ############################################################################
+ # P9 OMIC target MCPPEFIR
+ ############################################################################
+
+ register MCPPEFIR
+ {
+ name "P9 OMIC target MCPPEFIR";
+ scomaddr 0x07012440;
+ reset (&, 0x07012441);
+ mask (|, 0x07012445);
+ capture group default;
+ };
+
+ register MCPPEFIR_MASK
+ {
+ name "P9 OMIC target MCPPEFIR MASK";
+ scomaddr 0x07012443;
+ capture group default;
+ };
+
+ register MCPPEFIR_ACT0
+ {
+ name "P9 OMIC target MCPPEFIR ACT0";
+ scomaddr 0x07012446;
+ capture group default;
+ capture req nonzero("MCPPEFIR");
+ };
+
+ register MCPPEFIR_ACT1
+ {
+ name "P9 OMIC target MCPPEFIR ACT1";
+ scomaddr 0x07012447;
+ capture group default;
+ capture req nonzero("MCPPEFIR");
+ };
+
+ ############################################################################
+ # P9 OMIC target OMIDLFIR
+ ############################################################################
+
+ register OMIDLFIR
+ {
+ name "P9 OMIC target OMIDLFIR";
+ scomaddr 0x07013340;
+ reset (&, 0x07013341);
+ mask (|, 0x07013345);
+ capture group default;
+ };
+
+ register OMIDLFIR_MASK
+ {
+ name "P9 OMIC target OMIDLFIR MASK";
+ scomaddr 0x07013343;
+ capture group default;
+ };
+
+ register OMIDLFIR_ACT0
+ {
+ name "P9 OMIC target OMIDLFIR ACT0";
+ scomaddr 0x07013346;
+ capture group default;
+ capture req nonzero("OMIDLFIR");
+ };
+
+ register OMIDLFIR_ACT1
+ {
+ name "P9 OMIC target OMIDLFIR ACT1";
+ scomaddr 0x07013347;
+ capture group default;
+ capture req nonzero("OMIDLFIR");
+ };
+
+# Include registers not defined by the xml
+.include "axone_omic_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# Summary for OMIC
+################################################################################
+
+rule rOMIC
+{
+ CHECK_STOP:
+ summary( 0, rIOOMIFIR ) |
+ summary( 1, rMCPPEFIR ) |
+ summary( 2, rOMIDLFIR );
+
+ RECOVERABLE:
+ summary( 0, rIOOMIFIR ) |
+ summary( 1, rMCPPEFIR ) |
+ summary( 2, rOMIDLFIR );
+
+ UNIT_CS:
+ summary( 0, rIOOMIFIR ) |
+ summary( 1, rMCPPEFIR ) |
+ summary( 2, rOMIDLFIR );
+
+ HOST_ATTN:
+ summary( 0, rIOOMIFIR ) |
+ summary( 1, rMCPPEFIR ) |
+ summary( 2, rOMIDLFIR );
+
+};
+
+group gOMIC attntype CHECK_STOP, RECOVERABLE, UNIT_CS, HOST_ATTN
+ filter singlebit
+{
+ (rOMIC, bit(0)) ? analyzeIOOMIFIR;
+ (rOMIC, bit(1)) ? analyzeMCPPEFIR;
+ (rOMIC, bit(2)) ? analyzeOMIDLFIR;
+};
+
+################################################################################
+# P9 OMIC target IOOMIFIR
+################################################################################
+
+rule rIOOMIFIR
+{
+ CHECK_STOP:
+ IOOMIFIR & ~IOOMIFIR_MASK & ~IOOMIFIR_ACT0 & ~IOOMIFIR_ACT1;
+ RECOVERABLE:
+ IOOMIFIR & ~IOOMIFIR_MASK & ~IOOMIFIR_ACT0 & IOOMIFIR_ACT1;
+ HOST_ATTN:
+ IOOMIFIR & ~IOOMIFIR_MASK & IOOMIFIR_ACT0 & ~IOOMIFIR_ACT1;
+ UNIT_CS:
+ IOOMIFIR & ~IOOMIFIR_MASK & IOOMIFIR_ACT0 & IOOMIFIR_ACT1;
+};
+
+group gIOOMIFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** IOOMIFIR[0]
+ * RX invalid state or parity error
+ */
+ (rIOOMIFIR, bit(0)) ? defaultMaskedError;
+
+ /** IOOMIFIR[1]
+ * TX invalid state or parity error
+ */
+ (rIOOMIFIR, bit(1)) ? defaultMaskedError;
+
+ /** IOOMIFIR[2]
+ * GCR hang error
+ */
+ (rIOOMIFIR, bit(2)) ? defaultMaskedError;
+
+ /** IOOMIFIR[3:47]
+ * Unused
+ */
+ (rIOOMIFIR, bit(3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47)) ? defaultMaskedError;
+
+ /** IOOMIFIR[48]
+ * SCOM FSM or FIR register parity error
+ */
+ (rIOOMIFIR, bit(48)) ? defaultMaskedError;
+
+ /** IOOMIFIR[49]
+ * SCOM FSM or FIR register parity error clone
+ */
+ (rIOOMIFIR, bit(49)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 OMIC target MCPPEFIR
+################################################################################
+
+rule rMCPPEFIR
+{
+ CHECK_STOP:
+ MCPPEFIR & ~MCPPEFIR_MASK & ~MCPPEFIR_ACT0 & ~MCPPEFIR_ACT1;
+ RECOVERABLE:
+ MCPPEFIR & ~MCPPEFIR_MASK & ~MCPPEFIR_ACT0 & MCPPEFIR_ACT1;
+ HOST_ATTN:
+ MCPPEFIR & ~MCPPEFIR_MASK & MCPPEFIR_ACT0 & ~MCPPEFIR_ACT1;
+ UNIT_CS:
+ MCPPEFIR & ~MCPPEFIR_MASK & MCPPEFIR_ACT0 & MCPPEFIR_ACT1;
+};
+
+group gMCPPEFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** MCPPEFIR[0]
+ * PPE general error.
+ */
+ (rMCPPEFIR, bit(0)) ? defaultMaskedError;
+
+ /** MCPPEFIR[1]
+ * PPE general error.
+ */
+ (rMCPPEFIR, bit(1)) ? defaultMaskedError;
+
+ /** MCPPEFIR[2]
+ * PPE general error.
+ */
+ (rMCPPEFIR, bit(2)) ? defaultMaskedError;
+
+ /** MCPPEFIR[3]
+ * PPE general error.
+ */
+ (rMCPPEFIR, bit(3)) ? defaultMaskedError;
+
+ /** MCPPEFIR[4]
+ * PPE halted.
+ */
+ (rMCPPEFIR, bit(4)) ? defaultMaskedError;
+
+ /** MCPPEFIR[5]
+ * PPE watchdog timer timed out
+ */
+ (rMCPPEFIR, bit(5)) ? defaultMaskedError;
+
+ /** MCPPEFIR[6]
+ * MMIO data in error.
+ */
+ (rMCPPEFIR, bit(6)) ? defaultMaskedError;
+
+ /** MCPPEFIR[7]
+ * Arb missed scrub tick.
+ */
+ (rMCPPEFIR, bit(7)) ? defaultMaskedError;
+
+ /** MCPPEFIR[8]
+ * Arb ary ue error.
+ */
+ (rMCPPEFIR, bit(8)) ? defaultMaskedError;
+
+ /** MCPPEFIR[9]
+ * Arb ary ce error.
+ */
+ (rMCPPEFIR, bit(9)) ? defaultMaskedError;
+
+ /** MCPPEFIR[10]
+ * spare
+ */
+ (rMCPPEFIR, bit(10)) ? defaultMaskedError;
+
+ /** MCPPEFIR[11]
+ * FIR_SCOMFIR_ERROR
+ */
+ (rMCPPEFIR, bit(11)) ? defaultMaskedError;
+
+ /** MCPPEFIR[12]
+ * FIR_SCOMFIR_ERROR
+ */
+ (rMCPPEFIR, bit(12)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 OMIC target OMIDLFIR
+################################################################################
+
+rule rOMIDLFIR
+{
+ CHECK_STOP:
+ OMIDLFIR & ~OMIDLFIR_MASK & ~OMIDLFIR_ACT0 & ~OMIDLFIR_ACT1;
+ RECOVERABLE:
+ OMIDLFIR & ~OMIDLFIR_MASK & ~OMIDLFIR_ACT0 & OMIDLFIR_ACT1;
+ HOST_ATTN:
+ OMIDLFIR & ~OMIDLFIR_MASK & OMIDLFIR_ACT0 & ~OMIDLFIR_ACT1;
+ UNIT_CS:
+ OMIDLFIR & ~OMIDLFIR_MASK & OMIDLFIR_ACT0 & OMIDLFIR_ACT1;
+};
+
+group gOMIDLFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** OMIDLFIR[0]
+ * DL0 fatal error
+ */
+ (rOMIDLFIR, bit(0)) ? defaultMaskedError;
+
+ /** OMIDLFIR[1]
+ * DL0 data UE
+ */
+ (rOMIDLFIR, bit(1)) ? defaultMaskedError;
+
+ /** OMIDLFIR[2]
+ * DL0 flit CE
+ */
+ (rOMIDLFIR, bit(2)) ? defaultMaskedError;
+
+ /** OMIDLFIR[3]
+ * DL0 CRC error
+ */
+ (rOMIDLFIR, bit(3)) ? defaultMaskedError;
+
+ /** OMIDLFIR[4]
+ * DL0 nack
+ */
+ (rOMIDLFIR, bit(4)) ? defaultMaskedError;
+
+ /** OMIDLFIR[5]
+ * DL0 X4 mode
+ */
+ (rOMIDLFIR, bit(5)) ? defaultMaskedError;
+
+ /** OMIDLFIR[6]
+ * DL0 EDPL
+ */
+ (rOMIDLFIR, bit(6)) ? defaultMaskedError;
+
+ /** OMIDLFIR[7]
+ * DL0 timeout
+ */
+ (rOMIDLFIR, bit(7)) ? defaultMaskedError;
+
+ /** OMIDLFIR[8]
+ * DL0 remote retrain
+ */
+ (rOMIDLFIR, bit(8)) ? defaultMaskedError;
+
+ /** OMIDLFIR[9]
+ * DL0 error retrain
+ */
+ (rOMIDLFIR, bit(9)) ? defaultMaskedError;
+
+ /** OMIDLFIR[10]
+ * DL0 EDPL retrain
+ */
+ (rOMIDLFIR, bit(10)) ? defaultMaskedError;
+
+ /** OMIDLFIR[11]
+ * DL0 trained
+ */
+ (rOMIDLFIR, bit(11)) ? defaultMaskedError;
+
+ /** OMIDLFIR[12]
+ * DL0 endpoint bit 0
+ */
+ (rOMIDLFIR, bit(12)) ? defaultMaskedError;
+
+ /** OMIDLFIR[13]
+ * DL0 endpoint bit 1
+ */
+ (rOMIDLFIR, bit(13)) ? defaultMaskedError;
+
+ /** OMIDLFIR[14]
+ * DL0 endpoint bit 2
+ */
+ (rOMIDLFIR, bit(14)) ? defaultMaskedError;
+
+ /** OMIDLFIR[15]
+ * DL0 endpoint bit 3
+ */
+ (rOMIDLFIR, bit(15)) ? defaultMaskedError;
+
+ /** OMIDLFIR[16]
+ * DL0 endpoint bit 4
+ */
+ (rOMIDLFIR, bit(16)) ? defaultMaskedError;
+
+ /** OMIDLFIR[17]
+ * DL0 endpoint bit 5
+ */
+ (rOMIDLFIR, bit(17)) ? defaultMaskedError;
+
+ /** OMIDLFIR[18]
+ * DL0 endpoint bit 6
+ */
+ (rOMIDLFIR, bit(18)) ? defaultMaskedError;
+
+ /** OMIDLFIR[19]
+ * DL0 endpoint bit 7
+ */
+ (rOMIDLFIR, bit(19)) ? defaultMaskedError;
+
+ /** OMIDLFIR[20]
+ * DL1 fatal error
+ */
+ (rOMIDLFIR, bit(20)) ? defaultMaskedError;
+
+ /** OMIDLFIR[21]
+ * DL1 data UE
+ */
+ (rOMIDLFIR, bit(21)) ? defaultMaskedError;
+
+ /** OMIDLFIR[22]
+ * DL1 flit CE
+ */
+ (rOMIDLFIR, bit(22)) ? defaultMaskedError;
+
+ /** OMIDLFIR[23]
+ * DL1 CRC error
+ */
+ (rOMIDLFIR, bit(23)) ? defaultMaskedError;
+
+ /** OMIDLFIR[24]
+ * DL1 nack
+ */
+ (rOMIDLFIR, bit(24)) ? defaultMaskedError;
+
+ /** OMIDLFIR[25]
+ * DL1 X4 mode
+ */
+ (rOMIDLFIR, bit(25)) ? defaultMaskedError;
+
+ /** OMIDLFIR[26]
+ * DL1 EDPL
+ */
+ (rOMIDLFIR, bit(26)) ? defaultMaskedError;
+
+ /** OMIDLFIR[27]
+ * DL1 timeout
+ */
+ (rOMIDLFIR, bit(27)) ? defaultMaskedError;
+
+ /** OMIDLFIR[28]
+ * DL1 remote retrain
+ */
+ (rOMIDLFIR, bit(28)) ? defaultMaskedError;
+
+ /** OMIDLFIR[29]
+ * DL1 error retrain
+ */
+ (rOMIDLFIR, bit(29)) ? defaultMaskedError;
+
+ /** OMIDLFIR[30]
+ * DL1 EDPL retrain
+ */
+ (rOMIDLFIR, bit(30)) ? defaultMaskedError;
+
+ /** OMIDLFIR[31]
+ * DL1 trained
+ */
+ (rOMIDLFIR, bit(31)) ? defaultMaskedError;
+
+ /** OMIDLFIR[32]
+ * DL1 endpoint bit 0
+ */
+ (rOMIDLFIR, bit(32)) ? defaultMaskedError;
+
+ /** OMIDLFIR[33]
+ * DL1 endpoint bit 1
+ */
+ (rOMIDLFIR, bit(33)) ? defaultMaskedError;
+
+ /** OMIDLFIR[34]
+ * DL1 endpoint bit 2
+ */
+ (rOMIDLFIR, bit(34)) ? defaultMaskedError;
+
+ /** OMIDLFIR[35]
+ * DL1 endpoint bit 3
+ */
+ (rOMIDLFIR, bit(35)) ? defaultMaskedError;
+
+ /** OMIDLFIR[36]
+ * DL1 endpoint bit 4
+ */
+ (rOMIDLFIR, bit(36)) ? defaultMaskedError;
+
+ /** OMIDLFIR[37]
+ * DL1 endpoint bit 5
+ */
+ (rOMIDLFIR, bit(37)) ? defaultMaskedError;
+
+ /** OMIDLFIR[38]
+ * DL1 endpoint bit 6
+ */
+ (rOMIDLFIR, bit(38)) ? defaultMaskedError;
+
+ /** OMIDLFIR[39]
+ * DL1 endpoint bit 7
+ */
+ (rOMIDLFIR, bit(39)) ? defaultMaskedError;
+
+ /** OMIDLFIR[40]
+ * DL2 fatal error
+ */
+ (rOMIDLFIR, bit(40)) ? defaultMaskedError;
+
+ /** OMIDLFIR[41]
+ * DL2 data UE
+ */
+ (rOMIDLFIR, bit(41)) ? defaultMaskedError;
+
+ /** OMIDLFIR[42]
+ * DL2 flit CE
+ */
+ (rOMIDLFIR, bit(42)) ? defaultMaskedError;
+
+ /** OMIDLFIR[43]
+ * DL2 CRC error
+ */
+ (rOMIDLFIR, bit(43)) ? defaultMaskedError;
+
+ /** OMIDLFIR[44]
+ * DL2 nack
+ */
+ (rOMIDLFIR, bit(44)) ? defaultMaskedError;
+
+ /** OMIDLFIR[45]
+ * DL2 X4 mode
+ */
+ (rOMIDLFIR, bit(45)) ? defaultMaskedError;
+
+ /** OMIDLFIR[46]
+ * DL2 EDPL
+ */
+ (rOMIDLFIR, bit(46)) ? defaultMaskedError;
+
+ /** OMIDLFIR[47]
+ * DL2 timeout
+ */
+ (rOMIDLFIR, bit(47)) ? defaultMaskedError;
+
+ /** OMIDLFIR[48]
+ * DL2 remote retrain
+ */
+ (rOMIDLFIR, bit(48)) ? defaultMaskedError;
+
+ /** OMIDLFIR[49]
+ * DL2 error retrain
+ */
+ (rOMIDLFIR, bit(49)) ? defaultMaskedError;
+
+ /** OMIDLFIR[50]
+ * DL2 EDPL retrain
+ */
+ (rOMIDLFIR, bit(50)) ? defaultMaskedError;
+
+ /** OMIDLFIR[51]
+ * DL2 trained
+ */
+ (rOMIDLFIR, bit(51)) ? defaultMaskedError;
+
+ /** OMIDLFIR[52]
+ * DL2 endpoint bit 0
+ */
+ (rOMIDLFIR, bit(52)) ? defaultMaskedError;
+
+ /** OMIDLFIR[53]
+ * DL2 endpoint bit 1
+ */
+ (rOMIDLFIR, bit(53)) ? defaultMaskedError;
+
+ /** OMIDLFIR[54]
+ * DL2 endpoint bit 2
+ */
+ (rOMIDLFIR, bit(54)) ? defaultMaskedError;
+
+ /** OMIDLFIR[55]
+ * DL2 endpoint bit 3
+ */
+ (rOMIDLFIR, bit(55)) ? defaultMaskedError;
+
+ /** OMIDLFIR[56]
+ * DL2 endpoint bit 4
+ */
+ (rOMIDLFIR, bit(56)) ? defaultMaskedError;
+
+ /** OMIDLFIR[57]
+ * DL2 endpoint bit 5
+ */
+ (rOMIDLFIR, bit(57)) ? defaultMaskedError;
+
+ /** OMIDLFIR[58]
+ * DL2 endpoint bit 6
+ */
+ (rOMIDLFIR, bit(58)) ? defaultMaskedError;
+
+ /** OMIDLFIR[59]
+ * DL2 endpoint bit 7
+ */
+ (rOMIDLFIR, bit(59)) ? defaultMaskedError;
+
+ /** OMIDLFIR[60]
+ * Performance monitor wrapped
+ */
+ (rOMIDLFIR, bit(60)) ? defaultMaskedError;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "axone_omic_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_omic_actions.rule b/src/usr/diag/prdf/common/plat/axone/axone_omic_actions.rule
new file mode 100644
index 000000000..ecb6626a8
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_omic_actions.rule
@@ -0,0 +1,33 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_omic_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
+
+################################################################################
+# Analyze groups
+################################################################################
+
+actionclass analyzeIOOMIFIR { analyze(gIOOMIFIR); };
+actionclass analyzeMCPPEFIR { analyze(gMCPPEFIR); };
+actionclass analyzeOMIDLFIR { analyze(gOMIDLFIR); };
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_pec.rule b/src/usr/diag/prdf/common/plat/axone/axone_pec.rule
new file mode 100644
index 000000000..ec728cb3b
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_pec.rule
@@ -0,0 +1,472 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_pec.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
+
+chip axone_pec
+{
+ name "AXONE PEC target";
+ targettype TYPE_PEC;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # P9 PEC target PCI_LFIR
+ ############################################################################
+
+ register PCI_LFIR
+ {
+ name "P9 PEC target PCI_LFIR";
+ scomaddr 0x0d04000a;
+ reset (&, 0x0d04000b);
+ mask (|, 0x0d04000f);
+ capture group default;
+ };
+
+ register PCI_LFIR_MASK
+ {
+ name "P9 PEC target PCI_LFIR MASK";
+ scomaddr 0x0d04000d;
+ capture group default;
+ };
+
+ register PCI_LFIR_ACT0
+ {
+ name "P9 PEC target PCI_LFIR ACT0";
+ scomaddr 0x0d040010;
+ capture group default;
+ capture req nonzero("PCI_LFIR");
+ };
+
+ register PCI_LFIR_ACT1
+ {
+ name "P9 PEC target PCI_LFIR ACT1";
+ scomaddr 0x0d040011;
+ capture group default;
+ capture req nonzero("PCI_LFIR");
+ };
+
+ ############################################################################
+ # P9 PEC target IOPCIFIR
+ ############################################################################
+
+ register IOPCIFIR
+ {
+ name "P9 PEC target IOPCIFIR";
+ scomaddr 0x0d010c00;
+ reset (&, 0x0d010c01);
+ mask (|, 0x0d010c05);
+ capture group default;
+ };
+
+ register IOPCIFIR_MASK
+ {
+ name "P9 PEC target IOPCIFIR MASK";
+ scomaddr 0x0d010c03;
+ capture group default;
+ };
+
+ register IOPCIFIR_ACT0
+ {
+ name "P9 PEC target IOPCIFIR ACT0";
+ scomaddr 0x0d010c06;
+ capture group default;
+ capture req nonzero("IOPCIFIR");
+ };
+
+ register IOPCIFIR_ACT1
+ {
+ name "P9 PEC target IOPCIFIR ACT1";
+ scomaddr 0x0d010c07;
+ capture group default;
+ capture req nonzero("IOPCIFIR");
+ };
+
+# Include registers not defined by the xml
+.include "p9_common_pec_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# Summary for PEC
+################################################################################
+
+rule rPEC
+{
+ CHECK_STOP:
+ summary( 0, rPCI_LFIR ) |
+ summary( 1, rIOPCIFIR );
+
+ RECOVERABLE:
+ summary( 0, rPCI_LFIR ) |
+ summary( 1, rIOPCIFIR );
+
+};
+
+group gPEC attntype CHECK_STOP, RECOVERABLE
+ filter singlebit
+{
+ (rPEC, bit(0)) ? analyzePCI_LFIR;
+ (rPEC, bit(1)) ? analyzeIOPCIFIR;
+};
+
+################################################################################
+# P9 PEC target PCI_LFIR
+################################################################################
+
+rule rPCI_LFIR
+{
+ CHECK_STOP:
+ PCI_LFIR & ~PCI_LFIR_MASK & ~PCI_LFIR_ACT0 & ~PCI_LFIR_ACT1;
+ RECOVERABLE:
+ PCI_LFIR & ~PCI_LFIR_MASK & ~PCI_LFIR_ACT0 & PCI_LFIR_ACT1;
+};
+
+group gPCI_LFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** PCI_LFIR[0]
+ * CFIR internal parity error
+ */
+ (rPCI_LFIR, bit(0)) ? self_th_32perDay;
+
+ /** PCI_LFIR[1]
+ * Chiplet Control Reg: PCB Access Error
+ */
+ (rPCI_LFIR, bit(1)) ? self_th_32perDay;
+
+ /** PCI_LFIR[2]
+ * Clock Controller: PCB Access Error
+ */
+ (rPCI_LFIR, bit(2)) ? self_th_32perDay;
+
+ /** PCI_LFIR[3]
+ * Clock Controller: Summarized Error
+ */
+ (rPCI_LFIR, bit(3)) ? self_th_32perDay;
+
+ /** PCI_LFIR[4]
+ * PSCOM Logic: PCB Access Error
+ */
+ (rPCI_LFIR, bit(4)) ? defaultMaskedError;
+
+ /** PCI_LFIR[5]
+ * PSCOM Logic: Summarized internal errors
+ */
+ (rPCI_LFIR, bit(5)) ? defaultMaskedError;
+
+ /** PCI_LFIR[6]
+ * Therm Logic: Summarized internal errors
+ */
+ (rPCI_LFIR, bit(6)) ? defaultMaskedError;
+
+ /** PCI_LFIR[7]
+ * Therm Logic: PCB Access Error
+ */
+ (rPCI_LFIR, bit(7)) ? defaultMaskedError;
+
+ /** PCI_LFIR[8]
+ * Therm Logic: Temperature critical trip
+ */
+ (rPCI_LFIR, bit(8)) ? defaultMaskedError;
+
+ /** PCI_LFIR[9]
+ * Therm Logic: Temperature fatal trip
+ */
+ (rPCI_LFIR, bit(9)) ? defaultMaskedError;
+
+ /** PCI_LFIR[10]
+ * UNUSED in P9
+ */
+ (rPCI_LFIR, bit(10)) ? defaultMaskedError;
+
+ /** PCI_LFIR[11]
+ * Debug Logic: Scom Satellite Error
+ */
+ (rPCI_LFIR, bit(11)) ? defaultMaskedError;
+
+ /** PCI_LFIR[12]
+ * Scom Satellite Error - L3 Trace0
+ */
+ (rPCI_LFIR, bit(12)) ? defaultMaskedError;
+
+ /** PCI_LFIR[13]
+ * Scom Satellite Error - L3 Trace0
+ */
+ (rPCI_LFIR, bit(13)) ? defaultMaskedError;
+
+ /** PCI_LFIR[14:40]
+ * unused
+ */
+ (rPCI_LFIR, bit(14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40)) ? defaultMaskedError;
+
+ /** PCI_LFIR[41]
+ * Malfunction Alert or Local Checkstop
+ */
+ (rPCI_LFIR, bit(41)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 PEC target IOPCIFIR
+################################################################################
+
+rule rIOPCIFIR
+{
+ CHECK_STOP:
+ IOPCIFIR & ~IOPCIFIR_MASK & ~IOPCIFIR_ACT0 & ~IOPCIFIR_ACT1;
+ RECOVERABLE:
+ IOPCIFIR & ~IOPCIFIR_MASK & ~IOPCIFIR_ACT0 & IOPCIFIR_ACT1;
+};
+
+group gIOPCIFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** IOPCIFIR[0]
+ * HSS ZCAL Calibration Error
+ */
+ (rIOPCIFIR, bit(0)) ? parent_proc_th_1;
+
+ /** IOPCIFIR[1]
+ * HSS CAL PLL A Calibration error
+ */
+ (rIOPCIFIR, bit(1)) ? parent_proc_th_1;
+
+ /** IOPCIFIR[2]
+ * HSS CAL PLL B Calibration error
+ */
+ (rIOPCIFIR, bit(2)) ? parent_proc_th_1;
+
+ /** IOPCIFIR[3]
+ * TX Lane A Calibration Error
+ */
+ (rIOPCIFIR, bit(3)) ? defaultMaskedError;
+
+ /** IOPCIFIR[4]
+ * TX Lane B Calibration Error
+ */
+ (rIOPCIFIR, bit(4)) ? defaultMaskedError;
+
+ /** IOPCIFIR[5]
+ * TX Lane C Calibration Error
+ */
+ (rIOPCIFIR, bit(5)) ? defaultMaskedError;
+
+ /** IOPCIFIR[6]
+ * TX Lane D Calibration Error
+ */
+ (rIOPCIFIR, bit(6)) ? defaultMaskedError;
+
+ /** IOPCIFIR[7]
+ * TX Lane E Calibration Error
+ */
+ (rIOPCIFIR, bit(7)) ? defaultMaskedError;
+
+ /** IOPCIFIR[8]
+ * TX Lane F Calibration Error
+ */
+ (rIOPCIFIR, bit(8)) ? defaultMaskedError;
+
+ /** IOPCIFIR[9]
+ * TX Lane G Calibration Error
+ */
+ (rIOPCIFIR, bit(9)) ? defaultMaskedError;
+
+ /** IOPCIFIR[10]
+ * TX Lane H Calibration Error
+ */
+ (rIOPCIFIR, bit(10)) ? defaultMaskedError;
+
+ /** IOPCIFIR[11]
+ * TX Lane I Calibration Error
+ */
+ (rIOPCIFIR, bit(11)) ? defaultMaskedError;
+
+ /** IOPCIFIR[12]
+ * TX Lane J Calibration Error
+ */
+ (rIOPCIFIR, bit(12)) ? defaultMaskedError;
+
+ /** IOPCIFIR[13]
+ * TX Lane K Calibration Error
+ */
+ (rIOPCIFIR, bit(13)) ? defaultMaskedError;
+
+ /** IOPCIFIR[14]
+ * TX Lane L Calibration Error
+ */
+ (rIOPCIFIR, bit(14)) ? defaultMaskedError;
+
+ /** IOPCIFIR[15]
+ * TX Lane M Calibration Error
+ */
+ (rIOPCIFIR, bit(15)) ? defaultMaskedError;
+
+ /** IOPCIFIR[16]
+ * TX Lane N Calibration Error
+ */
+ (rIOPCIFIR, bit(16)) ? defaultMaskedError;
+
+ /** IOPCIFIR[17]
+ * TX Lane O Calibration Error
+ */
+ (rIOPCIFIR, bit(17)) ? defaultMaskedError;
+
+ /** IOPCIFIR[18]
+ * TX Lane P Calibration Error
+ */
+ (rIOPCIFIR, bit(18)) ? defaultMaskedError;
+
+ /** IOPCIFIR[19]
+ * RX Lane A Calibration Error
+ */
+ (rIOPCIFIR, bit(19)) ? defaultMaskedError;
+
+ /** IOPCIFIR[20]
+ * RX Lane B Calibration Error
+ */
+ (rIOPCIFIR, bit(20)) ? defaultMaskedError;
+
+ /** IOPCIFIR[21]
+ * RX Lane C Calibration Error
+ */
+ (rIOPCIFIR, bit(21)) ? defaultMaskedError;
+
+ /** IOPCIFIR[22]
+ * RX Lane D Calibration Error
+ */
+ (rIOPCIFIR, bit(22)) ? defaultMaskedError;
+
+ /** IOPCIFIR[23]
+ * RX Lane E Calibration Error
+ */
+ (rIOPCIFIR, bit(23)) ? defaultMaskedError;
+
+ /** IOPCIFIR[24]
+ * RX Lane F Calibration Error
+ */
+ (rIOPCIFIR, bit(24)) ? defaultMaskedError;
+
+ /** IOPCIFIR[25]
+ * RX Lane G Calibration Error
+ */
+ (rIOPCIFIR, bit(25)) ? defaultMaskedError;
+
+ /** IOPCIFIR[26]
+ * RX Lane H Calibration Error
+ */
+ (rIOPCIFIR, bit(26)) ? defaultMaskedError;
+
+ /** IOPCIFIR[27]
+ * RX Lane I Calibration Error
+ */
+ (rIOPCIFIR, bit(27)) ? defaultMaskedError;
+
+ /** IOPCIFIR[28]
+ * RX Lane J Calibration Error
+ */
+ (rIOPCIFIR, bit(28)) ? defaultMaskedError;
+
+ /** IOPCIFIR[29]
+ * RX Lane K Calibration Error
+ */
+ (rIOPCIFIR, bit(29)) ? defaultMaskedError;
+
+ /** IOPCIFIR[30]
+ * RX Lane L Calibration Error
+ */
+ (rIOPCIFIR, bit(30)) ? defaultMaskedError;
+
+ /** IOPCIFIR[31]
+ * RX Lane M Calibration Error
+ */
+ (rIOPCIFIR, bit(31)) ? defaultMaskedError;
+
+ /** IOPCIFIR[32]
+ * RX Lane N Calibration Error
+ */
+ (rIOPCIFIR, bit(32)) ? defaultMaskedError;
+
+ /** IOPCIFIR[33]
+ * RX Lane O Calibration Error
+ */
+ (rIOPCIFIR, bit(33)) ? defaultMaskedError;
+
+ /** IOPCIFIR[34]
+ * RX Lane P Calibration Error
+ */
+ (rIOPCIFIR, bit(34)) ? defaultMaskedError;
+
+ /** IOPCIFIR[35]
+ * SCOM FIR Parity Error 0
+ */
+ (rIOPCIFIR, bit(35)) ? defaultMaskedError;
+
+ /** IOPCIFIR[36]
+ * SCOM FIR Parity Error 1
+ */
+ (rIOPCIFIR, bit(36)) ? defaultMaskedError;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "p9_common_pec_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_phb.rule b/src/usr/diag/prdf/common/plat/axone/axone_phb.rule
new file mode 100644
index 000000000..844739ee2
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_phb.rule
@@ -0,0 +1,764 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_phb.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
+
+chip axone_phb
+{
+ name "AXONE PHB target";
+ targettype TYPE_PHB;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # P9 PHB target PHBNFIR
+ ############################################################################
+
+ register PHBNFIR
+ {
+ name "P9 PHB target PHBNFIR";
+ scomaddr 0x04010c40;
+ reset (&, 0x04010c41);
+ mask (|, 0x04010c45);
+ capture group default;
+ };
+
+ register PHBNFIR_MASK
+ {
+ name "P9 PHB target PHBNFIR MASK";
+ scomaddr 0x04010c43;
+ capture group default;
+ };
+
+ register PHBNFIR_ACT0
+ {
+ name "P9 PHB target PHBNFIR ACT0";
+ scomaddr 0x04010c46;
+ capture group default;
+ capture req nonzero("PHBNFIR");
+ };
+
+ register PHBNFIR_ACT1
+ {
+ name "P9 PHB target PHBNFIR ACT1";
+ scomaddr 0x04010c47;
+ capture group default;
+ capture req nonzero("PHBNFIR");
+ };
+
+ ############################################################################
+ # P9 PHB target PCIFIR
+ ############################################################################
+
+ register PCIFIR
+ {
+ name "P9 PHB target PCIFIR";
+ scomaddr 0x0d010840;
+ reset (&, 0x0d010841);
+ mask (|, 0x0d010845);
+ capture group default;
+ };
+
+ register PCIFIR_MASK
+ {
+ name "P9 PHB target PCIFIR MASK";
+ scomaddr 0x0d010843;
+ capture group default;
+ };
+
+ register PCIFIR_ACT0
+ {
+ name "P9 PHB target PCIFIR ACT0";
+ scomaddr 0x0d010846;
+ capture group default;
+ capture req nonzero("PCIFIR");
+ };
+
+ register PCIFIR_ACT1
+ {
+ name "P9 PHB target PCIFIR ACT1";
+ scomaddr 0x0d010847;
+ capture group default;
+ capture req nonzero("PCIFIR");
+ };
+
+ ############################################################################
+ # P9 PHB target ETUFIR
+ ############################################################################
+
+ register ETUFIR
+ {
+ name "P9 PHB target ETUFIR";
+ scomaddr 0x0d010908;
+ reset (&, 0x0d010909);
+ mask (|, 0x0d01090d);
+ capture group default;
+ };
+
+ register ETUFIR_MASK
+ {
+ name "P9 PHB target ETUFIR MASK";
+ scomaddr 0x0d01090b;
+ capture group default;
+ };
+
+ register ETUFIR_ACT0
+ {
+ name "P9 PHB target ETUFIR ACT0";
+ scomaddr 0x0d01090e;
+ capture group default;
+ capture req nonzero("ETUFIR");
+ };
+
+ register ETUFIR_ACT1
+ {
+ name "P9 PHB target ETUFIR ACT1";
+ scomaddr 0x0d01090f;
+ capture group default;
+ capture req nonzero("ETUFIR");
+ };
+
+# Include registers not defined by the xml
+.include "p9_common_phb_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# Summary for PHB
+################################################################################
+
+rule rPHB
+{
+ CHECK_STOP:
+ summary( 0, rPHBNFIR ) |
+ summary( 1, rPCIFIR ) |
+ summary( 2, rETUFIR );
+
+ RECOVERABLE:
+ summary( 0, rPHBNFIR ) |
+ summary( 1, rPCIFIR ) |
+ summary( 2, rETUFIR );
+
+};
+
+group gPHB attntype CHECK_STOP, RECOVERABLE
+ filter singlebit
+{
+ (rPHB, bit(0)) ? analyzePHBNFIR;
+ (rPHB, bit(1)) ? analyzePCIFIR;
+ (rPHB, bit(2)) ? analyzeETUFIR;
+};
+
+################################################################################
+# P9 PHB target PHBNFIR
+################################################################################
+
+rule rPHBNFIR
+{
+ CHECK_STOP:
+ PHBNFIR & ~PHBNFIR_MASK & ~PHBNFIR_ACT0 & ~PHBNFIR_ACT1;
+ RECOVERABLE:
+ PHBNFIR & ~PHBNFIR_MASK & ~PHBNFIR_ACT0 & PHBNFIR_ACT1;
+};
+
+group gPHBNFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** PHBNFIR[0]
+ * BAR Parity Error
+ */
+ (rPHBNFIR, bit(0)) ? self_th_1;
+
+ /** PHBNFIR[1]
+ * Parity Errors on Registers besides BAR
+ */
+ (rPHBNFIR, bit(1)) ? externalAttention;
+
+ /** PHBNFIR[2]
+ * Power Bus to PEC CE
+ */
+ (rPHBNFIR, bit(2)) ? self_th_32perDay;
+
+ /** PHBNFIR[3]
+ * Power Bus to PEC UE
+ */
+ (rPHBNFIR, bit(3)) ? externalAttention;
+
+ /** PHBNFIR[4]
+ * Power Bus to PEC SUE
+ */
+ (rPHBNFIR, bit(4)) ? externalAttention;
+
+ /** PHBNFIR[5]
+ * Array CE
+ */
+ (rPHBNFIR, bit(5)) ? self_th_32perDay;
+
+ /** PHBNFIR[6]
+ * Array UE
+ */
+ (rPHBNFIR, bit(6)) ? externalAttention;
+
+ /** PHBNFIR[7]
+ * Array SUE
+ */
+ (rPHBNFIR, bit(7)) ? externalAttention;
+
+ /** PHBNFIR[8]
+ * Register Array Parity Error
+ */
+ (rPHBNFIR, bit(8)) ? self_th_1;
+
+ /** PHBNFIR[9]
+ * Power Bus Interface Parity Error
+ */
+ (rPHBNFIR, bit(9)) ? self_th_1;
+
+ /** PHBNFIR[10]
+ * Power Bus Data Hang
+ */
+ (rPHBNFIR, bit(10)) ? defaultMaskedError;
+
+ /** PHBNFIR[11]
+ * Power Bus Hang
+ */
+ (rPHBNFIR, bit(11)) ? defaultMaskedError;
+
+ /** PHBNFIR[12]
+ * RD ARE Error
+ */
+ (rPHBNFIR, bit(12)) ? externalAttention;
+
+ /** PHBNFIR[13]
+ * NonRd ARE Error
+ */
+ (rPHBNFIR, bit(13)) ? externalAttention;
+
+ /** PHBNFIR[14]
+ * PCI Hang
+ */
+ (rPHBNFIR, bit(14)) ? externalAttention;
+
+ /** PHBNFIR[15]
+ * PCI Clock Error
+ */
+ (rPHBNFIR, bit(15)) ? externalAttention;
+
+ /** PHBNFIR[16]
+ * AIB Fence
+ */
+ (rPHBNFIR, bit(16)) ? externalAttention;
+
+ /** PHBNFIR[17]
+ * Hardware Error
+ */
+ (rPHBNFIR, bit(17)) ? self_th_1;
+
+ /** PHBNFIR[18]
+ * Unsolicited Power Bus Data
+ */
+ (rPHBNFIR, bit(18)) ? level2_th_1;
+
+ /** PHBNFIR[19]
+ * UnExpected Combined Response
+ */
+ (rPHBNFIR, bit(19)) ? level2_th_1;
+
+ /** PHBNFIR[20]
+ * Invalid Combined Response
+ */
+ (rPHBNFIR, bit(20)) ? level2_M_proc_L_th_1;
+
+ /** PHBNFIR[21]
+ * Power Bus Unsupported Size
+ */
+ (rPHBNFIR, bit(21)) ? level2_M_proc_L_th_1;
+
+ /** PHBNFIR[22]
+ * Power Bus Unsupported Command
+ */
+ (rPHBNFIR, bit(22)) ? level2_M_proc_L_th_1;
+
+ /** PHBNFIR[23]
+ * PBAIB error
+ */
+ (rPHBNFIR, bit(23)) ? externalAttention;
+
+ /** PHBNFIR[24]
+ * CAPP Error
+ */
+ (rPHBNFIR, bit(24)) ? externalAttention;
+
+ /** PHBNFIR[25]
+ * NMMU Error
+ */
+ (rPHBNFIR, bit(25)) ? externalAttention;
+
+ /** PHBNFIR[26]
+ * Software Defined
+ */
+ (rPHBNFIR, bit(26)) ? externalAttention;
+
+ /** PHBNFIR[27]
+ * PEC SCOM Engine Error
+ */
+ (rPHBNFIR, bit(27)) ? defaultMaskedError;
+
+ /** PHBNFIR[28]
+ * scom error
+ */
+ (rPHBNFIR, bit(28)) ? defaultMaskedError;
+
+ /** PHBNFIR[29]
+ * scom error
+ */
+ (rPHBNFIR, bit(29)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 PHB target PCIFIR
+################################################################################
+
+rule rPCIFIR
+{
+ CHECK_STOP:
+ PCIFIR & ~PCIFIR_MASK & ~PCIFIR_ACT0 & ~PCIFIR_ACT1;
+ RECOVERABLE:
+ PCIFIR & ~PCIFIR_MASK & ~PCIFIR_ACT0 & PCIFIR_ACT1;
+};
+
+group gPCIFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** PCIFIR[0]
+ * PBAIB register parity error
+ */
+ (rPCIFIR, bit(0)) ? externalAttention;
+
+ /** PCIFIR[1]
+ * Hardware error
+ */
+ (rPCIFIR, bit(1)) ? self_th_1;
+
+ /** PCIFIR[2]
+ * AIB interface error
+ */
+ (rPCIFIR, bit(2)) ? externalAttention;
+
+ /** PCIFIR[3]
+ * ETU reset error
+ */
+ (rPCIFIR, bit(3)) ? externalAttention;
+
+ /** PCIFIR[4]
+ * PEC scom error
+ */
+ (rPCIFIR, bit(4)) ? defaultMaskedError;
+
+ /** PCIFIR[5]
+ * scom error
+ */
+ (rPCIFIR, bit(5)) ? defaultMaskedError;
+
+ /** PCIFIR[6]
+ * scom error
+ */
+ (rPCIFIR, bit(6)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 PHB target ETUFIR
+################################################################################
+
+rule rETUFIR
+{
+ CHECK_STOP:
+ ETUFIR & ~ETUFIR_MASK & ~ETUFIR_ACT0 & ~ETUFIR_ACT1;
+ RECOVERABLE:
+ ETUFIR & ~ETUFIR_MASK & ~ETUFIR_ACT0 & ETUFIR_ACT1;
+};
+
+group gETUFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** ETUFIR[0]
+ * AIB_COMMAND_INVALID
+ */
+ (rETUFIR, bit(0)) ? defaultMaskedError;
+
+ /** ETUFIR[1]
+ * AIB_ADDRESS_INVALID
+ */
+ (rETUFIR, bit(1)) ? defaultMaskedError;
+
+ /** ETUFIR[2]
+ * AIB_ACCESS_ERROR
+ */
+ (rETUFIR, bit(2)) ? defaultMaskedError;
+
+ /** ETUFIR[3]
+ * PAPR_OUTBOUND_INJECT_ERROR
+ */
+ (rETUFIR, bit(3)) ? defaultMaskedError;
+
+ /** ETUFIR[4]
+ * AIB_FATAL_CLASS_ERROR
+ */
+ (rETUFIR, bit(4)) ? defaultMaskedError;
+
+ /** ETUFIR[5]
+ * AIB_INF_CLASS_ERROR
+ */
+ (rETUFIR, bit(5)) ? defaultMaskedError;
+
+ /** ETUFIR[6]
+ * spare
+ */
+ (rETUFIR, bit(6)) ? defaultMaskedError;
+
+ /** ETUFIR[7]
+ * PE_STOP_STATE_SIGNALED
+ */
+ (rETUFIR, bit(7)) ? defaultMaskedError;
+
+ /** ETUFIR[8]
+ * OUT_COMMON_ARRAY_FATAL_ERROR
+ */
+ (rETUFIR, bit(8)) ? defaultMaskedError;
+
+ /** ETUFIR[9]
+ * OUT_COMMON_LATCH_FATAL_ERROR
+ */
+ (rETUFIR, bit(9)) ? defaultMaskedError;
+
+ /** ETUFIR[10]
+ * OUT_COMMON_LOGIC_FATAL_ERROR
+ */
+ (rETUFIR, bit(10)) ? defaultMaskedError;
+
+ /** ETUFIR[11]
+ * BLIF_OUT_INTERFACE_PARITY_ERROR
+ */
+ (rETUFIR, bit(11)) ? defaultMaskedError;
+
+ /** ETUFIR[12]
+ * CFG_WRITE_CA_OR_UR_RESPONSE
+ */
+ (rETUFIR, bit(12)) ? defaultMaskedError;
+
+ /** ETUFIR[13]
+ * MMIO_REQUEST_TIMEOUT
+ */
+ (rETUFIR, bit(13)) ? defaultMaskedError;
+
+ /** ETUFIR[14]
+ * OUT_RRB_SOURCED_ERROR
+ */
+ (rETUFIR, bit(14)) ? defaultMaskedError;
+
+ /** ETUFIR[15]
+ * CFG_LOGIC_SIGNALED_ERROR
+ */
+ (rETUFIR, bit(15)) ? defaultMaskedError;
+
+ /** ETUFIR[16]
+ * RSB_REG_REQUEST_ADDRESS_ERROR
+ */
+ (rETUFIR, bit(16)) ? defaultMaskedError;
+
+ /** ETUFIR[17]
+ * RSB_FDA_FATAL_ERROR
+ */
+ (rETUFIR, bit(17)) ? defaultMaskedError;
+
+ /** ETUFIR[18]
+ * RSB_FDA_INF_ERROR
+ */
+ (rETUFIR, bit(18)) ? defaultMaskedError;
+
+ /** ETUFIR[19]
+ * RSB_FDB_FATAL_ERROR
+ */
+ (rETUFIR, bit(19)) ? defaultMaskedError;
+
+ /** ETUFIR[20]
+ * RSB_FDB_INF_ERROR
+ */
+ (rETUFIR, bit(20)) ? defaultMaskedError;
+
+ /** ETUFIR[21]
+ * RSB_ERR_FATAL_ERROR
+ */
+ (rETUFIR, bit(21)) ? defaultMaskedError;
+
+ /** ETUFIR[22]
+ * RSB_ERR_INF_ERROR
+ */
+ (rETUFIR, bit(22)) ? defaultMaskedError;
+
+ /** ETUFIR[23]
+ * RSB_DBG_FATAL_ERROR
+ */
+ (rETUFIR, bit(23)) ? defaultMaskedError;
+
+ /** ETUFIR[24]
+ * RSB_DBG_INF_ERROR
+ */
+ (rETUFIR, bit(24)) ? defaultMaskedError;
+
+ /** ETUFIR[25]
+ * PCIE_REQUEST_ACCESS_ERROR
+ */
+ (rETUFIR, bit(25)) ? defaultMaskedError;
+
+ /** ETUFIR[26]
+ * RSB_BUS_LOGIC_ERROR
+ */
+ (rETUFIR, bit(26)) ? defaultMaskedError;
+
+ /** ETUFIR[27]
+ * RSB_UVI_FATAL_ERROR
+ */
+ (rETUFIR, bit(27)) ? defaultMaskedError;
+
+ /** ETUFIR[28]
+ * RSB_UVI_INF_ERROR
+ */
+ (rETUFIR, bit(28)) ? defaultMaskedError;
+
+ /** ETUFIR[29]
+ * SCOM_FATAL_ERROR
+ */
+ (rETUFIR, bit(29)) ? defaultMaskedError;
+
+ /** ETUFIR[30]
+ * SCOM_INF_ERROR
+ */
+ (rETUFIR, bit(30)) ? defaultMaskedError;
+
+ /** ETUFIR[31]
+ * PCIE_MACRO_ERROR_ACTIVE_STATUS
+ */
+ (rETUFIR, bit(31)) ? defaultMaskedError;
+
+ /** ETUFIR[32]
+ * ARB_IODA_FATAL_ERROR
+ */
+ (rETUFIR, bit(32)) ? defaultMaskedError;
+
+ /** ETUFIR[33]
+ * ARB_MSI_PE_MATCH_ERROR
+ */
+ (rETUFIR, bit(33)) ? defaultMaskedError;
+
+ /** ETUFIR[34]
+ * ARB_MSI_ADDRESS_ERROR
+ */
+ (rETUFIR, bit(34)) ? defaultMaskedError;
+
+ /** ETUFIR[35]
+ * ARB_TVT_ERROR
+ */
+ (rETUFIR, bit(35)) ? defaultMaskedError;
+
+ /** ETUFIR[36]
+ * ARB_RCVD_FATAL_ERROR_MSG
+ */
+ (rETUFIR, bit(36)) ? defaultMaskedError;
+
+ /** ETUFIR[37]
+ * ARB_RCVD_NONFATAL_ERROR_MSG
+ */
+ (rETUFIR, bit(37)) ? defaultMaskedError;
+
+ /** ETUFIR[38]
+ * ARB_RCVD_CORRECTIBLE_ERROR_MSG
+ */
+ (rETUFIR, bit(38)) ? defaultMaskedError;
+
+ /** ETUFIR[39]
+ * PAPR_INBOUND_INJECT_ERROR
+ */
+ (rETUFIR, bit(39)) ? defaultMaskedError;
+
+ /** ETUFIR[40]
+ * ARB_COMMON_FATAL_ERROR
+ */
+ (rETUFIR, bit(40)) ? defaultMaskedError;
+
+ /** ETUFIR[41]
+ * ARB_TABLE_BAR_DISABLED_ERROR
+ */
+ (rETUFIR, bit(41)) ? defaultMaskedError;
+
+ /** ETUFIR[42]
+ * ARB_BLIF_COMPLETION_ERROR
+ */
+ (rETUFIR, bit(42)) ? defaultMaskedError;
+
+ /** ETUFIR[43]
+ * ARB_PCT_TIMEOUT_ERROR
+ */
+ (rETUFIR, bit(43)) ? defaultMaskedError;
+
+ /** ETUFIR[44]
+ * ARB_ECC_CORRECTABLE_ERROR
+ */
+ (rETUFIR, bit(44)) ? defaultMaskedError;
+
+ /** ETUFIR[45]
+ * ARB_ECC_UNCORRECTABLE_ERROR
+ */
+ (rETUFIR, bit(45)) ? defaultMaskedError;
+
+ /** ETUFIR[46]
+ * ARB_TLP_POISON_SIGNALED
+ */
+ (rETUFIR, bit(46)) ? defaultMaskedError;
+
+ /** ETUFIR[47]
+ * ARB_RTT_PENUM_INVALID_ERROR
+ */
+ (rETUFIR, bit(47)) ? defaultMaskedError;
+
+ /** ETUFIR[48]
+ * MRG_COMMON_FATAL_ERROR
+ */
+ (rETUFIR, bit(48)) ? defaultMaskedError;
+
+ /** ETUFIR[49]
+ * MRG_TABLE_BAR_DISABLED_ERROR
+ */
+ (rETUFIR, bit(49)) ? defaultMaskedError;
+
+ /** ETUFIR[50]
+ * MRG_ECC_CORRECTABLE_ERROR
+ */
+ (rETUFIR, bit(50)) ? defaultMaskedError;
+
+ /** ETUFIR[51]
+ * MRG_ECC_UNCORRECTABLE_ERROR
+ */
+ (rETUFIR, bit(51)) ? defaultMaskedError;
+
+ /** ETUFIR[52]
+ * MRG_AIB2_TX_TIMEOUT_ERROR
+ */
+ (rETUFIR, bit(52)) ? defaultMaskedError;
+
+ /** ETUFIR[53]
+ * MRG_MRT_ERROR
+ */
+ (rETUFIR, bit(53)) ? defaultMaskedError;
+
+ /** ETUFIR[54:55]
+ * spare
+ */
+ (rETUFIR, bit(54|55)) ? defaultMaskedError;
+
+ /** ETUFIR[56]
+ * TCE_IODA_PAGE_ACCESS_ERROR
+ */
+ (rETUFIR, bit(56)) ? defaultMaskedError;
+
+ /** ETUFIR[57]
+ * TCE_REQUEST_TIMEOUT_ERROR
+ */
+ (rETUFIR, bit(57)) ? defaultMaskedError;
+
+ /** ETUFIR[58]
+ * TCE_UNEXPECTED_RESPONSE_ERROR
+ */
+ (rETUFIR, bit(58)) ? defaultMaskedError;
+
+ /** ETUFIR[59]
+ * TCE_COMMON_FATAL_ERROR
+ */
+ (rETUFIR, bit(59)) ? defaultMaskedError;
+
+ /** ETUFIR[60]
+ * TCE_ECC_CORRECTABLE_ERROR
+ */
+ (rETUFIR, bit(60)) ? defaultMaskedError;
+
+ /** ETUFIR[61]
+ * TCE_ECC_UNCORRECTABLE_ERROR
+ */
+ (rETUFIR, bit(61)) ? defaultMaskedError;
+
+ /** ETUFIR[62]
+ * spare
+ */
+ (rETUFIR, bit(62)) ? defaultMaskedError;
+
+ /** ETUFIR[63]
+ * FIR_INTERNAL_PARITY_ERROR
+ */
+ (rETUFIR, bit(63)) ? defaultMaskedError;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "p9_common_phb_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_proc.rule b/src/usr/diag/prdf/common/plat/axone/axone_proc.rule
new file mode 100644
index 000000000..c37c103be
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_proc.rule
@@ -0,0 +1,7128 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_proc.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
+
+chip axone_proc
+{
+ name "AXONE PROC target";
+ targettype TYPE_PROC;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+# Import signatures
+.include "prdfP9ProcMbCommonExtraSig.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 Unit Checkstop FIR
+ ############################################################################
+
+ register GLOBAL_UCS_FIR
+ {
+ name "Global Unit Checkstop FIR";
+ scomaddr 0x50040018;
+ capture group default;
+ };
+
+ ############################################################################
+ # Global Host Attention FIR
+ ############################################################################
+
+ register GLOBAL_HA_FIR
+ {
+ name "Global Host Attention FIR";
+ scomaddr 0x50040009;
+ 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;
+ };
+
+ ############################################################################
+ # P9 chip TP_LFIR
+ ############################################################################
+
+ register TP_LFIR
+ {
+ name "P9 chip TP_LFIR";
+ scomaddr 0x0104000a;
+ reset (&, 0x0104000b);
+ mask (|, 0x0104000f);
+ capture group default;
+ };
+
+ register TP_LFIR_MASK
+ {
+ name "P9 chip TP_LFIR MASK";
+ scomaddr 0x0104000d;
+ capture group default;
+ };
+
+ register TP_LFIR_ACT0
+ {
+ name "P9 chip TP_LFIR ACT0";
+ scomaddr 0x01040010;
+ capture group default;
+ capture req nonzero("TP_LFIR");
+ };
+
+ register TP_LFIR_ACT1
+ {
+ name "P9 chip TP_LFIR ACT1";
+ scomaddr 0x01040011;
+ capture group default;
+ capture req nonzero("TP_LFIR");
+ };
+
+ ############################################################################
+ # P9 chip OCCFIR
+ ############################################################################
+
+ register OCCFIR
+ {
+ name "P9 chip OCCFIR";
+ scomaddr 0x01010800;
+ reset (&, 0x01010801);
+ mask (|, 0x01010805);
+ capture group default;
+ };
+
+ register OCCFIR_MASK
+ {
+ name "P9 chip OCCFIR MASK";
+ scomaddr 0x01010803;
+ capture group default;
+ };
+
+ register OCCFIR_ACT0
+ {
+ name "P9 chip OCCFIR ACT0";
+ scomaddr 0x01010806;
+ capture group default;
+ capture req nonzero("OCCFIR");
+ };
+
+ register OCCFIR_ACT1
+ {
+ name "P9 chip OCCFIR ACT1";
+ scomaddr 0x01010807;
+ capture group default;
+ capture req nonzero("OCCFIR");
+ };
+
+ ############################################################################
+ # N0 Chiplet FIR
+ ############################################################################
+
+ register N0_CHIPLET_CS_FIR
+ {
+ name "N0 Chiplet Checkstop FIR";
+ scomaddr 0x02040000;
+ capture group default;
+ };
+
+ register N0_CHIPLET_RE_FIR
+ {
+ name "N0 Chiplet Recoverable FIR";
+ scomaddr 0x02040001;
+ capture group default;
+ };
+
+ register N0_CHIPLET_FIR_MASK
+ {
+ name "N0 Chiplet FIR MASK";
+ scomaddr 0x02040002;
+ capture group default;
+ };
+
+ ############################################################################
+ # N0 Chiplet Unit Checkstop FIR
+ ############################################################################
+
+ register N0_CHIPLET_UCS_FIR
+ {
+ name "N0 Chiplet Unit Checkstop FIR";
+ scomaddr 0x02040018;
+ capture group default;
+ };
+
+ register N0_CHIPLET_UCS_FIR_MASK
+ {
+ name "N0 Chiplet Unit Checkstop FIR MASK";
+ scomaddr 0x02040019;
+ capture group default;
+ };
+
+ ############################################################################
+ # P9 chip N0_LFIR
+ ############################################################################
+
+ register N0_LFIR
+ {
+ name "P9 chip N0_LFIR";
+ scomaddr 0x0204000a;
+ reset (&, 0x0204000b);
+ mask (|, 0x0204000f);
+ capture group default;
+ };
+
+ register N0_LFIR_MASK
+ {
+ name "P9 chip N0_LFIR MASK";
+ scomaddr 0x0204000d;
+ capture group default;
+ };
+
+ register N0_LFIR_ACT0
+ {
+ name "P9 chip N0_LFIR ACT0";
+ scomaddr 0x02040010;
+ capture group default;
+ capture req nonzero("N0_LFIR");
+ };
+
+ register N0_LFIR_ACT1
+ {
+ name "P9 chip N0_LFIR ACT1";
+ scomaddr 0x02040011;
+ capture group default;
+ capture req nonzero("N0_LFIR");
+ };
+
+ ############################################################################
+ # P9 chip NXCQFIR
+ ############################################################################
+
+ register NXCQFIR
+ {
+ name "P9 chip NXCQFIR";
+ scomaddr 0x02011080;
+ reset (&, 0x02011081);
+ mask (|, 0x02011085);
+ capture group default;
+ };
+
+ register NXCQFIR_MASK
+ {
+ name "P9 chip NXCQFIR MASK";
+ scomaddr 0x02011083;
+ capture group default;
+ };
+
+ register NXCQFIR_ACT0
+ {
+ name "P9 chip NXCQFIR ACT0";
+ scomaddr 0x02011086;
+ capture group default;
+ capture req nonzero("NXCQFIR");
+ };
+
+ register NXCQFIR_ACT1
+ {
+ name "P9 chip NXCQFIR ACT1";
+ scomaddr 0x02011087;
+ capture group default;
+ capture req nonzero("NXCQFIR");
+ };
+
+ ############################################################################
+ # P9 chip NXDMAENGFIR
+ ############################################################################
+
+ register NXDMAENGFIR
+ {
+ name "P9 chip NXDMAENGFIR";
+ scomaddr 0x02011100;
+ reset (&, 0x02011101);
+ mask (|, 0x02011105);
+ capture group default;
+ };
+
+ register NXDMAENGFIR_MASK
+ {
+ name "P9 chip NXDMAENGFIR MASK";
+ scomaddr 0x02011103;
+ capture group default;
+ };
+
+ register NXDMAENGFIR_ACT0
+ {
+ name "P9 chip NXDMAENGFIR ACT0";
+ scomaddr 0x02011106;
+ capture group default;
+ capture req nonzero("NXDMAENGFIR");
+ };
+
+ register NXDMAENGFIR_ACT1
+ {
+ name "P9 chip NXDMAENGFIR ACT1";
+ scomaddr 0x02011107;
+ capture group default;
+ capture req nonzero("NXDMAENGFIR");
+ };
+
+ ############################################################################
+ # N1 Chiplet FIR
+ ############################################################################
+
+ register N1_CHIPLET_CS_FIR
+ {
+ name "N1 Chiplet Checkstop FIR";
+ scomaddr 0x03040000;
+ capture group default;
+ };
+
+ register N1_CHIPLET_RE_FIR
+ {
+ name "N1 Chiplet Recoverable FIR";
+ scomaddr 0x03040001;
+ capture group default;
+ };
+
+ register N1_CHIPLET_FIR_MASK
+ {
+ name "N1 Chiplet FIR MASK";
+ scomaddr 0x03040002;
+ capture group default;
+ };
+
+ ############################################################################
+ # N1 Chiplet Unit Checkstop FIR
+ ############################################################################
+
+ register N1_CHIPLET_UCS_FIR
+ {
+ name "N1 Chiplet Unit Checkstop FIR";
+ scomaddr 0x03040018;
+ capture group default;
+ };
+
+ register N1_CHIPLET_UCS_FIR_MASK
+ {
+ name "N1 Chiplet Unit Checkstop FIR MASK";
+ scomaddr 0x03040019;
+ capture group default;
+ };
+
+ ############################################################################
+ # N1 Chiplet Host Attention FIR
+ ############################################################################
+
+ register N1_CHIPLET_HA_FIR
+ {
+ name "N1 Chiplet Host Attention FIR";
+ scomaddr 0x03040009;
+ capture group default;
+ };
+
+ register N1_CHIPLET_HA_FIR_MASK
+ {
+ name "N1 Chiplet Host Attention FIR MASK";
+ scomaddr 0x0304001a;
+ capture group default;
+ };
+
+ ############################################################################
+ # P9 chip N1_LFIR
+ ############################################################################
+
+ register N1_LFIR
+ {
+ name "P9 chip N1_LFIR";
+ scomaddr 0x0304000a;
+ reset (&, 0x0304000b);
+ mask (|, 0x0304000f);
+ capture group default;
+ };
+
+ register N1_LFIR_MASK
+ {
+ name "P9 chip N1_LFIR MASK";
+ scomaddr 0x0304000d;
+ capture group default;
+ };
+
+ register N1_LFIR_ACT0
+ {
+ name "P9 chip N1_LFIR ACT0";
+ scomaddr 0x03040010;
+ capture group default;
+ capture req nonzero("N1_LFIR");
+ };
+
+ register N1_LFIR_ACT1
+ {
+ name "P9 chip N1_LFIR ACT1";
+ scomaddr 0x03040011;
+ capture group default;
+ capture req nonzero("N1_LFIR");
+ };
+
+ ############################################################################
+ # P9 chip MCDFIR 0
+ ############################################################################
+
+ register MCDFIR_0
+ {
+ name "P9 chip MCDFIR 0";
+ scomaddr 0x03011000;
+ reset (&, 0x03011001);
+ mask (|, 0x03011005);
+ capture group default;
+ };
+
+ register MCDFIR_0_MASK
+ {
+ name "P9 chip MCDFIR 0 MASK";
+ scomaddr 0x03011003;
+ capture group default;
+ };
+
+ register MCDFIR_0_ACT0
+ {
+ name "P9 chip MCDFIR 0 ACT0";
+ scomaddr 0x03011006;
+ capture group default;
+ capture req nonzero("MCDFIR_0");
+ };
+
+ register MCDFIR_0_ACT1
+ {
+ name "P9 chip MCDFIR 0 ACT1";
+ scomaddr 0x03011007;
+ capture group default;
+ capture req nonzero("MCDFIR_0");
+ };
+
+ ############################################################################
+ # P9 chip MCDFIR 1
+ ############################################################################
+
+ register MCDFIR_1
+ {
+ name "P9 chip MCDFIR 1";
+ scomaddr 0x03011400;
+ reset (&, 0x03011401);
+ mask (|, 0x03011405);
+ capture group default;
+ };
+
+ register MCDFIR_1_MASK
+ {
+ name "P9 chip MCDFIR 1 MASK";
+ scomaddr 0x03011403;
+ capture group default;
+ };
+
+ register MCDFIR_1_ACT0
+ {
+ name "P9 chip MCDFIR 1 ACT0";
+ scomaddr 0x03011406;
+ capture group default;
+ capture req nonzero("MCDFIR_1");
+ };
+
+ register MCDFIR_1_ACT1
+ {
+ name "P9 chip MCDFIR 1 ACT1";
+ scomaddr 0x03011407;
+ capture group default;
+ capture req nonzero("MCDFIR_1");
+ };
+
+ ############################################################################
+ # P9 chip VASFIR
+ ############################################################################
+
+ register VASFIR
+ {
+ name "P9 chip VASFIR";
+ scomaddr 0x03011800;
+ reset (&, 0x03011801);
+ mask (|, 0x03011805);
+ capture group default;
+ };
+
+ register VASFIR_MASK
+ {
+ name "P9 chip VASFIR MASK";
+ scomaddr 0x03011803;
+ capture group default;
+ };
+
+ register VASFIR_ACT0
+ {
+ name "P9 chip VASFIR ACT0";
+ scomaddr 0x03011806;
+ capture group default;
+ capture req nonzero("VASFIR");
+ };
+
+ register VASFIR_ACT1
+ {
+ name "P9 chip VASFIR ACT1";
+ scomaddr 0x03011807;
+ capture group default;
+ capture req nonzero("VASFIR");
+ };
+
+ ############################################################################
+ # N2 Chiplet FIR
+ ############################################################################
+
+ register N2_CHIPLET_CS_FIR
+ {
+ name "N2 Chiplet Checkstop FIR";
+ scomaddr 0x04040000;
+ capture group default;
+ };
+
+ register N2_CHIPLET_RE_FIR
+ {
+ name "N2 Chiplet Recoverable FIR";
+ scomaddr 0x04040001;
+ capture group default;
+ };
+
+ register N2_CHIPLET_FIR_MASK
+ {
+ name "N2 Chiplet FIR MASK";
+ scomaddr 0x04040002;
+ capture group default;
+ };
+
+ ############################################################################
+ # P9 chip N2_LFIR
+ ############################################################################
+
+ register N2_LFIR
+ {
+ name "P9 chip N2_LFIR";
+ scomaddr 0x0404000a;
+ reset (&, 0x0404000b);
+ mask (|, 0x0404000f);
+ capture group default;
+ };
+
+ register N2_LFIR_MASK
+ {
+ name "P9 chip N2_LFIR MASK";
+ scomaddr 0x0404000d;
+ capture group default;
+ };
+
+ register N2_LFIR_ACT0
+ {
+ name "P9 chip N2_LFIR ACT0";
+ scomaddr 0x04040010;
+ capture group default;
+ capture req nonzero("N2_LFIR");
+ };
+
+ register N2_LFIR_ACT1
+ {
+ name "P9 chip N2_LFIR ACT1";
+ scomaddr 0x04040011;
+ capture group default;
+ capture req nonzero("N2_LFIR");
+ };
+
+ ############################################################################
+ # P9 chip PSIFIR
+ ############################################################################
+
+ register PSIFIR
+ {
+ name "P9 chip PSIFIR";
+ scomaddr 0x04011800;
+ reset (&, 0x04011801);
+ mask (|, 0x04011805);
+ capture group default;
+ };
+
+ register PSIFIR_MASK
+ {
+ name "P9 chip PSIFIR MASK";
+ scomaddr 0x04011803;
+ capture group default;
+ };
+
+ register PSIFIR_ACT0
+ {
+ name "P9 chip PSIFIR ACT0";
+ scomaddr 0x04011806;
+ capture group default;
+ capture req nonzero("PSIFIR");
+ };
+
+ register PSIFIR_ACT1
+ {
+ name "P9 chip PSIFIR ACT1";
+ scomaddr 0x04011807;
+ capture group default;
+ capture req nonzero("PSIFIR");
+ };
+
+ ############################################################################
+ # N3 Chiplet FIR
+ ############################################################################
+
+ register N3_CHIPLET_CS_FIR
+ {
+ name "N3 Chiplet Checkstop FIR";
+ scomaddr 0x05040000;
+ capture group default;
+ };
+
+ register N3_CHIPLET_RE_FIR
+ {
+ name "N3 Chiplet Recoverable FIR";
+ scomaddr 0x05040001;
+ capture group default;
+ };
+
+ register N3_CHIPLET_FIR_MASK
+ {
+ name "N3 Chiplet FIR MASK";
+ scomaddr 0x05040002;
+ capture group default;
+ };
+
+ ############################################################################
+ # N3 Chiplet Unit Checkstop FIR
+ ############################################################################
+
+ register N3_CHIPLET_UCS_FIR
+ {
+ name "N3 Chiplet Unit Checkstop FIR";
+ scomaddr 0x05040018;
+ capture group default;
+ };
+
+ register N3_CHIPLET_UCS_FIR_MASK
+ {
+ name "N3 Chiplet Unit Checkstop FIR MASK";
+ scomaddr 0x05040019;
+ capture group default;
+ };
+
+ ############################################################################
+ # N3 Chiplet Host Attention FIR
+ ############################################################################
+
+ register N3_CHIPLET_HA_FIR
+ {
+ name "N3 Chiplet Host Attention FIR";
+ scomaddr 0x05040009;
+ capture group default;
+ };
+
+ register N3_CHIPLET_HA_FIR_MASK
+ {
+ name "N3 Chiplet Host Attention FIR MASK";
+ scomaddr 0x0504001a;
+ capture group default;
+ };
+
+ ############################################################################
+ # P9 chip N3_LFIR
+ ############################################################################
+
+ register N3_LFIR
+ {
+ name "P9 chip N3_LFIR";
+ scomaddr 0x0504000a;
+ reset (&, 0x0504000b);
+ mask (|, 0x0504000f);
+ capture group default;
+ };
+
+ register N3_LFIR_MASK
+ {
+ name "P9 chip N3_LFIR MASK";
+ scomaddr 0x0504000d;
+ capture group default;
+ };
+
+ register N3_LFIR_ACT0
+ {
+ name "P9 chip N3_LFIR ACT0";
+ scomaddr 0x05040010;
+ capture group default;
+ capture req nonzero("N3_LFIR");
+ };
+
+ register N3_LFIR_ACT1
+ {
+ name "P9 chip N3_LFIR ACT1";
+ scomaddr 0x05040011;
+ capture group default;
+ capture req nonzero("N3_LFIR");
+ };
+
+ ############################################################################
+ # P9 chip PBWESTFIR
+ ############################################################################
+
+ register PBWESTFIR
+ {
+ name "P9 chip PBWESTFIR";
+ scomaddr 0x05011800;
+ reset (&, 0x05011801);
+ mask (|, 0x05011805);
+ capture group default;
+ };
+
+ register PBWESTFIR_MASK
+ {
+ name "P9 chip PBWESTFIR MASK";
+ scomaddr 0x05011803;
+ capture group default;
+ };
+
+ register PBWESTFIR_ACT0
+ {
+ name "P9 chip PBWESTFIR ACT0";
+ scomaddr 0x05011806;
+ capture group default;
+ capture req nonzero("PBWESTFIR");
+ };
+
+ register PBWESTFIR_ACT1
+ {
+ name "P9 chip PBWESTFIR ACT1";
+ scomaddr 0x05011807;
+ capture group default;
+ capture req nonzero("PBWESTFIR");
+ };
+
+ ############################################################################
+ # P9 chip PBCENTFIR
+ ############################################################################
+
+ register PBCENTFIR
+ {
+ name "P9 chip PBCENTFIR";
+ scomaddr 0x05011c00;
+ reset (&, 0x05011c01);
+ mask (|, 0x05011c05);
+ capture group default;
+ };
+
+ register PBCENTFIR_MASK
+ {
+ name "P9 chip PBCENTFIR MASK";
+ scomaddr 0x05011c03;
+ capture group default;
+ };
+
+ register PBCENTFIR_ACT0
+ {
+ name "P9 chip PBCENTFIR ACT0";
+ scomaddr 0x05011c06;
+ capture group default;
+ capture req nonzero("PBCENTFIR");
+ };
+
+ register PBCENTFIR_ACT1
+ {
+ name "P9 chip PBCENTFIR ACT1";
+ scomaddr 0x05011c07;
+ capture group default;
+ capture req nonzero("PBCENTFIR");
+ };
+
+ ############################################################################
+ # P9 chip PBEASTFIR
+ ############################################################################
+
+ register PBEASTFIR
+ {
+ name "P9 chip PBEASTFIR";
+ scomaddr 0x05012000;
+ reset (&, 0x05012001);
+ mask (|, 0x05012005);
+ capture group default;
+ };
+
+ register PBEASTFIR_MASK
+ {
+ name "P9 chip PBEASTFIR MASK";
+ scomaddr 0x05012003;
+ capture group default;
+ };
+
+ register PBEASTFIR_ACT0
+ {
+ name "P9 chip PBEASTFIR ACT0";
+ scomaddr 0x05012006;
+ capture group default;
+ capture req nonzero("PBEASTFIR");
+ };
+
+ register PBEASTFIR_ACT1
+ {
+ name "P9 chip PBEASTFIR ACT1";
+ scomaddr 0x05012007;
+ capture group default;
+ capture req nonzero("PBEASTFIR");
+ };
+
+ ############################################################################
+ # P9 chip PBPPEFIR
+ ############################################################################
+
+ register PBPPEFIR
+ {
+ name "P9 chip PBPPEFIR";
+ scomaddr 0x05012400;
+ reset (&, 0x05012401);
+ mask (|, 0x05012405);
+ capture group default;
+ };
+
+ register PBPPEFIR_MASK
+ {
+ name "P9 chip PBPPEFIR MASK";
+ scomaddr 0x05012403;
+ capture group default;
+ };
+
+ register PBPPEFIR_ACT0
+ {
+ name "P9 chip PBPPEFIR ACT0";
+ scomaddr 0x05012406;
+ capture group default;
+ capture req nonzero("PBPPEFIR");
+ };
+
+ register PBPPEFIR_ACT1
+ {
+ name "P9 chip PBPPEFIR ACT1";
+ scomaddr 0x05012407;
+ capture group default;
+ capture req nonzero("PBPPEFIR");
+ };
+
+ ############################################################################
+ # P9 chip PBAFIR
+ ############################################################################
+
+ register PBAFIR
+ {
+ name "P9 chip PBAFIR";
+ scomaddr 0x05012840;
+ reset (&, 0x05012841);
+ mask (|, 0x05012845);
+ capture group default;
+ };
+
+ register PBAFIR_MASK
+ {
+ name "P9 chip PBAFIR MASK";
+ scomaddr 0x05012843;
+ capture group default;
+ };
+
+ register PBAFIR_ACT0
+ {
+ name "P9 chip PBAFIR ACT0";
+ scomaddr 0x05012846;
+ capture group default;
+ capture req nonzero("PBAFIR");
+ };
+
+ register PBAFIR_ACT1
+ {
+ name "P9 chip PBAFIR ACT1";
+ scomaddr 0x05012847;
+ capture group default;
+ capture req nonzero("PBAFIR");
+ };
+
+ ############################################################################
+ # P9 chip PSIHBFIR
+ ############################################################################
+
+ register PSIHBFIR
+ {
+ name "P9 chip PSIHBFIR";
+ scomaddr 0x05012900;
+ reset (&, 0x05012901);
+ mask (|, 0x05012905);
+ capture group default;
+ };
+
+ register PSIHBFIR_MASK
+ {
+ name "P9 chip PSIHBFIR MASK";
+ scomaddr 0x05012903;
+ capture group default;
+ };
+
+ register PSIHBFIR_ACT0
+ {
+ name "P9 chip PSIHBFIR ACT0";
+ scomaddr 0x05012906;
+ capture group default;
+ capture req nonzero("PSIHBFIR");
+ };
+
+ register PSIHBFIR_ACT1
+ {
+ name "P9 chip PSIHBFIR ACT1";
+ scomaddr 0x05012907;
+ capture group default;
+ capture req nonzero("PSIHBFIR");
+ };
+
+ ############################################################################
+ # P9 chip ENHCAFIR
+ ############################################################################
+
+ register ENHCAFIR
+ {
+ name "P9 chip ENHCAFIR";
+ scomaddr 0x05012940;
+ reset (&, 0x05012941);
+ mask (|, 0x05012945);
+ capture group default;
+ };
+
+ register ENHCAFIR_MASK
+ {
+ name "P9 chip ENHCAFIR MASK";
+ scomaddr 0x05012943;
+ capture group default;
+ };
+
+ register ENHCAFIR_ACT0
+ {
+ name "P9 chip ENHCAFIR ACT0";
+ scomaddr 0x05012946;
+ capture group default;
+ capture req nonzero("ENHCAFIR");
+ };
+
+ register ENHCAFIR_ACT1
+ {
+ name "P9 chip ENHCAFIR ACT1";
+ scomaddr 0x05012947;
+ capture group default;
+ capture req nonzero("ENHCAFIR");
+ };
+
+ ############################################################################
+ # P9 chip PBAMFIR
+ ############################################################################
+
+ register PBAMFIR
+ {
+ name "P9 chip PBAMFIR";
+ scomaddr 0x050129c0;
+ reset (&, 0x050129c1);
+ mask (|, 0x050129c5);
+ capture group default;
+ };
+
+ register PBAMFIR_MASK
+ {
+ name "P9 chip PBAMFIR MASK";
+ scomaddr 0x050129c3;
+ capture group default;
+ };
+
+ register PBAMFIR_ACT0
+ {
+ name "P9 chip PBAMFIR ACT0";
+ scomaddr 0x050129c6;
+ capture group default;
+ capture req nonzero("PBAMFIR");
+ };
+
+ register PBAMFIR_ACT1
+ {
+ name "P9 chip PBAMFIR ACT1";
+ scomaddr 0x050129c7;
+ capture group default;
+ capture req nonzero("PBAMFIR");
+ };
+
+ ############################################################################
+ # P9 chip NMMUCQFIR
+ ############################################################################
+
+ register NMMUCQFIR
+ {
+ name "P9 chip NMMUCQFIR";
+ scomaddr 0x05012c00;
+ reset (&, 0x05012c01);
+ mask (|, 0x05012c05);
+ capture group default;
+ };
+
+ register NMMUCQFIR_MASK
+ {
+ name "P9 chip NMMUCQFIR MASK";
+ scomaddr 0x05012c03;
+ capture group default;
+ };
+
+ register NMMUCQFIR_ACT0
+ {
+ name "P9 chip NMMUCQFIR ACT0";
+ scomaddr 0x05012c06;
+ capture group default;
+ capture req nonzero("NMMUCQFIR");
+ };
+
+ register NMMUCQFIR_ACT1
+ {
+ name "P9 chip NMMUCQFIR ACT1";
+ scomaddr 0x05012c07;
+ capture group default;
+ capture req nonzero("NMMUCQFIR");
+ };
+
+ ############################################################################
+ # P9 chip NMMUFIR
+ ############################################################################
+
+ register NMMUFIR
+ {
+ name "P9 chip NMMUFIR";
+ scomaddr 0x05012c40;
+ reset (&, 0x05012c41);
+ mask (|, 0x05012c45);
+ capture group default;
+ };
+
+ register NMMUFIR_MASK
+ {
+ name "P9 chip NMMUFIR MASK";
+ scomaddr 0x05012c43;
+ capture group default;
+ };
+
+ register NMMUFIR_ACT0
+ {
+ name "P9 chip NMMUFIR ACT0";
+ scomaddr 0x05012c46;
+ capture group default;
+ capture req nonzero("NMMUFIR");
+ };
+
+ register NMMUFIR_ACT1
+ {
+ name "P9 chip NMMUFIR ACT1";
+ scomaddr 0x05012c47;
+ capture group default;
+ capture req nonzero("NMMUFIR");
+ };
+
+ ############################################################################
+ # P9 chip INTCQFIR
+ ############################################################################
+
+ register INTCQFIR
+ {
+ name "P9 chip INTCQFIR";
+ scomaddr 0x05013030;
+ reset (&, 0x05013031);
+ mask (|, 0x05013035);
+ capture group default;
+ };
+
+ register INTCQFIR_MASK
+ {
+ name "P9 chip INTCQFIR MASK";
+ scomaddr 0x05013033;
+ capture group default;
+ };
+
+ register INTCQFIR_ACT0
+ {
+ name "P9 chip INTCQFIR ACT0";
+ scomaddr 0x05013036;
+ capture group default;
+ capture req nonzero("INTCQFIR");
+ };
+
+ register INTCQFIR_ACT1
+ {
+ name "P9 chip INTCQFIR ACT1";
+ scomaddr 0x05013037;
+ capture group default;
+ capture req nonzero("INTCQFIR");
+ };
+
+ ############################################################################
+ # P9 chip PBIOEFIR
+ ############################################################################
+
+ register PBIOEFIR
+ {
+ name "P9 chip PBIOEFIR";
+ scomaddr 0x05013400;
+ reset (&, 0x05013401);
+ mask (|, 0x05013405);
+ capture group default;
+ };
+
+ register PBIOEFIR_MASK
+ {
+ name "P9 chip PBIOEFIR MASK";
+ scomaddr 0x05013403;
+ capture group default;
+ };
+
+ register PBIOEFIR_ACT0
+ {
+ name "P9 chip PBIOEFIR ACT0";
+ scomaddr 0x05013406;
+ capture group default;
+ capture req nonzero("PBIOEFIR");
+ };
+
+ register PBIOEFIR_ACT1
+ {
+ name "P9 chip PBIOEFIR ACT1";
+ scomaddr 0x05013407;
+ capture group default;
+ capture req nonzero("PBIOEFIR");
+ };
+
+ ############################################################################
+ # P9 chip PBIOOFIR
+ ############################################################################
+
+ register PBIOOFIR
+ {
+ name "P9 chip PBIOOFIR";
+ scomaddr 0x05013800;
+ reset (&, 0x05013801);
+ mask (|, 0x05013805);
+ capture group default;
+ };
+
+ register PBIOOFIR_MASK
+ {
+ name "P9 chip PBIOOFIR MASK";
+ scomaddr 0x05013803;
+ capture group default;
+ };
+
+ register PBIOOFIR_ACT0
+ {
+ name "P9 chip PBIOOFIR ACT0";
+ scomaddr 0x05013806;
+ capture group default;
+ capture req nonzero("PBIOOFIR");
+ };
+
+ register PBIOOFIR_ACT1
+ {
+ name "P9 chip PBIOOFIR ACT1";
+ scomaddr 0x05013807;
+ capture group default;
+ capture req nonzero("PBIOOFIR");
+ };
+
+ ############################################################################
+ # XB Chiplet FIR
+ ############################################################################
+
+ register XB_CHIPLET_CS_FIR
+ {
+ name "XB Chiplet Checkstop FIR";
+ scomaddr 0x06040000;
+ capture group default;
+ };
+
+ register XB_CHIPLET_RE_FIR
+ {
+ name "XB Chiplet Recoverable FIR";
+ scomaddr 0x06040001;
+ capture group default;
+ };
+
+ register XB_CHIPLET_FIR_MASK
+ {
+ name "XB Chiplet FIR MASK";
+ scomaddr 0x06040002;
+ capture group default;
+ };
+
+ ############################################################################
+ # XB Chiplet Unit Checkstop FIR
+ ############################################################################
+
+ register XB_CHIPLET_UCS_FIR
+ {
+ name "XB Chiplet Unit Checkstop FIR";
+ scomaddr 0x06040018;
+ capture group default;
+ };
+
+ register XB_CHIPLET_UCS_FIR_MASK
+ {
+ name "XB Chiplet Unit Checkstop FIR MASK";
+ scomaddr 0x06040019;
+ capture group default;
+ };
+
+ ############################################################################
+ # P9 chip XB_LFIR
+ ############################################################################
+
+ register XB_LFIR
+ {
+ name "P9 chip XB_LFIR";
+ scomaddr 0x0604000a;
+ reset (&, 0x0604000b);
+ mask (|, 0x0604000f);
+ capture group default;
+ };
+
+ register XB_LFIR_MASK
+ {
+ name "P9 chip XB_LFIR MASK";
+ scomaddr 0x0604000d;
+ capture group default;
+ };
+
+ register XB_LFIR_ACT0
+ {
+ name "P9 chip XB_LFIR ACT0";
+ scomaddr 0x06040010;
+ capture group default;
+ capture req nonzero("XB_LFIR");
+ };
+
+ register XB_LFIR_ACT1
+ {
+ name "P9 chip XB_LFIR ACT1";
+ scomaddr 0x06040011;
+ capture group default;
+ capture req nonzero("XB_LFIR");
+ };
+
+ ############################################################################
+ # P9 chip XBPPEFIR
+ ############################################################################
+
+ register XBPPEFIR
+ {
+ name "P9 chip XBPPEFIR";
+ scomaddr 0x06010840;
+ reset (&, 0x06010841);
+ mask (|, 0x06010845);
+ capture group default;
+ };
+
+ register XBPPEFIR_MASK
+ {
+ name "P9 chip XBPPEFIR MASK";
+ scomaddr 0x06010843;
+ capture group default;
+ };
+
+ register XBPPEFIR_ACT0
+ {
+ name "P9 chip XBPPEFIR ACT0";
+ scomaddr 0x06010846;
+ capture group default;
+ capture req nonzero("XBPPEFIR");
+ };
+
+ register XBPPEFIR_ACT1
+ {
+ name "P9 chip XBPPEFIR ACT1";
+ scomaddr 0x06010847;
+ capture group default;
+ capture req nonzero("XBPPEFIR");
+ };
+
+ ############################################################################
+ # PCI0 Chiplet FIR
+ ############################################################################
+
+ register PCI0_CHIPLET_CS_FIR
+ {
+ name "PCI0 Chiplet Checkstop FIR";
+ scomaddr 0x0d040000;
+ capture group PciChipletFir0;
+ };
+
+ register PCI0_CHIPLET_RE_FIR
+ {
+ name "PCI0 Chiplet Recoverable FIR";
+ scomaddr 0x0d040001;
+ capture group PciChipletFir0;
+ };
+
+ register PCI0_CHIPLET_FIR_MASK
+ {
+ name "PCI0 Chiplet FIR MASK";
+ scomaddr 0x0d040002;
+ capture group PciChipletFir0;
+ };
+
+ ############################################################################
+ # PCI1 Chiplet FIR
+ ############################################################################
+
+ register PCI1_CHIPLET_CS_FIR
+ {
+ name "PCI1 Chiplet Checkstop FIR";
+ scomaddr 0x0e040000;
+ capture group PciChipletFir1;
+ };
+
+ register PCI1_CHIPLET_RE_FIR
+ {
+ name "PCI1 Chiplet Recoverable FIR";
+ scomaddr 0x0e040001;
+ capture group PciChipletFir1;
+ };
+
+ register PCI1_CHIPLET_FIR_MASK
+ {
+ name "PCI1 Chiplet FIR MASK";
+ scomaddr 0x0e040002;
+ capture group PciChipletFir1;
+ };
+
+ ############################################################################
+ # PCI2 Chiplet FIR
+ ############################################################################
+
+ register PCI2_CHIPLET_CS_FIR
+ {
+ name "PCI2 Chiplet Checkstop FIR";
+ scomaddr 0x0f040000;
+ capture group PciChipletFir2;
+ };
+
+ register PCI2_CHIPLET_RE_FIR
+ {
+ name "PCI2 Chiplet Recoverable FIR";
+ scomaddr 0x0f040001;
+ capture group PciChipletFir2;
+ };
+
+ register PCI2_CHIPLET_FIR_MASK
+ {
+ name "PCI2 Chiplet FIR MASK";
+ scomaddr 0x0f040002;
+ capture group PciChipletFir2;
+ };
+
+# Include registers not defined by the xml
+.include "p9_common_proc_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# Global Attention FIR
+################################################################################
+
+rule rGLOBAL_FIR
+{
+ CHECK_STOP:
+ GLOBAL_CS_FIR;
+ RECOVERABLE:
+ GLOBAL_RE_FIR;
+};
+
+group gGLOBAL_FIR attntype CHECK_STOP, RECOVERABLE
+ filter singlebit
+{
+ /** GLOBAL_FIR[1]
+ * Attention from TP chiplet
+ */
+ (rGLOBAL_FIR, bit(1)) ? analyze(gTP_CHIPLET_FIR);
+
+ /** GLOBAL_FIR[2]
+ * Attention from N0 chiplet
+ */
+ (rGLOBAL_FIR, bit(2)) ? analyze(gN0_CHIPLET_FIR);
+
+ /** GLOBAL_FIR[3]
+ * Attention from N1 chiplet
+ */
+ (rGLOBAL_FIR, bit(3)) ? analyze(gN1_CHIPLET_FIR);
+
+ /** GLOBAL_FIR[4]
+ * Attention from N2 chiplet
+ */
+ (rGLOBAL_FIR, bit(4)) ? analyze(gN2_CHIPLET_FIR);
+
+ /** GLOBAL_FIR[5]
+ * Attention from N3 chiplet
+ */
+ (rGLOBAL_FIR, bit(5)) ? analyze(gN3_CHIPLET_FIR);
+
+ /** GLOBAL_FIR[6]
+ * Attention from XB chiplet
+ */
+ (rGLOBAL_FIR, bit(6)) ? analyze(gXB_CHIPLET_FIR);
+
+ /** GLOBAL_FIR[7]
+ * Attention from MC 0 chiplet
+ */
+ (rGLOBAL_FIR, bit(7)) ? analyzeConnectedMC0;
+
+ /** GLOBAL_FIR[8]
+ * Attention from MC 1 chiplet
+ */
+ (rGLOBAL_FIR, bit(8)) ? analyzeConnectedMC1;
+
+ /** GLOBAL_FIR[9]
+ * Attention from OB 0 chiplet
+ */
+ (rGLOBAL_FIR, bit(9)) ? analyzeConnectedOBUS0;
+
+ /** GLOBAL_FIR[10]
+ * Attention from OB 1 chiplet
+ */
+ (rGLOBAL_FIR, bit(10)) ? analyzeConnectedOBUS1;
+
+ /** GLOBAL_FIR[11]
+ * Attention from OB 2 chiplet
+ */
+ (rGLOBAL_FIR, bit(11)) ? analyzeConnectedOBUS2;
+
+ /** GLOBAL_FIR[12]
+ * Attention from OB 3 chiplet
+ */
+ (rGLOBAL_FIR, bit(12)) ? analyzeConnectedOBUS3;
+
+ /** GLOBAL_FIR[13]
+ * Attention from PCI0 chiplet
+ */
+ (rGLOBAL_FIR, bit(13)) ? analyzePciChipletFir0;
+
+ /** GLOBAL_FIR[14]
+ * Attention from PCI1 chiplet
+ */
+ (rGLOBAL_FIR, bit(14)) ? analyzePciChipletFir1;
+
+ /** GLOBAL_FIR[15]
+ * Attention from PCI2 chiplet
+ */
+ (rGLOBAL_FIR, bit(15)) ? analyzePciChipletFir2;
+
+ /** GLOBAL_FIR[16]
+ * Attention from EQ 0 chiplet
+ */
+ (rGLOBAL_FIR, bit(16)) ? analyzeConnectedEQ0;
+
+ /** GLOBAL_FIR[17]
+ * Attention from EQ 1 chiplet
+ */
+ (rGLOBAL_FIR, bit(17)) ? analyzeConnectedEQ1;
+
+ /** GLOBAL_FIR[18]
+ * Attention from EQ 2 chiplet
+ */
+ (rGLOBAL_FIR, bit(18)) ? analyzeConnectedEQ2;
+
+ /** GLOBAL_FIR[19]
+ * Attention from EQ 3 chiplet
+ */
+ (rGLOBAL_FIR, bit(19)) ? analyzeConnectedEQ3;
+
+ /** GLOBAL_FIR[20]
+ * Attention from EQ 4 chiplet
+ */
+ (rGLOBAL_FIR, bit(20)) ? analyzeConnectedEQ4;
+
+ /** GLOBAL_FIR[21]
+ * Attention from EQ 5 chiplet
+ */
+ (rGLOBAL_FIR, bit(21)) ? analyzeConnectedEQ5;
+
+ /** GLOBAL_FIR[32]
+ * Attention from EC 0 chiplet
+ */
+ (rGLOBAL_FIR, bit(32)) ? analyzeConnectedEC0;
+
+ /** GLOBAL_FIR[33]
+ * Attention from EC 1 chiplet
+ */
+ (rGLOBAL_FIR, bit(33)) ? analyzeConnectedEC1;
+
+ /** GLOBAL_FIR[34]
+ * Attention from EC 2 chiplet
+ */
+ (rGLOBAL_FIR, bit(34)) ? analyzeConnectedEC2;
+
+ /** GLOBAL_FIR[35]
+ * Attention from EC 3 chiplet
+ */
+ (rGLOBAL_FIR, bit(35)) ? analyzeConnectedEC3;
+
+ /** GLOBAL_FIR[36]
+ * Attention from EC 4 chiplet
+ */
+ (rGLOBAL_FIR, bit(36)) ? analyzeConnectedEC4;
+
+ /** GLOBAL_FIR[37]
+ * Attention from EC 5 chiplet
+ */
+ (rGLOBAL_FIR, bit(37)) ? analyzeConnectedEC5;
+
+ /** GLOBAL_FIR[38]
+ * Attention from EC 6 chiplet
+ */
+ (rGLOBAL_FIR, bit(38)) ? analyzeConnectedEC6;
+
+ /** GLOBAL_FIR[39]
+ * Attention from EC 7 chiplet
+ */
+ (rGLOBAL_FIR, bit(39)) ? analyzeConnectedEC7;
+
+ /** GLOBAL_FIR[40]
+ * Attention from EC 8 chiplet
+ */
+ (rGLOBAL_FIR, bit(40)) ? analyzeConnectedEC8;
+
+ /** GLOBAL_FIR[41]
+ * Attention from EC 9 chiplet
+ */
+ (rGLOBAL_FIR, bit(41)) ? analyzeConnectedEC9;
+
+ /** GLOBAL_FIR[42]
+ * Attention from EC 10 chiplet
+ */
+ (rGLOBAL_FIR, bit(42)) ? analyzeConnectedEC10;
+
+ /** GLOBAL_FIR[43]
+ * Attention from EC 11 chiplet
+ */
+ (rGLOBAL_FIR, bit(43)) ? analyzeConnectedEC11;
+
+ /** GLOBAL_FIR[44]
+ * Attention from EC 12 chiplet
+ */
+ (rGLOBAL_FIR, bit(44)) ? analyzeConnectedEC12;
+
+ /** GLOBAL_FIR[45]
+ * Attention from EC 13 chiplet
+ */
+ (rGLOBAL_FIR, bit(45)) ? analyzeConnectedEC13;
+
+ /** GLOBAL_FIR[46]
+ * Attention from EC 14 chiplet
+ */
+ (rGLOBAL_FIR, bit(46)) ? analyzeConnectedEC14;
+
+ /** GLOBAL_FIR[47]
+ * Attention from EC 15 chiplet
+ */
+ (rGLOBAL_FIR, bit(47)) ? analyzeConnectedEC15;
+
+ /** GLOBAL_FIR[48]
+ * Attention from EC 16 chiplet
+ */
+ (rGLOBAL_FIR, bit(48)) ? analyzeConnectedEC16;
+
+ /** GLOBAL_FIR[49]
+ * Attention from EC 17 chiplet
+ */
+ (rGLOBAL_FIR, bit(49)) ? analyzeConnectedEC17;
+
+ /** GLOBAL_FIR[50]
+ * Attention from EC 18 chiplet
+ */
+ (rGLOBAL_FIR, bit(50)) ? analyzeConnectedEC18;
+
+ /** GLOBAL_FIR[51]
+ * Attention from EC 19 chiplet
+ */
+ (rGLOBAL_FIR, bit(51)) ? analyzeConnectedEC19;
+
+ /** GLOBAL_FIR[52]
+ * Attention from EC 20 chiplet
+ */
+ (rGLOBAL_FIR, bit(52)) ? analyzeConnectedEC20;
+
+ /** GLOBAL_FIR[53]
+ * Attention from EC 21 chiplet
+ */
+ (rGLOBAL_FIR, bit(53)) ? analyzeConnectedEC21;
+
+ /** GLOBAL_FIR[54]
+ * Attention from EC 22 chiplet
+ */
+ (rGLOBAL_FIR, bit(54)) ? analyzeConnectedEC22;
+
+ /** GLOBAL_FIR[55]
+ * Attention from EC 23 chiplet
+ */
+ (rGLOBAL_FIR, bit(55)) ? analyzeConnectedEC23;
+
+};
+
+################################################################################
+# Global Unit Checkstop FIR
+################################################################################
+
+rule rGLOBAL_UCS_FIR
+{
+ UNIT_CS:
+ GLOBAL_UCS_FIR;
+};
+
+group gGLOBAL_UCS_FIR attntype UNIT_CS
+ filter singlebit
+{
+ /** GLOBAL_UCS_FIR[2]
+ * Attention from N0 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(2)) ? analyze(gN0_CHIPLET_UCS_FIR);
+
+ /** GLOBAL_UCS_FIR[3]
+ * Attention from N1 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(3)) ? analyze(gN1_CHIPLET_UCS_FIR);
+
+ /** GLOBAL_UCS_FIR[5]
+ * Attention from N3 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(5)) ? analyze(gN3_CHIPLET_UCS_FIR);
+
+ /** GLOBAL_UCS_FIR[6]
+ * Attention from XB chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(6)) ? analyze(gXB_CHIPLET_UCS_FIR);
+
+ /** GLOBAL_UCS_FIR[7]
+ * Attention from MC 0 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(7)) ? analyzeConnectedMC0;
+
+ /** GLOBAL_UCS_FIR[8]
+ * Attention from MC 1 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(8)) ? analyzeConnectedMC1;
+
+ /** GLOBAL_UCS_FIR[9]
+ * Attention from OB 0 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(9)) ? analyzeConnectedOBUS0;
+
+ /** GLOBAL_UCS_FIR[10]
+ * Attention from OB 1 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(10)) ? analyzeConnectedOBUS1;
+
+ /** GLOBAL_UCS_FIR[11]
+ * Attention from OB 2 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(11)) ? analyzeConnectedOBUS2;
+
+ /** GLOBAL_UCS_FIR[12]
+ * Attention from OB 3 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(12)) ? analyzeConnectedOBUS3;
+
+ /** GLOBAL_UCS_FIR[32]
+ * Attention from EC 0 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(32)) ? analyzeConnectedEC0;
+
+ /** GLOBAL_UCS_FIR[33]
+ * Attention from EC 1 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(33)) ? analyzeConnectedEC1;
+
+ /** GLOBAL_UCS_FIR[34]
+ * Attention from EC 2 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(34)) ? analyzeConnectedEC2;
+
+ /** GLOBAL_UCS_FIR[35]
+ * Attention from EC 3 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(35)) ? analyzeConnectedEC3;
+
+ /** GLOBAL_UCS_FIR[36]
+ * Attention from EC 4 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(36)) ? analyzeConnectedEC4;
+
+ /** GLOBAL_UCS_FIR[37]
+ * Attention from EC 5 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(37)) ? analyzeConnectedEC5;
+
+ /** GLOBAL_UCS_FIR[38]
+ * Attention from EC 6 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(38)) ? analyzeConnectedEC6;
+
+ /** GLOBAL_UCS_FIR[39]
+ * Attention from EC 7 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(39)) ? analyzeConnectedEC7;
+
+ /** GLOBAL_UCS_FIR[40]
+ * Attention from EC 8 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(40)) ? analyzeConnectedEC8;
+
+ /** GLOBAL_UCS_FIR[41]
+ * Attention from EC 9 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(41)) ? analyzeConnectedEC9;
+
+ /** GLOBAL_UCS_FIR[42]
+ * Attention from EC 10 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(42)) ? analyzeConnectedEC10;
+
+ /** GLOBAL_UCS_FIR[43]
+ * Attention from EC 11 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(43)) ? analyzeConnectedEC11;
+
+ /** GLOBAL_UCS_FIR[44]
+ * Attention from EC 12 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(44)) ? analyzeConnectedEC12;
+
+ /** GLOBAL_UCS_FIR[45]
+ * Attention from EC 13 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(45)) ? analyzeConnectedEC13;
+
+ /** GLOBAL_UCS_FIR[46]
+ * Attention from EC 14 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(46)) ? analyzeConnectedEC14;
+
+ /** GLOBAL_UCS_FIR[47]
+ * Attention from EC 15 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(47)) ? analyzeConnectedEC15;
+
+ /** GLOBAL_UCS_FIR[48]
+ * Attention from EC 16 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(48)) ? analyzeConnectedEC16;
+
+ /** GLOBAL_UCS_FIR[49]
+ * Attention from EC 17 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(49)) ? analyzeConnectedEC17;
+
+ /** GLOBAL_UCS_FIR[50]
+ * Attention from EC 18 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(50)) ? analyzeConnectedEC18;
+
+ /** GLOBAL_UCS_FIR[51]
+ * Attention from EC 19 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(51)) ? analyzeConnectedEC19;
+
+ /** GLOBAL_UCS_FIR[52]
+ * Attention from EC 20 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(52)) ? analyzeConnectedEC20;
+
+ /** GLOBAL_UCS_FIR[53]
+ * Attention from EC 21 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(53)) ? analyzeConnectedEC21;
+
+ /** GLOBAL_UCS_FIR[54]
+ * Attention from EC 22 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(54)) ? analyzeConnectedEC22;
+
+ /** GLOBAL_UCS_FIR[55]
+ * Attention from EC 23 chiplet
+ */
+ (rGLOBAL_UCS_FIR, bit(55)) ? analyzeConnectedEC23;
+
+};
+
+################################################################################
+# Global Host Attention FIR
+################################################################################
+
+rule rGLOBAL_HA_FIR
+{
+ HOST_ATTN:
+ GLOBAL_HA_FIR;
+};
+
+group gGLOBAL_HA_FIR attntype HOST_ATTN
+ filter singlebit
+{
+ /** GLOBAL_HA_FIR[3]
+ * Attention from N1 chiplet
+ */
+ (rGLOBAL_HA_FIR, bit(3)) ? analyze(gN1_CHIPLET_HA_FIR);
+
+ /** GLOBAL_HA_FIR[5]
+ * Attention from N3 chiplet
+ */
+ (rGLOBAL_HA_FIR, bit(5)) ? analyze(gN3_CHIPLET_HA_FIR);
+
+ /** GLOBAL_HA_FIR[7]
+ * Attention from MC 0 chiplet
+ */
+ (rGLOBAL_HA_FIR, bit(7)) ? analyzeConnectedMC0;
+
+ /** GLOBAL_HA_FIR[8]
+ * Attention from MC 1 chiplet
+ */
+ (rGLOBAL_HA_FIR, bit(8)) ? analyzeConnectedMC1;
+
+};
+
+################################################################################
+# TP Chiplet FIR
+################################################################################
+
+rule rTP_CHIPLET_FIR
+{
+ CHECK_STOP:
+ 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)) ? analyzeTP_LFIR;
+
+ /** TP_CHIPLET_FIR[4]
+ * Attention from OCCFIR
+ */
+ (rTP_CHIPLET_FIR, bit(4)) ? analyzeOCCFIR;
+
+};
+
+################################################################################
+# P9 chip TP_LFIR
+################################################################################
+
+rule rTP_LFIR
+{
+ CHECK_STOP:
+ 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
+{
+ /** TP_LFIR[0]
+ * CFIR internal parity error
+ */
+ (rTP_LFIR, bit(0)) ? self_th_32perDay;
+
+ /** TP_LFIR[1]
+ * Chiplet Control Reg: PCB Access Error
+ */
+ (rTP_LFIR, bit(1)) ? self_th_32perDay;
+
+ /** TP_LFIR[2]
+ * Clock Controller: PCB Access Error
+ */
+ (rTP_LFIR, bit(2)) ? self_th_32perDay;
+
+ /** TP_LFIR[3]
+ * Clock Controller: Summarized Error
+ */
+ (rTP_LFIR, bit(3)) ? self_th_32perDay;
+
+ /** TP_LFIR[4]
+ * PSCOM Logic: PCB Access Error
+ */
+ (rTP_LFIR, bit(4)) ? defaultMaskedError;
+
+ /** TP_LFIR[5]
+ * PSCOM Logic: Summarized internal errors
+ */
+ (rTP_LFIR, bit(5)) ? defaultMaskedError;
+
+ /** TP_LFIR[6]
+ * Therm Logic: Summarized internal errors
+ */
+ (rTP_LFIR, bit(6)) ? defaultMaskedError;
+
+ /** TP_LFIR[7]
+ * Therm Logic: PCB Access Error
+ */
+ (rTP_LFIR, bit(7)) ? defaultMaskedError;
+
+ /** TP_LFIR[8]
+ * Therm Logic: Temperature critical trip
+ */
+ (rTP_LFIR, bit(8)) ? defaultMaskedError;
+
+ /** TP_LFIR[9]
+ * Therm Logic: Temperature fatal trip
+ */
+ (rTP_LFIR, bit(9)) ? defaultMaskedError;
+
+ /** TP_LFIR[10]
+ * UNUSED in P9
+ */
+ (rTP_LFIR, bit(10)) ? defaultMaskedError;
+
+ /** TP_LFIR[11]
+ * Debug Logic: Scom Satelite Error
+ */
+ (rTP_LFIR, bit(11)) ? defaultMaskedError;
+
+ /** TP_LFIR[12]
+ * Trace Logic: Scom Satellite Error
+ */
+ (rTP_LFIR, bit(12)) ? defaultMaskedError;
+
+ /** TP_LFIR[13]
+ * Trace Logic: Scom Satellite Error
+ */
+ (rTP_LFIR, bit(13)) ? defaultMaskedError;
+
+ /** TP_LFIR[14]
+ * Freq Meas. Reg PE or VMEAS/KVREF timeout
+ */
+ (rTP_LFIR, bit(14)) ? defaultMaskedError;
+
+ /** TP_LFIR[15]
+ * Interrupt Macro: PCB Access Error
+ */
+ (rTP_LFIR, bit(15)) ? defaultMaskedError;
+
+ /** TP_LFIR[16]
+ * PCB Master Logic: PCB Timout
+ */
+ (rTP_LFIR, bit(16)) ? defaultMaskedError;
+
+ /** TP_LFIR[17]
+ * I2C Master Logic: Local Bus Parity error
+ */
+ (rTP_LFIR, bit(17)) ? self_th_1;
+
+ /** TP_LFIR[18]
+ * TOD Logic: Summerized internal errors
+ */
+ (rTP_LFIR, bit(18)) ? analyzeTodBackupTopology;
+
+ /** TP_LFIR[19]
+ * TOD Logic: PIB Slave access errors
+ */
+ (rTP_LFIR, bit(19)) ? analyzePibError;
+
+ /** TP_LFIR[20]
+ * TOD Logic: Error report from PHYP
+ */
+ (rTP_LFIR, bit(20)) ? analyzePhypTodError;
+
+ /** TP_LFIR[21]
+ * PCB slave Unmasked err summary
+ */
+ (rTP_LFIR, bit(21)) ? pcb_slave_internal_parity;
+
+ /** TP_LFIR[22]
+ * SBE Logic: PPE Internal State Error
+ */
+ (rTP_LFIR, bit(22)) ? defaultMaskedError;
+
+ /** TP_LFIR[23]
+ * PPE interface invalid seq/protocol err
+ */
+ (rTP_LFIR, bit(23)) ? defaultMaskedError;
+
+ /** TP_LFIR[24]
+ * SBE Logic: PPE Watchdog timeout
+ */
+ (rTP_LFIR, bit(24)) ? defaultMaskedError;
+
+ /** TP_LFIR[25]
+ * PPE saw proc halt initiated by fw, etc.
+ */
+ (rTP_LFIR, bit(25)) ? defaultMaskedError;
+
+ /** TP_LFIR[26]
+ * PPE in halt state driven by RAMDBG bit 0
+ */
+ (rTP_LFIR, bit(26)) ? sbe_vital_attn;
+
+ /** TP_LFIR[27]
+ * PPE debug: Watchdog timer proc rst/halt
+ */
+ (rTP_LFIR, bit(27)) ? defaultMaskedError;
+
+ /** TP_LFIR[28]
+ * SBE Logic: SEEPROM Address err etc.
+ */
+ (rTP_LFIR, bit(28)) ? defaultMaskedError;
+
+ /** TP_LFIR[29]
+ * SBE Logic: Any I2C Master Error
+ */
+ (rTP_LFIR, bit(29)) ? defaultMaskedError;
+
+ /** TP_LFIR[30]
+ * SBE Logic: Programmable errors
+ */
+ (rTP_LFIR, bit(30)) ? defaultMaskedError;
+
+ /** TP_LFIR[31]
+ * OTP Logic: invalid reg access etc.
+ */
+ (rTP_LFIR, bit(31)) ? defaultMaskedError;
+
+ /** TP_LFIR[32]
+ * Trigger from e_c4_occ_rx_alert_b input
+ */
+ (rTP_LFIR, bit(32)) ? defaultMaskedError;
+
+ /** TP_LFIR[33]
+ * Unused in P9
+ */
+ (rTP_LFIR, bit(33)) ? defaultMaskedError;
+
+ /** TP_LFIR[34]
+ * Multicast group: group cntr zero
+ */
+ (rTP_LFIR, bit(34)) ? defaultMaskedError;
+
+ /** TP_LFIR[35]
+ * PCB Master: Receive fsm Inv. state etc.
+ */
+ (rTP_LFIR, bit(35)) ? defaultMaskedError;
+
+ /** TP_LFIR[36]
+ * system ref osc switch to backup
+ */
+ (rTP_LFIR, bit(36)) ? sys_osc_switch_error;
+
+ /** TP_LFIR[37]
+ * PCI osc switch to backup
+ */
+ (rTP_LFIR, bit(37)) ? pci_osc_switch_error;
+
+ /** TP_LFIR[38]
+ * PIB MEM: Summarized err - PIB access ops
+ */
+ (rTP_LFIR, bit(38)) ? defaultMaskedError;
+
+ /** TP_LFIR[39]
+ * PIB MEM: Summarized err-fast access ops
+ */
+ (rTP_LFIR, bit(39)) ? defaultMaskedError;
+
+ /** TP_LFIR[40]
+ * OTP Logic: UE or CE counter overflow
+ */
+ (rTP_LFIR, bit(40)) ? defaultMaskedError;
+
+ /** TP_LFIR[41]
+ * malfunction alert or Local Checkstop
+ */
+ (rTP_LFIR, bit(41)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip OCCFIR
+################################################################################
+
+rule rOCCFIR
+{
+ CHECK_STOP:
+ OCCFIR & ~OCCFIR_MASK & ~OCCFIR_ACT0 & ~OCCFIR_ACT1;
+ RECOVERABLE:
+ OCCFIR & ~OCCFIR_MASK & ~OCCFIR_ACT0 & OCCFIR_ACT1;
+};
+
+group gOCCFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** OCCFIR[0]
+ * OCC_FW0
+ */
+ (rOCCFIR, bit(0)) ? defaultMaskedError;
+
+ /** OCCFIR[1]
+ * OCC_FW1
+ */
+ (rOCCFIR, bit(1)) ? defaultMaskedError;
+
+ /** OCCFIR[2]
+ * OCC_CME_ERROR_NOTIFY
+ */
+ (rOCCFIR, bit(2)) ? defaultMaskedError;
+
+ /** OCCFIR[3]
+ * STOP_RECOVERY_NOTIFY_PRD
+ */
+ (rOCCFIR, bit(3)) ? pmRecovery;
+
+ /** OCCFIR[4]
+ * OCC_HB_ERROR
+ */
+ (rOCCFIR, bit(4)) ? defaultMaskedError;
+
+ /** OCCFIR[5]
+ * GPE0 watchdog timeout condition
+ */
+ (rOCCFIR, bit(5)) ? defaultMaskedError;
+
+ /** OCCFIR[6]
+ * GPE1 watchdog timeout condition
+ */
+ (rOCCFIR, bit(6)) ? defaultMaskedError;
+
+ /** OCCFIR[7]
+ * GPE2 watchdog timeout condition
+ */
+ (rOCCFIR, bit(7)) ? defaultMaskedError;
+
+ /** OCCFIR[8]
+ * GPE3 watchdog timeout condition
+ */
+ (rOCCFIR, bit(8)) ? defaultMaskedError;
+
+ /** OCCFIR[9]
+ * GPE0 asserted an error condition
+ */
+ (rOCCFIR, bit(9)) ? threshold_and_mask_self;
+
+ /** OCCFIR[10]
+ * GPE1 asserted an error condition
+ */
+ (rOCCFIR, bit(10)) ? threshold_and_mask_self;
+
+ /** OCCFIR[11]
+ * GPE2 asserted an error condition
+ */
+ (rOCCFIR, bit(11)) ? defaultMaskedError;
+
+ /** OCCFIR[12]
+ * GPE3 asserted an error condition
+ */
+ (rOCCFIR, bit(12)) ? defaultMaskedError;
+
+ /** OCCFIR[13]
+ * OCB_ERROR
+ */
+ (rOCCFIR, bit(13)) ? defaultMaskedError;
+
+ /** OCCFIR[14]
+ * SRAM Unrecoverable Error
+ */
+ (rOCCFIR, bit(14)) ? self_th_1;
+
+ /** OCCFIR[15]
+ * SRAM CE
+ */
+ (rOCCFIR, bit(15)) ? threshold_and_mask_self;
+
+ /** OCCFIR[16]
+ * SRAM Read Error
+ */
+ (rOCCFIR, bit(16)) ? threshold_and_mask_self;
+
+ /** OCCFIR[17]
+ * SRAM Write error
+ */
+ (rOCCFIR, bit(17)) ? threshold_and_mask_self;
+
+ /** OCCFIR[18]
+ * SRAM ctrl detected pe on tank read data
+ */
+ (rOCCFIR, bit(18)) ? threshold_and_mask_self;
+
+ /** OCCFIR[19]
+ * SRAM cntrl detected OCI write data pe
+ */
+ (rOCCFIR, bit(19)) ? threshold_and_mask_self;
+
+ /** OCCFIR[20]
+ * SRAM cntrl detected OCI byte enable PE
+ */
+ (rOCCFIR, bit(20)) ? threshold_and_mask_self;
+
+ /** OCCFIR[21]
+ * SRAM controller detected OCI address PE
+ */
+ (rOCCFIR, bit(21)) ? threshold_and_mask_self;
+
+ /** OCCFIR[22]
+ * GPE0_HALTED:
+ */
+ (rOCCFIR, bit(22)) ? defaultMaskedError;
+
+ /** OCCFIR[23]
+ * GPE1_HALTED:
+ */
+ (rOCCFIR, bit(23)) ? defaultMaskedError;
+
+ /** OCCFIR[24]
+ * GPE2_HALTED:
+ */
+ (rOCCFIR, bit(24)) ? defaultMaskedError;
+
+ /** OCCFIR[25]
+ * GPE3_HALTED:
+ */
+ (rOCCFIR, bit(25)) ? defaultMaskedError;
+
+ /** OCCFIR[26]
+ * EXTERNAL_TRAP:
+ */
+ (rOCCFIR, bit(26)) ? defaultMaskedError;
+
+ /** OCCFIR[27]
+ * PPC405_CORE_RESET
+ */
+ (rOCCFIR, bit(27)) ? defaultMaskedError;
+
+ /** OCCFIR[28]
+ * PPC405_CHIP_RESET
+ */
+ (rOCCFIR, bit(28)) ? defaultMaskedError;
+
+ /** OCCFIR[29]
+ * PPC405_SYSTEM_RESET
+ */
+ (rOCCFIR, bit(29)) ? defaultMaskedError;
+
+ /** OCCFIR[30]
+ * PPC405_DBGMSRWE
+ */
+ (rOCCFIR, bit(30)) ? defaultMaskedError;
+
+ /** OCCFIR[31]
+ * PPC405_DBGSTOPACK
+ */
+ (rOCCFIR, bit(31)) ? defaultMaskedError;
+
+ /** OCCFIR[32]
+ * OCB_DB_OCI_TIMEOUT
+ */
+ (rOCCFIR, bit(32)) ? threshold_and_mask_self;
+
+ /** OCCFIR[33]
+ * OCB_DB_OCI_READ_DATA_PARITY
+ */
+ (rOCCFIR, bit(33)) ? threshold_and_mask_self;
+
+ /** OCCFIR[34]
+ * OCB_DB_OCI_SLAVE_ERROR
+ */
+ (rOCCFIR, bit(34)) ? threshold_and_mask_self;
+
+ /** OCCFIR[35]
+ * OCB_PIB_ADDR_PARITY_ERR
+ */
+ (rOCCFIR, bit(35)) ? threshold_and_mask_self;
+
+ /** OCCFIR[36]
+ * OCB_PIB_DATA_PARITY_ERR
+ */
+ (rOCCFIR, bit(36)) ? threshold_and_mask_self;
+
+ /** OCCFIR[37]
+ * OCB_IDC0_ERROR
+ */
+ (rOCCFIR, bit(37)) ? threshold_and_mask_self;
+
+ /** OCCFIR[38]
+ * OCB_IDC1_ERROR
+ */
+ (rOCCFIR, bit(38)) ? threshold_and_mask_self;
+
+ /** OCCFIR[39]
+ * OCB_IDC2_ERROR
+ */
+ (rOCCFIR, bit(39)) ? threshold_and_mask_self;
+
+ /** OCCFIR[40]
+ * OCB_IDC3_ERROR
+ */
+ (rOCCFIR, bit(40)) ? threshold_and_mask_self;
+
+ /** OCCFIR[41]
+ * SRT_FSM_ERR
+ */
+ (rOCCFIR, bit(41)) ? threshold_and_mask_self;
+
+ /** OCCFIR[42]
+ * JTAGACC_ERR
+ */
+ (rOCCFIR, bit(42)) ? threshold_and_mask_self;
+
+ /** OCCFIR[43]
+ * spare
+ */
+ (rOCCFIR, bit(43)) ? defaultMaskedError;
+
+ /** OCCFIR[44]
+ * C405_ECC_UE
+ */
+ (rOCCFIR, bit(44)) ? threshold_and_mask_self;
+
+ /** OCCFIR[45]
+ * C405_ECC_CE
+ */
+ (rOCCFIR, bit(45)) ? self_th_1;
+
+ /** OCCFIR[46]
+ * C405_OCI_MACHINECHECK
+ */
+ (rOCCFIR, bit(46)) ? threshold_and_mask_self;
+
+ /** OCCFIR[47]
+ * SRAM_SPARE_DIRECT_ERROR0
+ */
+ (rOCCFIR, bit(47)) ? threshold_and_mask_self;
+
+ /** OCCFIR[48]
+ * SRAM_SPARE_DIRECT_ERROR1
+ */
+ (rOCCFIR, bit(48)) ? threshold_and_mask_self;
+
+ /** OCCFIR[49]
+ * SRAM_SPARE_DIRECT_ERROR2
+ */
+ (rOCCFIR, bit(49)) ? threshold_and_mask_self;
+
+ /** OCCFIR[50]
+ * SRAM_SPARE_DIRECT_ERROR3
+ */
+ (rOCCFIR, bit(50)) ? threshold_and_mask_self;
+
+ /** OCCFIR[51]
+ * GPE0_OCISLV_ERR
+ */
+ (rOCCFIR, bit(51)) ? threshold_and_mask_self;
+
+ /** OCCFIR[52]
+ * GPE1_OCISLV_ERR
+ */
+ (rOCCFIR, bit(52)) ? threshold_and_mask_self;
+
+ /** OCCFIR[53]
+ * GPE2_OCISLV_ERR
+ */
+ (rOCCFIR, bit(53)) ? threshold_and_mask_self;
+
+ /** OCCFIR[54]
+ * GPE3_OCISLV_ERR
+ */
+ (rOCCFIR, bit(54)) ? threshold_and_mask_self;
+
+ /** OCCFIR[55]
+ * C405ICU_M_TIMEOUT
+ */
+ (rOCCFIR, bit(55)) ? defaultMaskedError;
+
+ /** OCCFIR[56]
+ * C405DCU_M_TIMEOUT
+ */
+ (rOCCFIR, bit(56)) ? threshold_and_mask_self;
+
+ /** OCCFIR[57]
+ * OCC_COMPLEX_FAULT
+ */
+ (rOCCFIR, bit(57)) ? threshold_and_mask_self;
+
+ /** OCCFIR[58]
+ * OCC_COMPLEX_NOTIFY
+ */
+ (rOCCFIR, bit(58)) ? threshold_and_mask_self;
+
+ /** OCCFIR[59:61]
+ * spare
+ */
+ (rOCCFIR, bit(59|60|61)) ? defaultMaskedError;
+
+ /** OCCFIR[62]
+ * scom
+ */
+ (rOCCFIR, bit(62)) ? defaultMaskedError;
+
+ /** OCCFIR[63]
+ * scom error
+ */
+ (rOCCFIR, bit(63)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# N0 Chiplet FIR
+################################################################################
+
+rule rN0_CHIPLET_FIR
+{
+ CHECK_STOP:
+ N0_CHIPLET_CS_FIR & ~N0_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+ RECOVERABLE:
+ (N0_CHIPLET_RE_FIR >> 2) & ~N0_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+};
+
+group gN0_CHIPLET_FIR
+ filter singlebit
+{
+ /** N0_CHIPLET_FIR[3]
+ * Attention from N0_LFIR
+ */
+ (rN0_CHIPLET_FIR, bit(3)) ? analyzeN0_LFIR;
+
+ /** N0_CHIPLET_FIR[4]
+ * Attention from NXDMAENGFIR
+ */
+ (rN0_CHIPLET_FIR, bit(4)) ? analyzeNXDMAENGFIR;
+
+ /** N0_CHIPLET_FIR[5]
+ * Attention from NXCQFIR
+ */
+ (rN0_CHIPLET_FIR, bit(5)) ? analyzeNXCQFIR;
+
+ /** N0_CHIPLET_FIR[6]
+ * Attention from CXAFIR 0
+ */
+ (rN0_CHIPLET_FIR, bit(6)) ? analyzeConnectedCAPP0;
+
+};
+
+################################################################################
+# N0 Chiplet Unit Checkstop FIR
+################################################################################
+
+rule rN0_CHIPLET_UCS_FIR
+{
+ UNIT_CS:
+ N0_CHIPLET_UCS_FIR & ~(N0_CHIPLET_UCS_FIR_MASK >> 1) & `7fffffffffffffff`;
+};
+
+group gN0_CHIPLET_UCS_FIR
+ filter singlebit
+{
+ /** N0_CHIPLET_UCS_FIR[1]
+ * Attention from NXDMAENGFIR
+ */
+ (rN0_CHIPLET_UCS_FIR, bit(1)) ? analyzeNXDMAENGFIR;
+
+ /** N0_CHIPLET_UCS_FIR[2]
+ * Attention from NXCQFIR
+ */
+ (rN0_CHIPLET_UCS_FIR, bit(2)) ? analyzeNXCQFIR;
+
+ /** N0_CHIPLET_UCS_FIR[3]
+ * Attention from CXAFIR 0
+ */
+ (rN0_CHIPLET_UCS_FIR, bit(3)) ? analyzeConnectedCAPP0;
+
+};
+
+################################################################################
+# P9 chip N0_LFIR
+################################################################################
+
+rule rN0_LFIR
+{
+ CHECK_STOP:
+ N0_LFIR & ~N0_LFIR_MASK & ~N0_LFIR_ACT0 & ~N0_LFIR_ACT1;
+ RECOVERABLE:
+ N0_LFIR & ~N0_LFIR_MASK & ~N0_LFIR_ACT0 & N0_LFIR_ACT1;
+};
+
+group gN0_LFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** N0_LFIR[0]
+ * CFIR internal parity error
+ */
+ (rN0_LFIR, bit(0)) ? self_th_32perDay;
+
+ /** N0_LFIR[1]
+ * Chiplet Control Reg: PCB Access Error
+ */
+ (rN0_LFIR, bit(1)) ? self_th_32perDay;
+
+ /** N0_LFIR[2]
+ * Clock Controller: PCB Access Error
+ */
+ (rN0_LFIR, bit(2)) ? self_th_32perDay;
+
+ /** N0_LFIR[3]
+ * Clock Controller: Summarized Error
+ */
+ (rN0_LFIR, bit(3)) ? self_th_32perDay;
+
+ /** N0_LFIR[4]
+ * PSCOM Logic: PCB Access Error
+ */
+ (rN0_LFIR, bit(4)) ? defaultMaskedError;
+
+ /** N0_LFIR[5]
+ * PSCOM Logic: Summarized internal errors
+ */
+ (rN0_LFIR, bit(5)) ? defaultMaskedError;
+
+ /** N0_LFIR[6]
+ * Therm Logic: Summarized internal errors
+ */
+ (rN0_LFIR, bit(6)) ? defaultMaskedError;
+
+ /** N0_LFIR[7]
+ * Therm Logic: PCB Access Error
+ */
+ (rN0_LFIR, bit(7)) ? defaultMaskedError;
+
+ /** N0_LFIR[8]
+ * Therm Logic: Temperature critical trip
+ */
+ (rN0_LFIR, bit(8)) ? defaultMaskedError;
+
+ /** N0_LFIR[9]
+ * Therm Logic: Temperature fatal trip
+ */
+ (rN0_LFIR, bit(9)) ? defaultMaskedError;
+
+ /** N0_LFIR[10]
+ * UNUSED in P9
+ */
+ (rN0_LFIR, bit(10)) ? defaultMaskedError;
+
+ /** N0_LFIR[11]
+ * Debug Logic: Scom Satellite Error
+ */
+ (rN0_LFIR, bit(11)) ? defaultMaskedError;
+
+ /** N0_LFIR[12]
+ * Scom Satellite Error - Trace0
+ */
+ (rN0_LFIR, bit(12)) ? defaultMaskedError;
+
+ /** N0_LFIR[13]
+ * Scom Satellite Error - Trace0
+ */
+ (rN0_LFIR, bit(13)) ? defaultMaskedError;
+
+ /** N0_LFIR[14]
+ * Scom Satellite Error - Trace1
+ */
+ (rN0_LFIR, bit(14)) ? defaultMaskedError;
+
+ /** N0_LFIR[15]
+ * Scom Satellite Error - Trace1
+ */
+ (rN0_LFIR, bit(15)) ? defaultMaskedError;
+
+ /** N0_LFIR[16:23]
+ * spare
+ */
+ (rN0_LFIR, bit(16|17|18|19|20|21|22|23)) ? defaultMaskedError;
+
+ /** N0_LFIR[24]
+ * Unused
+ */
+ (rN0_LFIR, bit(24)) ? defaultMaskedError;
+
+ /** N0_LFIR[25]
+ * Unused
+ */
+ (rN0_LFIR, bit(25)) ? defaultMaskedError;
+
+ /** N0_LFIR[26:40]
+ * spare
+ */
+ (rN0_LFIR, bit(26|27|28|29|30|31|32|33|34|35|36|37|38|39|40)) ? defaultMaskedError;
+
+ /** N0_LFIR[41]
+ * Malfunction Alert or Local Checkstop
+ */
+ (rN0_LFIR, bit(41)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip NXCQFIR
+################################################################################
+
+rule rNXCQFIR
+{
+ CHECK_STOP:
+ NXCQFIR & ~NXCQFIR_MASK & ~NXCQFIR_ACT0 & ~NXCQFIR_ACT1;
+ RECOVERABLE:
+ NXCQFIR & ~NXCQFIR_MASK & ~NXCQFIR_ACT0 & NXCQFIR_ACT1;
+ UNIT_CS:
+ NXCQFIR & ~NXCQFIR_MASK & NXCQFIR_ACT0 & NXCQFIR_ACT1;
+};
+
+group gNXCQFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** NXCQFIR[0]
+ * PBI internal parity error
+ */
+ (rNXCQFIR, bit(0)) ? nx_th_1;
+
+ /** NXCQFIR[1]
+ * PowerBus CE error
+ */
+ (rNXCQFIR, bit(1)) ? nx_th_32perDay;
+
+ /** NXCQFIR[2]
+ * PowerBus UE error
+ */
+ (rNXCQFIR, bit(2)) ? nx_th_1;
+
+ /** NXCQFIR[3]
+ * PBUS_ECC_SUE_FIR: PowerBus SUE error
+ */
+ (rNXCQFIR, bit(3)) ? defaultMaskedError;
+
+ /** NXCQFIR[4]
+ * Inbound array CE error
+ */
+ (rNXCQFIR, bit(4)) ? nx_th_32perDay;
+
+ /** NXCQFIR[5]
+ * Inbound array UE error
+ */
+ (rNXCQFIR, bit(5)) ? nx_th_1;
+
+ /** NXCQFIR[6]
+ * PASTE_REJECT_FIR: Paste request rejected
+ */
+ (rNXCQFIR, bit(6)) ? level2_th_1;
+
+ /** NXCQFIR[7]
+ * PowerBus command hang error
+ */
+ (rNXCQFIR, bit(7)) ? defaultMaskedError;
+
+ /** NXCQFIR[8]
+ * PowerBus read address error
+ */
+ (rNXCQFIR, bit(8)) ? nx_th_1;
+
+ /** NXCQFIR[9]
+ * PowerBus write address error
+ */
+ (rNXCQFIR, bit(9)) ? nx_th_1;
+
+ /** NXCQFIR[10]
+ * PowerBus miscellaneous error
+ */
+ (rNXCQFIR, bit(10)) ? nx_th_1;
+
+ /** NXCQFIR[11]
+ * MMIO_BAR_PE_FIR: MMIO BAR parity error
+ */
+ (rNXCQFIR, bit(11)) ? nx_th_1;
+
+ /** NXCQFIR[12]
+ * UMAC detected UE on WC Interrupt
+ */
+ (rNXCQFIR, bit(12)) ? nx_th_1;
+
+ /** NXCQFIR[13]
+ * ACK_DEAD cresp received by read command
+ */
+ (rNXCQFIR, bit(13)) ? defaultMaskedError;
+
+ /** NXCQFIR[14]
+ * ACK_DEAD cresp received by write command
+ */
+ (rNXCQFIR, bit(14)) ? defaultMaskedError;
+
+ /** NXCQFIR[15]
+ * Link check aborted while waiting on data
+ */
+ (rNXCQFIR, bit(15)) ? defaultMaskedError;
+
+ /** NXCQFIR[16]
+ * internal transfer hang poll time expired
+ */
+ (rNXCQFIR, bit(16)) ? nx_th_1;
+
+ /** NXCQFIR[17]
+ * Parity error on ERAT arrays
+ */
+ (rNXCQFIR, bit(17)) ? nx_th_1;
+
+ /** NXCQFIR[18]
+ * Correctable error on ERAT arrays
+ */
+ (rNXCQFIR, bit(18)) ? nx_th_32perDay;
+
+ /** NXCQFIR[19]
+ * Uncorrectable error on ERAT arrays
+ */
+ (rNXCQFIR, bit(19)) ? nx_th_32perDay;
+
+ /** NXCQFIR[20]
+ * SUE on ERAT arrays
+ */
+ (rNXCQFIR, bit(20)) ? nx_th_1_SUE;
+
+ /** NXCQFIR[21]
+ * NMMU hang on checkin/checkout request
+ */
+ (rNXCQFIR, bit(21)) ? level2_th_1;
+
+ /** NXCQFIR[22]
+ * ERAT control logic error
+ */
+ (rNXCQFIR, bit(22)) ? nx_th_1;
+
+ /** NXCQFIR[23]
+ * UE on the Powerbus data for xlate
+ */
+ (rNXCQFIR, bit(23)) ? nx_th_1;
+
+ /** NXCQFIR[24]
+ * SUE on the Powerbus data for xlate
+ */
+ (rNXCQFIR, bit(24)) ? nx_th_1_SUE;
+
+ /** NXCQFIR[25]
+ * ACK_DEAD cresp received by UMAC read
+ */
+ (rNXCQFIR, bit(25)) ? defaultMaskedError;
+
+ /** NXCQFIR[26]
+ * Link check aborted waiting on UMAC data
+ */
+ (rNXCQFIR, bit(26)) ? defaultMaskedError;
+
+ /** NXCQFIR[27]
+ * UE on CRB QW0/4
+ */
+ (rNXCQFIR, bit(27)) ? nx_th_1;
+
+ /** NXCQFIR[28]
+ * SUE on CRB QW0/4
+ */
+ (rNXCQFIR, bit(28)) ? nx_th_1_SUE;
+
+ /** NXCQFIR[29]
+ * UMAC has detected a control logic error
+ */
+ (rNXCQFIR, bit(29)) ? nx_th_1;
+
+ /** NXCQFIR[30]
+ * Reserved fieldUMAC_SCOM_sat_err)
+ */
+ (rNXCQFIR, bit(30)) ? defaultMaskedError;
+
+ /** NXCQFIR[31]
+ * Write to RNG SCOM when writes disabled
+ */
+ (rNXCQFIR, bit(31)) ? defaultMaskedError;
+
+ /** NXCQFIR[32]
+ * first noise source in the RNG has failed
+ */
+ (rNXCQFIR, bit(32)) ? nx_th_32perDay;
+
+ /** NXCQFIR[33]
+ * second noise source in the RNG failed
+ */
+ (rNXCQFIR, bit(33)) ? nx_th_32perDay;
+
+ /** NXCQFIR[34]
+ * RNG has detected a control logic error
+ */
+ (rNXCQFIR, bit(34)) ? nx_th_1;
+
+ /** NXCQFIR[35]
+ * NMMU has signaled local checkstop
+ */
+ (rNXCQFIR, bit(35)) ? nx_th_1;
+
+ /** NXCQFIR[36]
+ * VAS has signaled local checkstop
+ */
+ (rNXCQFIR, bit(36)) ? nx_th_1;
+
+ /** NXCQFIR[37]
+ * PBCQ has detected a control logic error
+ */
+ (rNXCQFIR, bit(37)) ? nx_th_1;
+
+ /** NXCQFIR[38]
+ * PBCQ detected failed link
+ */
+ (rNXCQFIR, bit(38)) ? defaultMaskedError;
+
+ /** NXCQFIR[39]
+ * UMAC detected SUE on WC Interrupt
+ */
+ (rNXCQFIR, bit(39)) ? nx_th_1_SUE;
+
+ /** NXCQFIR[40]
+ * SMF address bit = 1 error
+ */
+ (rNXCQFIR, bit(40)) ? defaultMaskedError;
+
+ /** NXCQFIR[41]
+ * Spare
+ */
+ (rNXCQFIR, bit(41)) ? defaultMaskedError;
+
+ /** NXCQFIR[42]
+ * scom error
+ */
+ (rNXCQFIR, bit(42)) ? defaultMaskedError;
+
+ /** NXCQFIR[43]
+ * scom error
+ */
+ (rNXCQFIR, bit(43)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip NXDMAENGFIR
+################################################################################
+
+rule rNXDMAENGFIR
+{
+ CHECK_STOP:
+ NXDMAENGFIR & ~NXDMAENGFIR_MASK & ~NXDMAENGFIR_ACT0 & ~NXDMAENGFIR_ACT1;
+ RECOVERABLE:
+ NXDMAENGFIR & ~NXDMAENGFIR_MASK & ~NXDMAENGFIR_ACT0 & NXDMAENGFIR_ACT1;
+ UNIT_CS:
+ NXDMAENGFIR & ~NXDMAENGFIR_MASK & NXDMAENGFIR_ACT0 & NXDMAENGFIR_ACT1;
+};
+
+group gNXDMAENGFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** NXDMAENGFIR[0]
+ * DMA hang timer expired
+ */
+ (rNXDMAENGFIR, bit(0)) ? nx_th_1;
+
+ /** NXDMAENGFIR[1]
+ * SHM invalid state
+ */
+ (rNXDMAENGFIR, bit(1)) ? nx_th_1;
+
+ /** NXDMAENGFIR[2:3]
+ * spare
+ */
+ (rNXDMAENGFIR, bit(2|3)) ? defaultMaskedError;
+
+ /** NXDMAENGFIR[4]
+ * Channel 0 842 engine ECC CE error
+ */
+ (rNXDMAENGFIR, bit(4)) ? nx_th_32perDay;
+
+ /** NXDMAENGFIR[5]
+ * Channel 0 842 engine ECC UE error
+ */
+ (rNXDMAENGFIR, bit(5)) ? nx_th_1;
+
+ /** NXDMAENGFIR[6]
+ * Channel 1 842 engine ECC CE error
+ */
+ (rNXDMAENGFIR, bit(6)) ? nx_th_32perDay;
+
+ /** NXDMAENGFIR[7]
+ * Channel 1 842 engine ECC UE error
+ */
+ (rNXDMAENGFIR, bit(7)) ? nx_th_1;
+
+ /** NXDMAENGFIR[8]
+ * DMA Non-zero CSB CC detected
+ */
+ (rNXDMAENGFIR, bit(8)) ? defaultMaskedError;
+
+ /** NXDMAENGFIR[9]
+ * DMA array ECC CE error
+ */
+ (rNXDMAENGFIR, bit(9)) ? nx_th_32perDay;
+
+ /** NXDMAENGFIR[10]
+ * DMA outWR/inRD ECC CE error
+ */
+ (rNXDMAENGFIR, bit(10)) ? nx_th_32perDay;
+
+ /** NXDMAENGFIR[11]
+ * Channel 4 GZIP ECC CE
+ */
+ (rNXDMAENGFIR, bit(11)) ? nx_th_32perDay;
+
+ /** NXDMAENGFIR[12]
+ * Channel 4 GZIP ECC UE
+ */
+ (rNXDMAENGFIR, bit(12)) ? nx_th_1;
+
+ /** NXDMAENGFIR[13]
+ * Channel 4 GZIP ECC PE
+ */
+ (rNXDMAENGFIR, bit(13)) ? nx_th_1;
+
+ /** NXDMAENGFIR[14]
+ * SCOM error from other satellites
+ */
+ (rNXDMAENGFIR, bit(14)) ? defaultMaskedError;
+
+ /** NXDMAENGFIR[15]
+ * DMA invalid state error (unrecoverable)
+ */
+ (rNXDMAENGFIR, bit(15)) ? nx_th_1;
+
+ /** NXDMAENGFIR[16]
+ * DMA invalid state error (unrecoverable)
+ */
+ (rNXDMAENGFIR, bit(16)) ? nx_th_1;
+
+ /** NXDMAENGFIR[17]
+ * DMA array ECC UE error
+ */
+ (rNXDMAENGFIR, bit(17)) ? nx_th_1;
+
+ /** NXDMAENGFIR[18]
+ * DMA outWR/inRD ECC UE error
+ */
+ (rNXDMAENGFIR, bit(18)) ? nx_th_1;
+
+ /** NXDMAENGFIR[19]
+ * DMA inRD done error
+ */
+ (rNXDMAENGFIR, bit(19)) ? defaultMaskedError;
+
+ /** NXDMAENGFIR[20]
+ * Channel 0 invalid state error
+ */
+ (rNXDMAENGFIR, bit(20)) ? nx_th_1;
+
+ /** NXDMAENGFIR[21]
+ * Channel 1 invalid state error
+ */
+ (rNXDMAENGFIR, bit(21)) ? nx_th_1;
+
+ /** NXDMAENGFIR[22]
+ * Channel 2 invalid state error
+ */
+ (rNXDMAENGFIR, bit(22)) ? nx_th_1;
+
+ /** NXDMAENGFIR[23]
+ * Channel 3 invalid state error
+ */
+ (rNXDMAENGFIR, bit(23)) ? nx_th_1;
+
+ /** NXDMAENGFIR[24]
+ * Channel 4 invalid state error
+ */
+ (rNXDMAENGFIR, bit(24)) ? nx_th_1;
+
+ /** NXDMAENGFIR[25:30]
+ * spare
+ */
+ (rNXDMAENGFIR, bit(25|26|27|28|29|30)) ? defaultMaskedError;
+
+ /** NXDMAENGFIR[31]
+ * CRB UE, on CSB/CCB
+ */
+ (rNXDMAENGFIR, bit(31)) ? nx_th_1;
+
+ /** NXDMAENGFIR[32]
+ * CRB SUE, on CSB/CCB
+ */
+ (rNXDMAENGFIR, bit(32)) ? nx_th_1_SUE;
+
+ /** NXDMAENGFIR[33]
+ * DMA outWR/inRD ECC SUE error
+ */
+ (rNXDMAENGFIR, bit(33)) ? defaultMaskedError;
+
+ /** NXDMAENGFIR[34]
+ * Channel 0 watchdog timer expired
+ */
+ (rNXDMAENGFIR, bit(34)) ? nx_th_32perDay;
+
+ /** NXDMAENGFIR[35]
+ * Channel 1 watchdog timer expired
+ */
+ (rNXDMAENGFIR, bit(35)) ? nx_th_32perDay;
+
+ /** NXDMAENGFIR[36]
+ * Channel 2 watchdog timer expired
+ */
+ (rNXDMAENGFIR, bit(36)) ? nx_th_32perDay;
+
+ /** NXDMAENGFIR[37]
+ * Channel 3 watchdog timer expired
+ */
+ (rNXDMAENGFIR, bit(37)) ? nx_th_32perDay;
+
+ /** NXDMAENGFIR[38]
+ * Hypervisor local checkstop
+ */
+ (rNXDMAENGFIR, bit(38)) ? nx_th_1;
+
+ /** NXDMAENGFIR[39]
+ * Channel 4 watchdog timer expired
+ */
+ (rNXDMAENGFIR, bit(39)) ? nx_th_32perDay;
+
+ /** NXDMAENGFIR[40:47]
+ * spare
+ */
+ (rNXDMAENGFIR, bit(40|41|42|43|44|45|46|47)) ? defaultMaskedError;
+
+ /** NXDMAENGFIR[48]
+ * scom error
+ */
+ (rNXDMAENGFIR, bit(48)) ? defaultMaskedError;
+
+ /** NXDMAENGFIR[49]
+ * scom error
+ */
+ (rNXDMAENGFIR, bit(49)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# N1 Chiplet FIR
+################################################################################
+
+rule rN1_CHIPLET_FIR
+{
+ CHECK_STOP:
+ N1_CHIPLET_CS_FIR & ~N1_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+ RECOVERABLE:
+ (N1_CHIPLET_RE_FIR >> 2) & ~N1_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+};
+
+group gN1_CHIPLET_FIR
+ filter singlebit
+{
+ /** N1_CHIPLET_FIR[3]
+ * Attention from N1_LFIR
+ */
+ (rN1_CHIPLET_FIR, bit(3)) ? analyzeN1_LFIR;
+
+ /** N1_CHIPLET_FIR[4]
+ * Attention from MCFIR 2
+ */
+ (rN1_CHIPLET_FIR, bit(4)) ? analyzeConnectedMI2;
+
+ /** N1_CHIPLET_FIR[5]
+ * Attention from MCFIR 3
+ */
+ (rN1_CHIPLET_FIR, bit(5)) ? analyzeConnectedMI3;
+
+ /** N1_CHIPLET_FIR[6]
+ * Attention from MCDFIR
+ */
+ (rN1_CHIPLET_FIR, bit(6)) ? analyzeMCDFIR_0;
+
+ /** N1_CHIPLET_FIR[7]
+ * Attention from MCDFIR
+ */
+ (rN1_CHIPLET_FIR, bit(7)) ? analyzeMCDFIR_1;
+
+ /** N1_CHIPLET_FIR[8]
+ * Attention from VASFIR
+ */
+ (rN1_CHIPLET_FIR, bit(8)) ? analyzeVASFIR;
+
+ /** N1_CHIPLET_FIR[11]
+ * Attention from NPU0FIR 2
+ */
+ (rN1_CHIPLET_FIR, bit(11)) ? analyzeConnectedNPU2;
+
+ /** N1_CHIPLET_FIR[12]
+ * Attention from NPU1FIR 2
+ */
+ (rN1_CHIPLET_FIR, bit(12)) ? analyzeConnectedNPU2;
+
+ /** N1_CHIPLET_FIR[13]
+ * Attention from NPU2FIR 2
+ */
+ (rN1_CHIPLET_FIR, bit(13)) ? analyzeConnectedNPU2;
+
+};
+
+################################################################################
+# N1 Chiplet Unit Checkstop FIR
+################################################################################
+
+rule rN1_CHIPLET_UCS_FIR
+{
+ UNIT_CS:
+ N1_CHIPLET_UCS_FIR & ~(N1_CHIPLET_UCS_FIR_MASK >> 1) & `7fffffffffffffff`;
+};
+
+group gN1_CHIPLET_UCS_FIR
+ filter singlebit
+{
+ /** N1_CHIPLET_UCS_FIR[1]
+ * Attention from MCFIR 2
+ */
+ (rN1_CHIPLET_UCS_FIR, bit(1)) ? analyzeConnectedMI2;
+
+ /** N1_CHIPLET_UCS_FIR[2]
+ * Attention from MCFIR 3
+ */
+ (rN1_CHIPLET_UCS_FIR, bit(2)) ? analyzeConnectedMI3;
+
+ /** N1_CHIPLET_UCS_FIR[5]
+ * Attention from VASFIR
+ */
+ (rN1_CHIPLET_UCS_FIR, bit(5)) ? analyzeVASFIR;
+
+ /** N1_CHIPLET_UCS_FIR[6]
+ * Attention from NPU0FIR 2
+ */
+ (rN1_CHIPLET_UCS_FIR, bit(6)) ? analyzeConnectedNPU2;
+
+ /** N1_CHIPLET_UCS_FIR[7]
+ * Attention from NPU1FIR 2
+ */
+ (rN1_CHIPLET_UCS_FIR, bit(7)) ? analyzeConnectedNPU2;
+
+ /** N1_CHIPLET_UCS_FIR[8]
+ * Attention from NPU2FIR 2
+ */
+ (rN1_CHIPLET_UCS_FIR, bit(8)) ? analyzeConnectedNPU2;
+
+};
+
+################################################################################
+# N1 Chiplet Host Attention FIR
+################################################################################
+
+rule rN1_CHIPLET_HA_FIR
+{
+ HOST_ATTN:
+ N1_CHIPLET_HA_FIR & ~(N1_CHIPLET_HA_FIR_MASK >> 1) & `7fffffffffffffff`;
+};
+
+group gN1_CHIPLET_HA_FIR
+ filter singlebit
+{
+ /** N1_CHIPLET_HA_FIR[1]
+ * Attention from MCFIR 2
+ */
+ (rN1_CHIPLET_HA_FIR, bit(1)) ? analyzeConnectedMI2;
+
+ /** N1_CHIPLET_HA_FIR[2]
+ * Attention from MCFIR 3
+ */
+ (rN1_CHIPLET_HA_FIR, bit(2)) ? analyzeConnectedMI3;
+
+};
+
+################################################################################
+# P9 chip N1_LFIR
+################################################################################
+
+rule rN1_LFIR
+{
+ CHECK_STOP:
+ N1_LFIR & ~N1_LFIR_MASK & ~N1_LFIR_ACT0 & ~N1_LFIR_ACT1;
+ RECOVERABLE:
+ N1_LFIR & ~N1_LFIR_MASK & ~N1_LFIR_ACT0 & N1_LFIR_ACT1;
+};
+
+group gN1_LFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** N1_LFIR[0]
+ * CFIR internal parity error
+ */
+ (rN1_LFIR, bit(0)) ? self_th_32perDay;
+
+ /** N1_LFIR[1]
+ * Chiplet Control Reg: PCB Access Error
+ */
+ (rN1_LFIR, bit(1)) ? self_th_32perDay;
+
+ /** N1_LFIR[2]
+ * Clock Controller: PCB Access Error
+ */
+ (rN1_LFIR, bit(2)) ? self_th_32perDay;
+
+ /** N1_LFIR[3]
+ * Clock Controller: Summarized Error
+ */
+ (rN1_LFIR, bit(3)) ? self_th_32perDay;
+
+ /** N1_LFIR[4]
+ * PSCOM Logic: PCB Access Error
+ */
+ (rN1_LFIR, bit(4)) ? defaultMaskedError;
+
+ /** N1_LFIR[5]
+ * PSCOM Logic: Summarized internal errors
+ */
+ (rN1_LFIR, bit(5)) ? defaultMaskedError;
+
+ /** N1_LFIR[6]
+ * Therm Logic: Summarized internal errors
+ */
+ (rN1_LFIR, bit(6)) ? defaultMaskedError;
+
+ /** N1_LFIR[7]
+ * Therm Logic: PCB Access Error
+ */
+ (rN1_LFIR, bit(7)) ? defaultMaskedError;
+
+ /** N1_LFIR[8]
+ * Therm Logic: Temperature critical trip
+ */
+ (rN1_LFIR, bit(8)) ? defaultMaskedError;
+
+ /** N1_LFIR[9]
+ * Therm Logic: Temperature fatal trip
+ */
+ (rN1_LFIR, bit(9)) ? defaultMaskedError;
+
+ /** N1_LFIR[10]
+ * UNUSED in P9
+ */
+ (rN1_LFIR, bit(10)) ? defaultMaskedError;
+
+ /** N1_LFIR[11]
+ * Debug Logic: Scom Satellite Error
+ */
+ (rN1_LFIR, bit(11)) ? defaultMaskedError;
+
+ /** N1_LFIR[12]
+ * Scom Satellite Error - Trace0
+ */
+ (rN1_LFIR, bit(12)) ? defaultMaskedError;
+
+ /** N1_LFIR[13]
+ * Scom Satellite Error - Trace0
+ */
+ (rN1_LFIR, bit(13)) ? defaultMaskedError;
+
+ /** N1_LFIR[14]
+ * Scom Satellite Error - Trace1
+ */
+ (rN1_LFIR, bit(14)) ? defaultMaskedError;
+
+ /** N1_LFIR[15]
+ * Scom Satellite Error - Trace1
+ */
+ (rN1_LFIR, bit(15)) ? defaultMaskedError;
+
+ /** N1_LFIR[16:23]
+ * spare
+ */
+ (rN1_LFIR, bit(16|17|18|19|20|21|22|23)) ? defaultMaskedError;
+
+ /** N1_LFIR[24]
+ * Unused
+ */
+ (rN1_LFIR, bit(24)) ? defaultMaskedError;
+
+ /** N1_LFIR[25]
+ * Unused
+ */
+ (rN1_LFIR, bit(25)) ? defaultMaskedError;
+
+ /** N1_LFIR[26:40]
+ * spare
+ */
+ (rN1_LFIR, bit(26|27|28|29|30|31|32|33|34|35|36|37|38|39|40)) ? defaultMaskedError;
+
+ /** N1_LFIR[41]
+ * Malfunction Alert or Local Checkstop
+ */
+ (rN1_LFIR, bit(41)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip MCDFIR 0
+################################################################################
+
+rule rMCDFIR_0
+{
+ CHECK_STOP:
+ MCDFIR_0 & ~MCDFIR_0_MASK & ~MCDFIR_0_ACT0 & ~MCDFIR_0_ACT1;
+ RECOVERABLE:
+ MCDFIR_0 & ~MCDFIR_0_MASK & ~MCDFIR_0_ACT0 & MCDFIR_0_ACT1;
+};
+
+group gMCDFIR_0
+ filter singlebit,
+ cs_root_cause
+{
+ /** MCDFIR_0[0]
+ * MCD array had a unrecoverable ECC error
+ */
+ (rMCDFIR_0, bit(0)) ? self_th_32perDay;
+
+ /** MCDFIR_0[0]
+ * MCD array had a unrecoverable ECC error
+ */
+ (rMCDFIR_0, bit(0)) ? self_th_1; # NIMBUS_21,NIMBUS_23,CUMULUS_13
+
+ /** MCDFIR_0[1]
+ * MCD array had a correctable ECC error
+ */
+ (rMCDFIR_0, bit(1)) ? defaultMaskedError;
+
+ /** MCDFIR_0[2]
+ * PowerBus address Parity Error
+ */
+ (rMCDFIR_0, bit(2)) ? self_th_1;
+
+ /** MCDFIR_0[3]
+ * Register bit flip in State Machine Logic
+ */
+ (rMCDFIR_0, bit(3)) ? self_th_1;
+
+ /** MCDFIR_0[4]
+ * cl_probe command hung
+ */
+ (rMCDFIR_0, bit(4)) ? defaultMaskedError;
+
+ /** MCDFIR_0[5]
+ * cResp for cl_probe is address error.
+ */
+ (rMCDFIR_0, bit(5)) ? defaultMaskedError;
+
+ /** MCDFIR_0[6]
+ * Unsolicited cresp received
+ */
+ (rMCDFIR_0, bit(6)) ? self_th_1;
+
+ /** MCDFIR_0[7]
+ * PowerBus ttag Parity Error
+ */
+ (rMCDFIR_0, bit(7)) ? self_th_1;
+
+ /** MCDFIR_0[8]
+ * MCD scom register update error
+ */
+ (rMCDFIR_0, bit(8)) ? self_th_1;
+
+ /** MCDFIR_0[9]
+ * ack_dead_cresp received
+ */
+ (rMCDFIR_0, bit(9)) ? defaultMaskedError;
+
+ /** MCDFIR_0[10]
+ * Internal SCOM error
+ */
+ (rMCDFIR_0, bit(10)) ? defaultMaskedError;
+
+ /** MCDFIR_0[11]
+ * Internal SCOM error
+ */
+ (rMCDFIR_0, bit(11)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip MCDFIR 1
+################################################################################
+
+rule rMCDFIR_1
+{
+ CHECK_STOP:
+ MCDFIR_1 & ~MCDFIR_1_MASK & ~MCDFIR_1_ACT0 & ~MCDFIR_1_ACT1;
+ RECOVERABLE:
+ MCDFIR_1 & ~MCDFIR_1_MASK & ~MCDFIR_1_ACT0 & MCDFIR_1_ACT1;
+};
+
+group gMCDFIR_1
+ filter singlebit,
+ cs_root_cause
+{
+ /** MCDFIR_1[0]
+ * MCD array had a unrecoverable ECC error
+ */
+ (rMCDFIR_1, bit(0)) ? self_th_32perDay;
+
+ /** MCDFIR_1[0]
+ * MCD array had a unrecoverable ECC error
+ */
+ (rMCDFIR_1, bit(0)) ? self_th_1; # NIMBUS_21,NIMBUS_23,CUMULUS_13
+
+ /** MCDFIR_1[1]
+ * MCD array had a correctable ECC error
+ */
+ (rMCDFIR_1, bit(1)) ? defaultMaskedError;
+
+ /** MCDFIR_1[2]
+ * PowerBus address Parity Error
+ */
+ (rMCDFIR_1, bit(2)) ? self_th_1;
+
+ /** MCDFIR_1[3]
+ * Register bit flip in State Machine Logic
+ */
+ (rMCDFIR_1, bit(3)) ? self_th_1;
+
+ /** MCDFIR_1[4]
+ * cl_probe command hung
+ */
+ (rMCDFIR_1, bit(4)) ? defaultMaskedError;
+
+ /** MCDFIR_1[5]
+ * cResp for cl_probe is address error.
+ */
+ (rMCDFIR_1, bit(5)) ? defaultMaskedError;
+
+ /** MCDFIR_1[6]
+ * Unsolicited cresp received
+ */
+ (rMCDFIR_1, bit(6)) ? self_th_1;
+
+ /** MCDFIR_1[7]
+ * PowerBus ttag Parity Error
+ */
+ (rMCDFIR_1, bit(7)) ? self_th_1;
+
+ /** MCDFIR_1[8]
+ * MCD scom register update error
+ */
+ (rMCDFIR_1, bit(8)) ? self_th_1;
+
+ /** MCDFIR_1[9]
+ * ack_dead_cresp received
+ */
+ (rMCDFIR_1, bit(9)) ? defaultMaskedError;
+
+ /** MCDFIR_1[10]
+ * Internal SCOM error
+ */
+ (rMCDFIR_1, bit(10)) ? defaultMaskedError;
+
+ /** MCDFIR_1[11]
+ * Internal SCOM error
+ */
+ (rMCDFIR_1, bit(11)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip VASFIR
+################################################################################
+
+rule rVASFIR
+{
+ CHECK_STOP:
+ VASFIR & ~VASFIR_MASK & ~VASFIR_ACT0 & ~VASFIR_ACT1;
+ RECOVERABLE:
+ VASFIR & ~VASFIR_MASK & ~VASFIR_ACT0 & VASFIR_ACT1;
+ UNIT_CS:
+ VASFIR & ~VASFIR_MASK & VASFIR_ACT0 & VASFIR_ACT1;
+};
+
+group gVASFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** VASFIR[0]
+ * Egress Hardware Error
+ */
+ (rVASFIR, bit(0)) ? self_th_1;
+
+ /** VASFIR[1]
+ * Ingress Hardware Error
+ */
+ (rVASFIR, bit(1)) ? self_th_1;
+
+ /** VASFIR[2]
+ * PowerBus (CQ) Hardware Error
+ */
+ (rVASFIR, bit(2)) ? self_th_1;
+
+ /** VASFIR[3]
+ * Window Context Cache Hardware Error
+ */
+ (rVASFIR, bit(3)) ? self_th_1;
+
+ /** VASFIR[4]
+ * Register/MMIO Hardware Error
+ */
+ (rVASFIR, bit(4)) ? self_th_1;
+
+ /** VASFIR[5]
+ * PowerBus (CQ) Interface Parity Error
+ */
+ (rVASFIR, bit(5)) ? self_th_1;
+
+ /** VASFIR[6]
+ * PB(CQ) Addr Error CRESP on Read
+ */
+ (rVASFIR, bit(6)) ? self_M_level2_L_th_1;
+
+ /** VASFIR[7]
+ * PB (CQ) Address Error CRESP on Write
+ */
+ (rVASFIR, bit(7)) ? self_M_level2_L_th_1;
+
+ /** VASFIR[8]
+ * Egress Correctable ECC Error
+ */
+ (rVASFIR, bit(8)) ? self_th_5perHour;
+
+ /** VASFIR[9]
+ * Ingress Correctable ECC Error
+ */
+ (rVASFIR, bit(9)) ? self_th_5perHour;
+
+ /** VASFIR[10]
+ * PB (CQ) CE on inbound/array data
+ */
+ (rVASFIR, bit(10)) ? defaultMaskedError;
+
+ /** VASFIR[11]
+ * WC Correctable ECC Error
+ */
+ (rVASFIR, bit(11)) ? self_th_5perHour;
+
+ /** VASFIR[12]
+ * Register/MMIO Correctable ECC Error
+ */
+ (rVASFIR, bit(12)) ? self_th_5perHour;
+
+ /** VASFIR[13]
+ * PB Correctable Error on outbound data
+ */
+ (rVASFIR, bit(13)) ? self_th_5perHour;
+
+ /** VASFIR[14]
+ * PB Uncorrectable Error on outbound data
+ */
+ (rVASFIR, bit(14)) ? self_th_1;
+
+ /** VASFIR[15]
+ * PB Master State Machine Hang
+ */
+ (rVASFIR, bit(15)) ? defaultMaskedError;
+
+ /** VASFIR[16]
+ * EG Uncorrectable ECC Error
+ */
+ (rVASFIR, bit(16)) ? self_th_1;
+
+ /** VASFIR[17]
+ * IN Uncorrectable ECC Error
+ */
+ (rVASFIR, bit(17)) ? self_th_1;
+
+ /** VASFIR[18]
+ * PB UE on inbound array data
+ */
+ (rVASFIR, bit(18)) ? self_th_1;
+
+ /** VASFIR[19]
+ * WC Uncorrectable ECC Error
+ */
+ (rVASFIR, bit(19)) ? self_th_1;
+
+ /** VASFIR[20]
+ * RG/MMIO Uncorrectable ECC Error
+ */
+ (rVASFIR, bit(20)) ? self_th_1;
+
+ /** VASFIR[21]
+ * IN CAM Parity Error
+ */
+ (rVASFIR, bit(21)) ? self_th_1;
+
+ /** VASFIR[22]
+ * IN software castout to active window
+ */
+ (rVASFIR, bit(22)) ? self_th_1;
+
+ /** VASFIR[23]
+ * spare
+ */
+ (rVASFIR, bit(23)) ? defaultMaskedError;
+
+ /** VASFIR[24]
+ * EG Special UE (SUE) Error
+ */
+ (rVASFIR, bit(24)) ? self_th_1_SUE;
+
+ /** VASFIR[25]
+ * IN SUE Error
+ */
+ (rVASFIR, bit(25)) ? self_th_1_SUE;
+
+ /** VASFIR[26]
+ * PB SUE Error
+ */
+ (rVASFIR, bit(26)) ? self_th_1_SUE;
+
+ /** VASFIR[27]
+ * WC SUE Error
+ */
+ (rVASFIR, bit(27)) ? self_th_1_SUE;
+
+ /** VASFIR[28]
+ * RG/MMIO SUE Error
+ */
+ (rVASFIR, bit(28)) ? self_th_1_SUE;
+
+ /** VASFIR[29]
+ * PB Link Error on Read
+ */
+ (rVASFIR, bit(29)) ? self_th_1;
+
+ /** VASFIR[30]
+ * PB Link Error on Write
+ */
+ (rVASFIR, bit(30)) ? defaultMaskedError;
+
+ /** VASFIR[31]
+ * PB Link Abort Op Received
+ */
+ (rVASFIR, bit(31)) ? self_th_1;
+
+ /** VASFIR[32]
+ * MMIO Read to Unimplemented Reg (HYP)
+ */
+ (rVASFIR, bit(32)) ? self_th_1;
+
+ /** VASFIR[33]
+ * MMIO Read to Unimplemented Reg (OS)
+ */
+ (rVASFIR, bit(33)) ? defaultMaskedError;
+
+ /** VASFIR[34]
+ * MMIO Write to Unimplemented Reg (HYP)
+ */
+ (rVASFIR, bit(34)) ? self_th_1;
+
+ /** VASFIR[35]
+ * MMIO Write to Unimplemented Reg (OS)
+ */
+ (rVASFIR, bit(35)) ? defaultMaskedError;
+
+ /** VASFIR[36]
+ * non-8B MMIO Detected (HYP)
+ */
+ (rVASFIR, bit(36)) ? self_th_1;
+
+ /** VASFIR[37]
+ * non-8B MMIO Detected (OS)
+ */
+ (rVASFIR, bit(37)) ? defaultMaskedError;
+
+ /** VASFIR[38]
+ * Write Monitor Op to non-open Window
+ */
+ (rVASFIR, bit(38)) ? self_th_1;
+
+ /** VASFIR[39]
+ * Multiple Wr Mon Register Match
+ */
+ (rVASFIR, bit(39)) ? self_th_1;
+
+ /** VASFIR[40]
+ * Page Migration Requested but not enabled
+ */
+ (rVASFIR, bit(40)) ? self_th_1;
+
+ /** VASFIR[41]
+ * Page Migration size != FIFO size
+ */
+ (rVASFIR, bit(41)) ? self_th_1;
+
+ /** VASFIR[42]
+ * ASB Notify not claimed
+ */
+ (rVASFIR, bit(42)) ? self_th_1;
+
+ /** VASFIR[43]
+ * Write Monitor Op error
+ */
+ (rVASFIR, bit(43)) ? self_th_1;
+
+ /** VASFIR[44]
+ * VAS rejected a paste command
+ */
+ (rVASFIR, bit(44)) ? defaultMaskedError;
+
+ /** VASFIR[45]
+ * Data Hang
+ */
+ (rVASFIR, bit(45)) ? defaultMaskedError;
+
+ /** VASFIR[46]
+ * Incoming PB Parity Error
+ */
+ (rVASFIR, bit(46)) ? self_th_1;
+
+ /** VASFIR[47]
+ * Error from SCOMFIR satellite
+ */
+ (rVASFIR, bit(47)) ? defaultMaskedError;
+
+ /** VASFIR[48]
+ * NX_VAS_Local_XSTOP received
+ */
+ (rVASFIR, bit(48)) ? self_th_1;
+
+ /** VASFIR[49]
+ * scom error
+ */
+ (rVASFIR, bit(49)) ? defaultMaskedError;
+
+ /** VASFIR[50:51]
+ * spare
+ */
+ (rVASFIR, bit(50|51)) ? defaultMaskedError;
+
+ /** VASFIR[52]
+ * scom error
+ */
+ (rVASFIR, bit(52)) ? defaultMaskedError;
+
+ /** VASFIR[53]
+ * scom error
+ */
+ (rVASFIR, bit(53)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# N2 Chiplet FIR
+################################################################################
+
+rule rN2_CHIPLET_FIR
+{
+ CHECK_STOP:
+ N2_CHIPLET_CS_FIR & ~N2_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+ RECOVERABLE:
+ (N2_CHIPLET_RE_FIR >> 2) & ~N2_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+};
+
+group gN2_CHIPLET_FIR
+ filter singlebit
+{
+ /** N2_CHIPLET_FIR[3]
+ * Attention from N2_LFIR
+ */
+ (rN2_CHIPLET_FIR, bit(3)) ? analyzeN2_LFIR;
+
+ /** N2_CHIPLET_FIR[5]
+ * Attention from PHBNFIR 0
+ */
+ (rN2_CHIPLET_FIR, bit(5)) ? analyzeConnectedPHB0;
+
+ /** N2_CHIPLET_FIR[6]
+ * Attention from PHBNFIR 1
+ */
+ (rN2_CHIPLET_FIR, bit(6)) ? analyzeConnectedPHB1;
+
+ /** N2_CHIPLET_FIR[7]
+ * Attention from PHBNFIR 3
+ */
+ (rN2_CHIPLET_FIR, bit(7)) ? analyzeConnectedPHB3;
+
+ /** N2_CHIPLET_FIR[8]
+ * Attention from PHBNFIR 2
+ */
+ (rN2_CHIPLET_FIR, bit(8)) ? analyzeConnectedPHB2;
+
+ /** N2_CHIPLET_FIR[9]
+ * Attention from PHBNFIR 4
+ */
+ (rN2_CHIPLET_FIR, bit(9)) ? analyzeConnectedPHB4;
+
+ /** N2_CHIPLET_FIR[10]
+ * Attention from PHBNFIR 5
+ */
+ (rN2_CHIPLET_FIR, bit(10)) ? analyzeConnectedPHB5;
+
+ /** N2_CHIPLET_FIR[11]
+ * Attention from PSIFIR
+ */
+ (rN2_CHIPLET_FIR, bit(11)) ? analyzePSIFIR;
+
+};
+
+################################################################################
+# P9 chip N2_LFIR
+################################################################################
+
+rule rN2_LFIR
+{
+ CHECK_STOP:
+ N2_LFIR & ~N2_LFIR_MASK & ~N2_LFIR_ACT0 & ~N2_LFIR_ACT1;
+ RECOVERABLE:
+ N2_LFIR & ~N2_LFIR_MASK & ~N2_LFIR_ACT0 & N2_LFIR_ACT1;
+};
+
+group gN2_LFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** N2_LFIR[0]
+ * CFIR internal parity error
+ */
+ (rN2_LFIR, bit(0)) ? self_th_32perDay;
+
+ /** N2_LFIR[1]
+ * Chiplet Control Reg: PCB Access Error
+ */
+ (rN2_LFIR, bit(1)) ? self_th_32perDay;
+
+ /** N2_LFIR[2]
+ * Clock Controller: PCB Access Error
+ */
+ (rN2_LFIR, bit(2)) ? self_th_32perDay;
+
+ /** N2_LFIR[3]
+ * Clock Controller: Summarized Error
+ */
+ (rN2_LFIR, bit(3)) ? self_th_32perDay;
+
+ /** N2_LFIR[4]
+ * PSCOM Logic: PCB Access Error
+ */
+ (rN2_LFIR, bit(4)) ? defaultMaskedError;
+
+ /** N2_LFIR[5]
+ * PSCOM Logic: Summarized internal errors
+ */
+ (rN2_LFIR, bit(5)) ? defaultMaskedError;
+
+ /** N2_LFIR[6]
+ * Therm Logic: Summarized internal errors
+ */
+ (rN2_LFIR, bit(6)) ? defaultMaskedError;
+
+ /** N2_LFIR[7]
+ * Therm Logic: PCB Access Error
+ */
+ (rN2_LFIR, bit(7)) ? defaultMaskedError;
+
+ /** N2_LFIR[8]
+ * Therm Logic: Temperature critical trip
+ */
+ (rN2_LFIR, bit(8)) ? defaultMaskedError;
+
+ /** N2_LFIR[9]
+ * Therm Logic: Temperature fatal trip
+ */
+ (rN2_LFIR, bit(9)) ? defaultMaskedError;
+
+ /** N2_LFIR[10]
+ * UNUSED in P9
+ */
+ (rN2_LFIR, bit(10)) ? defaultMaskedError;
+
+ /** N2_LFIR[11]
+ * Debug Logic: Scom Satellite Error
+ */
+ (rN2_LFIR, bit(11)) ? defaultMaskedError;
+
+ /** N2_LFIR[12]
+ * Scom Satellite Error - Trace0
+ */
+ (rN2_LFIR, bit(12)) ? defaultMaskedError;
+
+ /** N2_LFIR[13]
+ * Scom Satellite Error - Trace0
+ */
+ (rN2_LFIR, bit(13)) ? defaultMaskedError;
+
+ /** N2_LFIR[14]
+ * Scom Satellite Error - Trace1
+ */
+ (rN2_LFIR, bit(14)) ? defaultMaskedError;
+
+ /** N2_LFIR[15]
+ * Scom Satellite Error - Trace1
+ */
+ (rN2_LFIR, bit(15)) ? defaultMaskedError;
+
+ /** N2_LFIR[16:23]
+ * spare
+ */
+ (rN2_LFIR, bit(16|17|18|19|20|21|22|23)) ? defaultMaskedError;
+
+ /** N2_LFIR[24]
+ * Unused
+ */
+ (rN2_LFIR, bit(24)) ? defaultMaskedError;
+
+ /** N2_LFIR[25]
+ * Unused
+ */
+ (rN2_LFIR, bit(25)) ? defaultMaskedError;
+
+ /** N2_LFIR[26:40]
+ * spare
+ */
+ (rN2_LFIR, bit(26|27|28|29|30|31|32|33|34|35|36|37|38|39|40)) ? defaultMaskedError;
+
+ /** N2_LFIR[41]
+ * Malfunction Alert or Local Checkstop
+ */
+ (rN2_LFIR, bit(41)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip PSIFIR
+################################################################################
+
+rule rPSIFIR
+{
+ CHECK_STOP:
+ PSIFIR & ~PSIFIR_MASK & ~PSIFIR_ACT0 & ~PSIFIR_ACT1;
+ RECOVERABLE:
+ PSIFIR & ~PSIFIR_MASK & ~PSIFIR_ACT0 & PSIFIR_ACT1;
+};
+
+group gPSIFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** PSIFIR[0:4]
+ * spare
+ */
+ (rPSIFIR, bit(0|1|2|3|4)) ? defaultMaskedError;
+
+ /** PSIFIR[5]
+ * scom error
+ */
+ (rPSIFIR, bit(5)) ? defaultMaskedError;
+
+ /** PSIFIR[6]
+ * scom error
+ */
+ (rPSIFIR, bit(6)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# N3 Chiplet FIR
+################################################################################
+
+rule rN3_CHIPLET_FIR
+{
+ CHECK_STOP:
+ N3_CHIPLET_CS_FIR & ~N3_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+ RECOVERABLE:
+ (N3_CHIPLET_RE_FIR >> 2) & ~N3_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+};
+
+group gN3_CHIPLET_FIR
+ filter singlebit
+{
+ /** N3_CHIPLET_FIR[3]
+ * Attention from N3_LFIR
+ */
+ (rN3_CHIPLET_FIR, bit(3)) ? analyzeN3_LFIR;
+
+ /** N3_CHIPLET_FIR[4]
+ * Attention from MCFIR 0
+ */
+ (rN3_CHIPLET_FIR, bit(4)) ? analyzeConnectedMI0;
+
+ /** N3_CHIPLET_FIR[5]
+ * Attention from MCFIR 1
+ */
+ (rN3_CHIPLET_FIR, bit(5)) ? analyzeConnectedMI1;
+
+ /** N3_CHIPLET_FIR[6]
+ * Attention from PBWESTFIR
+ */
+ (rN3_CHIPLET_FIR, bit(6)) ? analyzePBWESTFIR;
+
+ /** N3_CHIPLET_FIR[7]
+ * Attention from PBCENTFIR
+ */
+ (rN3_CHIPLET_FIR, bit(7)) ? analyzePBCENTFIR;
+
+ /** N3_CHIPLET_FIR[8]
+ * Attention from PBEASTFIR
+ */
+ (rN3_CHIPLET_FIR, bit(8)) ? analyzePBEASTFIR;
+
+ /** N3_CHIPLET_FIR[10]
+ * Attention from NPU0FIR 0
+ */
+ (rN3_CHIPLET_FIR, bit(10)) ? analyzeConnectedNPU0;
+
+ /** N3_CHIPLET_FIR[11]
+ * Attention from NPU1FIR 0
+ */
+ (rN3_CHIPLET_FIR, bit(11)) ? analyzeConnectedNPU0;
+
+ /** N3_CHIPLET_FIR[12]
+ * Attention from NMMUCQFIR
+ */
+ (rN3_CHIPLET_FIR, bit(12)) ? analyzeNMMUCQFIR;
+
+ /** N3_CHIPLET_FIR[13]
+ * Attention from NMMUFIR
+ */
+ (rN3_CHIPLET_FIR, bit(13)) ? analyzeNMMUFIR;
+
+ /** N3_CHIPLET_FIR[14]
+ * Attention from PBPPEFIR
+ */
+ (rN3_CHIPLET_FIR, bit(14)) ? analyzePBPPEFIR;
+
+ /** N3_CHIPLET_FIR[15]
+ * Attention from PBIOEFIR
+ */
+ (rN3_CHIPLET_FIR, bit(15)) ? analyzePBIOEFIR;
+
+ /** N3_CHIPLET_FIR[16]
+ * Attention from PBIOOFIR
+ */
+ (rN3_CHIPLET_FIR, bit(16)) ? analyzePBIOOFIR;
+
+ /** N3_CHIPLET_FIR[17]
+ * Attention from INTCQFIR
+ */
+ (rN3_CHIPLET_FIR, bit(17)) ? analyzeINTCQFIR;
+
+ /** N3_CHIPLET_FIR[18]
+ * Attention from PBAFIR
+ */
+ (rN3_CHIPLET_FIR, bit(18)) ? analyzePBAFIR;
+
+ /** N3_CHIPLET_FIR[19]
+ * Attention from PSIHBFIR
+ */
+ (rN3_CHIPLET_FIR, bit(19)) ? analyzePSIHBFIR;
+
+ /** N3_CHIPLET_FIR[20]
+ * Attention from PBAMFIR
+ */
+ (rN3_CHIPLET_FIR, bit(20)) ? analyzePBAMFIR;
+
+ /** N3_CHIPLET_FIR[21]
+ * Attention from NPU0FIR 1
+ */
+ (rN3_CHIPLET_FIR, bit(21)) ? analyzeConnectedNPU1;
+
+ /** N3_CHIPLET_FIR[22]
+ * Attention from ENHCAFIR
+ */
+ (rN3_CHIPLET_FIR, bit(22)) ? analyzeENHCAFIR;
+
+ /** N3_CHIPLET_FIR[23]
+ * Attention from NPU2FIR 0
+ */
+ (rN3_CHIPLET_FIR, bit(23)) ? analyzeConnectedNPU0;
+
+ /** N3_CHIPLET_FIR[24]
+ * Attention from NPU1FIR 1
+ */
+ (rN3_CHIPLET_FIR, bit(24)) ? analyzeConnectedNPU1;
+
+ /** N3_CHIPLET_FIR[25]
+ * Attention from NPU2FIR 1
+ */
+ (rN3_CHIPLET_FIR, bit(25)) ? analyzeConnectedNPU1;
+
+};
+
+################################################################################
+# N3 Chiplet Unit Checkstop FIR
+################################################################################
+
+rule rN3_CHIPLET_UCS_FIR
+{
+ UNIT_CS:
+ N3_CHIPLET_UCS_FIR & ~(N3_CHIPLET_UCS_FIR_MASK >> 1) & `7fffffffffffffff`;
+};
+
+group gN3_CHIPLET_UCS_FIR
+ filter singlebit
+{
+ /** N3_CHIPLET_UCS_FIR[1]
+ * Attention from MCFIR 0
+ */
+ (rN3_CHIPLET_UCS_FIR, bit(1)) ? analyzeConnectedMI0;
+
+ /** N3_CHIPLET_UCS_FIR[2]
+ * Attention from MCFIR 1
+ */
+ (rN3_CHIPLET_UCS_FIR, bit(2)) ? analyzeConnectedMI1;
+
+ /** N3_CHIPLET_UCS_FIR[3]
+ * Attention from NPU0FIR 1
+ */
+ (rN3_CHIPLET_UCS_FIR, bit(3)) ? analyzeConnectedNPU1;
+
+ /** N3_CHIPLET_UCS_FIR[4]
+ * Attention from NPU1FIR 1
+ */
+ (rN3_CHIPLET_UCS_FIR, bit(4)) ? analyzeConnectedNPU1;
+
+ /** N3_CHIPLET_UCS_FIR[5]
+ * Attention from NPU2FIR 1
+ */
+ (rN3_CHIPLET_UCS_FIR, bit(5)) ? analyzeConnectedNPU1;
+
+ /** N3_CHIPLET_UCS_FIR[6]
+ * Attention from NPU2FIR 0
+ */
+ (rN3_CHIPLET_UCS_FIR, bit(6)) ? analyzeConnectedNPU0;
+
+ /** N3_CHIPLET_UCS_FIR[7]
+ * Attention from NPU0FIR 0
+ */
+ (rN3_CHIPLET_UCS_FIR, bit(7)) ? analyzeConnectedNPU0;
+
+ /** N3_CHIPLET_UCS_FIR[8]
+ * Attention from NPU1FIR 0
+ */
+ (rN3_CHIPLET_UCS_FIR, bit(8)) ? analyzeConnectedNPU0;
+
+ /** N3_CHIPLET_UCS_FIR[9]
+ * Attention from NMMUCQFIR
+ */
+ (rN3_CHIPLET_UCS_FIR, bit(9)) ? analyzeNMMUCQFIR;
+
+ /** N3_CHIPLET_UCS_FIR[10]
+ * Attention from NMMUFIR
+ */
+ (rN3_CHIPLET_UCS_FIR, bit(10)) ? analyzeNMMUFIR;
+
+};
+
+################################################################################
+# N3 Chiplet Host Attention FIR
+################################################################################
+
+rule rN3_CHIPLET_HA_FIR
+{
+ HOST_ATTN:
+ N3_CHIPLET_HA_FIR & ~(N3_CHIPLET_HA_FIR_MASK >> 1) & `7fffffffffffffff`;
+};
+
+group gN3_CHIPLET_HA_FIR
+ filter singlebit
+{
+ /** N3_CHIPLET_HA_FIR[1]
+ * Attention from MCFIR 0
+ */
+ (rN3_CHIPLET_HA_FIR, bit(1)) ? analyzeConnectedMI0;
+
+ /** N3_CHIPLET_HA_FIR[2]
+ * Attention from MCFIR 1
+ */
+ (rN3_CHIPLET_HA_FIR, bit(2)) ? analyzeConnectedMI1;
+
+};
+
+################################################################################
+# P9 chip N3_LFIR
+################################################################################
+
+rule rN3_LFIR
+{
+ CHECK_STOP:
+ N3_LFIR & ~N3_LFIR_MASK & ~N3_LFIR_ACT0 & ~N3_LFIR_ACT1;
+ RECOVERABLE:
+ N3_LFIR & ~N3_LFIR_MASK & ~N3_LFIR_ACT0 & N3_LFIR_ACT1;
+};
+
+group gN3_LFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** N3_LFIR[0]
+ * CFIR internal parity error
+ */
+ (rN3_LFIR, bit(0)) ? self_th_32perDay;
+
+ /** N3_LFIR[1]
+ * Chiplet Control Reg: PCB Access Error
+ */
+ (rN3_LFIR, bit(1)) ? self_th_32perDay;
+
+ /** N3_LFIR[2]
+ * Clock Controller: PCB Access Error
+ */
+ (rN3_LFIR, bit(2)) ? self_th_32perDay;
+
+ /** N3_LFIR[3]
+ * Clock Controller: Summarized Error
+ */
+ (rN3_LFIR, bit(3)) ? self_th_32perDay;
+
+ /** N3_LFIR[4]
+ * PSCOM Logic: PCB Access Error
+ */
+ (rN3_LFIR, bit(4)) ? defaultMaskedError;
+
+ /** N3_LFIR[5]
+ * PSCOM Logic: Summarized internal errors
+ */
+ (rN3_LFIR, bit(5)) ? defaultMaskedError;
+
+ /** N3_LFIR[6]
+ * Therm Logic: Summarized internal errors
+ */
+ (rN3_LFIR, bit(6)) ? defaultMaskedError;
+
+ /** N3_LFIR[7]
+ * Therm Logic: PCB Access Error
+ */
+ (rN3_LFIR, bit(7)) ? defaultMaskedError;
+
+ /** N3_LFIR[8]
+ * Therm Logic: Temperature critical trip
+ */
+ (rN3_LFIR, bit(8)) ? defaultMaskedError;
+
+ /** N3_LFIR[9]
+ * Therm Logic: Temperature fatal trip
+ */
+ (rN3_LFIR, bit(9)) ? defaultMaskedError;
+
+ /** N3_LFIR[10]
+ * UNUSED in P9
+ */
+ (rN3_LFIR, bit(10)) ? defaultMaskedError;
+
+ /** N3_LFIR[11]
+ * Debug Logic: Scom Satellite Error
+ */
+ (rN3_LFIR, bit(11)) ? defaultMaskedError;
+
+ /** N3_LFIR[12]
+ * Scom Satellite Error - Trace0
+ */
+ (rN3_LFIR, bit(12)) ? defaultMaskedError;
+
+ /** N3_LFIR[13]
+ * Scom Satellite Error - Trace0
+ */
+ (rN3_LFIR, bit(13)) ? defaultMaskedError;
+
+ /** N3_LFIR[14]
+ * Scom Satellite Error - Trace1
+ */
+ (rN3_LFIR, bit(14)) ? defaultMaskedError;
+
+ /** N3_LFIR[15]
+ * Scom Satellite Error - Trace1
+ */
+ (rN3_LFIR, bit(15)) ? defaultMaskedError;
+
+ /** N3_LFIR[16:23]
+ * spare
+ */
+ (rN3_LFIR, bit(16|17|18|19|20|21|22|23)) ? defaultMaskedError;
+
+ /** N3_LFIR[24]
+ * Unused
+ */
+ (rN3_LFIR, bit(24)) ? defaultMaskedError;
+
+ /** N3_LFIR[25]
+ * Unused
+ */
+ (rN3_LFIR, bit(25)) ? defaultMaskedError;
+
+ /** N3_LFIR[26:31]
+ * spare
+ */
+ (rN3_LFIR, bit(26|27|28|29|30|31)) ? defaultMaskedError;
+
+ /** N3_LFIR[32]
+ * deadman timer expired
+ */
+ (rN3_LFIR, bit(32)) ? deadmanTimer;
+
+ /** N3_LFIR[33]
+ * system quiesce failed
+ */
+ (rN3_LFIR, bit(33)) ? self_th_1;
+
+ /** N3_LFIR[34]
+ * chip quiesce failed
+ */
+ (rN3_LFIR, bit(34)) ? self_th_1;
+
+ /** N3_LFIR[35:40]
+ * spare
+ */
+ (rN3_LFIR, bit(35|36|37|38|39|40)) ? defaultMaskedError;
+
+ /** N3_LFIR[41]
+ * Malfunction Alert or Local Checkstop
+ */
+ (rN3_LFIR, bit(41)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip PBWESTFIR
+################################################################################
+
+rule rPBWESTFIR
+{
+ CHECK_STOP:
+ PBWESTFIR & ~PBWESTFIR_MASK & ~PBWESTFIR_ACT0 & ~PBWESTFIR_ACT1;
+ RECOVERABLE:
+ PBWESTFIR & ~PBWESTFIR_MASK & ~PBWESTFIR_ACT0 & PBWESTFIR_ACT1;
+};
+
+group gPBWESTFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** PBWESTFIR[0]
+ * pbeq0 hw1 error, PE in custom array
+ */
+ (rPBWESTFIR, bit(0)) ? self_th_1;
+
+ /** PBWESTFIR[1]
+ * pbeq0 hw2 error, PE in custom array
+ */
+ (rPBWESTFIR, bit(1)) ? self_th_1;
+
+ /** PBWESTFIR[2]
+ * pbieq0_pbh_protocol_error
+ */
+ (rPBWESTFIR, bit(2)) ? self_th_1;
+
+ /** PBWESTFIR[3]
+ * pbieq0_pbh_overflow_error
+ */
+ (rPBWESTFIR, bit(3)) ? self_th_1;
+
+ /** PBWESTFIR[4]
+ * pbeq1 hw1 error, PE in custom array
+ */
+ (rPBWESTFIR, bit(4)) ? self_th_1;
+
+ /** PBWESTFIR[5]
+ * pbeq1 hw2 error, PE in custom array
+ */
+ (rPBWESTFIR, bit(5)) ? self_th_1;
+
+ /** PBWESTFIR[6]
+ * pbieq1_pbh_protocol_error
+ */
+ (rPBWESTFIR, bit(6)) ? self_th_1;
+
+ /** PBWESTFIR[7]
+ * pbieq1_pbh_overflow_error
+ */
+ (rPBWESTFIR, bit(7)) ? self_th_1;
+
+ /** PBWESTFIR[8]
+ * pbeq2 hw1 error, PE in custom array
+ */
+ (rPBWESTFIR, bit(8)) ? self_th_1;
+
+ /** PBWESTFIR[9]
+ * pbeq2 hw2 error, PE in custom array
+ */
+ (rPBWESTFIR, bit(9)) ? self_th_1;
+
+ /** PBWESTFIR[10]
+ * pbieq2_pbh_protocol_error
+ */
+ (rPBWESTFIR, bit(10)) ? self_th_1;
+
+ /** PBWESTFIR[11]
+ * pbieq2_pbh_overflow_error
+ */
+ (rPBWESTFIR, bit(11)) ? self_th_1;
+
+ /** PBWESTFIR[12]
+ * pbeq3 hw1 error, PE in custom array
+ */
+ (rPBWESTFIR, bit(12)) ? self_th_1;
+
+ /** PBWESTFIR[13]
+ * pbeq3 hw2 error, PE in custom array
+ */
+ (rPBWESTFIR, bit(13)) ? self_th_1;
+
+ /** PBWESTFIR[14]
+ * pbieq3_pbh_protocol_error
+ */
+ (rPBWESTFIR, bit(14)) ? self_th_1;
+
+ /** PBWESTFIR[15]
+ * pbieq3_pbh_overflow_error
+ */
+ (rPBWESTFIR, bit(15)) ? self_th_1;
+
+ /** PBWESTFIR[16:31]
+ * spare
+ */
+ (rPBWESTFIR, bit(16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)) ? defaultMaskedError;
+
+ /** PBWESTFIR[32]
+ * scom error
+ */
+ (rPBWESTFIR, bit(32)) ? defaultMaskedError;
+
+ /** PBWESTFIR[33]
+ * scom error
+ */
+ (rPBWESTFIR, bit(33)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip PBCENTFIR
+################################################################################
+
+rule rPBCENTFIR
+{
+ CHECK_STOP:
+ PBCENTFIR & ~PBCENTFIR_MASK & ~PBCENTFIR_ACT0 & ~PBCENTFIR_ACT1;
+ RECOVERABLE:
+ PBCENTFIR & ~PBCENTFIR_MASK & ~PBCENTFIR_ACT0 & PBCENTFIR_ACT1;
+};
+
+group gPBCENTFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** PBCENTFIR[0]
+ * pb protocol_error
+ */
+ (rPBCENTFIR, bit(0)) ? level2_M_self_L_th_1;
+
+ /** PBCENTFIR[1]
+ * pb overflow error
+ */
+ (rPBCENTFIR, bit(1)) ? level2_M_self_L_th_1;
+
+ /** PBCENTFIR[2]
+ * pw hw parity error
+ */
+ (rPBCENTFIR, bit(2)) ? level2_M_self_L_th_1;
+
+ /** PBCENTFIR[3]
+ * spare
+ */
+ (rPBCENTFIR, bit(3)) ? defaultMaskedError;
+
+ /** PBCENTFIR[4]
+ * pb coherency error
+ */
+ (rPBCENTFIR, bit(4)) ? level2_M_self_L_th_1;
+
+ /** PBCENTFIR[5]
+ * pb cresp addr error
+ */
+ (rPBCENTFIR, bit(5)) ? defaultMaskedError;
+
+ /** PBCENTFIR[6]
+ * pb cresp error
+ */
+ (rPBCENTFIR, bit(6)) ? level2_M_self_L_th_1;
+
+ /** PBCENTFIR[7]
+ * pb hang recovery limit error
+ */
+ (rPBCENTFIR, bit(7)) ? defaultMaskedError;
+
+ /** PBCENTFIR[8]
+ * pb data_route_error
+ */
+ (rPBCENTFIR, bit(8)) ? level2_M_self_L_th_1;
+
+ /** PBCENTFIR[9]
+ * pb hang_recovery_gte_level1
+ */
+ (rPBCENTFIR, bit(9)) ? pb_cent_hang_recovery_gte;
+
+ /** PBCENTFIR[10]
+ * pb fsp checkstop
+ */
+ (rPBCENTFIR, bit(10)) ? level2_dump_SW;
+
+ /** PBCENTFIR[11:15]
+ * spare
+ */
+ (rPBCENTFIR, bit(11|12|13|14|15)) ? defaultMaskedError;
+
+ /** PBCENTFIR[16]
+ * scom error
+ */
+ (rPBCENTFIR, bit(16)) ? defaultMaskedError;
+
+ /** PBCENTFIR[17]
+ * scom error
+ */
+ (rPBCENTFIR, bit(17)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip PBEASTFIR
+################################################################################
+
+rule rPBEASTFIR
+{
+ CHECK_STOP:
+ PBEASTFIR & ~PBEASTFIR_MASK & ~PBEASTFIR_ACT0 & ~PBEASTFIR_ACT1;
+ RECOVERABLE:
+ PBEASTFIR & ~PBEASTFIR_MASK & ~PBEASTFIR_ACT0 & PBEASTFIR_ACT1;
+};
+
+group gPBEASTFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** PBEASTFIR[0]
+ * pbieq4_pbh_hw1_error
+ */
+ (rPBEASTFIR, bit(0)) ? self_th_1;
+
+ /** PBEASTFIR[1]
+ * pbieq4_pbh_hw2_error
+ */
+ (rPBEASTFIR, bit(1)) ? self_th_1;
+
+ /** PBEASTFIR[2]
+ * pbieq4_pbh_protocol_error
+ */
+ (rPBEASTFIR, bit(2)) ? level2_M_self_L_th_1;
+
+ /** PBEASTFIR[3]
+ * pbieq4_pbh_overflow_error
+ */
+ (rPBEASTFIR, bit(3)) ? level2_M_self_L_th_1;
+
+ /** PBEASTFIR[4]
+ * pbieq5_pbh_hw1_error
+ */
+ (rPBEASTFIR, bit(4)) ? self_th_1;
+
+ /** PBEASTFIR[5]
+ * pbieq5_pbh_hw2_error
+ */
+ (rPBEASTFIR, bit(5)) ? self_th_1;
+
+ /** PBEASTFIR[6]
+ * pbieq5_pbh_protocol_error
+ */
+ (rPBEASTFIR, bit(6)) ? level2_M_self_L_th_1;
+
+ /** PBEASTFIR[7]
+ * pbieq5_pbh_overflow_error
+ */
+ (rPBEASTFIR, bit(7)) ? level2_M_self_L_th_1;
+
+ /** PBEASTFIR[8:15]
+ * spare
+ */
+ (rPBEASTFIR, bit(8|9|10|11|12|13|14|15)) ? defaultMaskedError;
+
+ /** PBEASTFIR[16]
+ * pb data_overflow_error
+ */
+ (rPBEASTFIR, bit(16)) ? level2_M_self_L_th_1;
+
+ /** PBEASTFIR[17]
+ * pb data_protocol_error
+ */
+ (rPBEASTFIR, bit(17)) ? level2_M_self_L_th_1;
+
+ /** PBEASTFIR[18]
+ * pb data_route_error
+ */
+ (rPBEASTFIR, bit(18)) ? level2_M_self_L_th_1;
+
+ /** PBEASTFIR[19:30]
+ * spare
+ */
+ (rPBEASTFIR, bit(19|20|21|22|23|24|25|26|27|28|29|30)) ? defaultMaskedError;
+
+ /** PBEASTFIR[31]
+ * Hypervisor initiated checkstop for TI
+ */
+ (rPBEASTFIR, bit(31)) ? level2_th_1;
+
+ /** PBEASTFIR[32]
+ * scom error
+ */
+ (rPBEASTFIR, bit(32)) ? defaultMaskedError;
+
+ /** PBEASTFIR[33]
+ * scom error
+ */
+ (rPBEASTFIR, bit(33)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip PBPPEFIR
+################################################################################
+
+rule rPBPPEFIR
+{
+ CHECK_STOP:
+ PBPPEFIR & ~PBPPEFIR_MASK & ~PBPPEFIR_ACT0 & ~PBPPEFIR_ACT1;
+ RECOVERABLE:
+ PBPPEFIR & ~PBPPEFIR_MASK & ~PBPPEFIR_ACT0 & PBPPEFIR_ACT1;
+};
+
+group gPBPPEFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** PBPPEFIR[0]
+ * PPE asserted an internally detected err
+ */
+ (rPBPPEFIR, bit(0)) ? threshold_and_mask_self;
+
+ /** PBPPEFIR[1]
+ * PPE err on ext interface to the Mem
+ */
+ (rPBPPEFIR, bit(1)) ? threshold_and_mask_self;
+
+ /** PBPPEFIR[2]
+ * PPE halted due to lack of progress.
+ */
+ (rPBPPEFIR, bit(2)) ? threshold_and_mask_self;
+
+ /** PBPPEFIR[3]
+ * PPE halted on breakpoint event.
+ */
+ (rPBPPEFIR, bit(3)) ? threshold_and_mask_self;
+
+ /** PBPPEFIR[4]
+ * PPE watchdog expired
+ */
+ (rPBPPEFIR, bit(4)) ? defaultMaskedError;
+
+ /** PBPPEFIR[5]
+ * PPE halt
+ */
+ (rPBPPEFIR, bit(5)) ? defaultMaskedError;
+
+ /** PBPPEFIR[6]
+ * PPE debug trigger
+ */
+ (rPBPPEFIR, bit(6)) ? defaultMaskedError;
+
+ /** PBPPEFIR[7]
+ * SRAM uncorrectable error
+ */
+ (rPBPPEFIR, bit(7)) ? threshold_and_mask_self;
+
+ /** PBPPEFIR[8]
+ * SRM correctable error
+ */
+ (rPBPPEFIR, bit(8)) ? threshold_and_mask_self;
+
+ /** PBPPEFIR[9]
+ * Scrub timer tick while scrub pending
+ */
+ (rPBPPEFIR, bit(9)) ? threshold_and_mask_self;
+
+ /** PBPPEFIR[10]
+ * reserved
+ */
+ (rPBPPEFIR, bit(10)) ? defaultMaskedError;
+
+ /** PBPPEFIR[11]
+ * spare
+ */
+ (rPBPPEFIR, bit(11)) ? defaultMaskedError;
+
+ /** PBPPEFIR[12]
+ * scom error
+ */
+ (rPBPPEFIR, bit(12)) ? defaultMaskedError;
+
+ /** PBPPEFIR[13]
+ * scom error
+ */
+ (rPBPPEFIR, bit(13)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip PBAFIR
+################################################################################
+
+rule rPBAFIR
+{
+ CHECK_STOP:
+ PBAFIR & ~PBAFIR_MASK & ~PBAFIR_ACT0 & ~PBAFIR_ACT1;
+ RECOVERABLE:
+ PBAFIR & ~PBAFIR_MASK & ~PBAFIR_ACT0 & PBAFIR_ACT1;
+};
+
+group gPBAFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** PBAFIR[0]
+ * PBA OCI Addr PE err
+ */
+ (rPBAFIR, bit(0)) ? self_th_1;
+
+ /** PBAFIR[1]
+ * PBA CRESP Addr Error for Read
+ */
+ (rPBAFIR, bit(1)) ? defaultMaskedError;
+
+ /** PBAFIR[2]
+ * PBA Read Data Timeout
+ */
+ (rPBAFIR, bit(2)) ? defaultMaskedError;
+
+ /** PBAFIR[3]
+ * PBA Read Data SUE Error
+ */
+ (rPBAFIR, bit(3)) ? defaultMaskedError;
+
+ /** PBAFIR[4]
+ * PBA Read Data UE Error
+ */
+ (rPBAFIR, bit(4)) ? self_th_1;
+
+ /** PBAFIR[5]
+ * PBA Read Data CE Error
+ */
+ (rPBAFIR, bit(5)) ? self_th_32perDay;
+
+ /** PBAFIR[6]
+ * PBA OCI Slave Initialization Error
+ */
+ (rPBAFIR, bit(6)) ? level2_dump_SW;
+
+ /** PBAFIR[7]
+ * OCI Write Data Parity Error
+ */
+ (rPBAFIR, bit(7)) ? self_th_1;
+
+ /** PBAFIR[8]
+ * spare
+ */
+ (rPBAFIR, bit(8)) ? defaultMaskedError;
+
+ /** PBAFIR[9]
+ * PBA Unexpected CRESP
+ */
+ (rPBAFIR, bit(9)) ? level2_th_1;
+
+ /** PBAFIR[10]
+ * PBA Unexpected Data PB data received
+ */
+ (rPBAFIR, bit(10)) ? level2_th_1;
+
+ /** PBAFIR[11]
+ * PBA Tag parity Error
+ */
+ (rPBAFIR, bit(11)) ? self_th_1;
+
+ /** PBAFIR[12]
+ * PBA CRESP Addr Error for Write
+ */
+ (rPBAFIR, bit(12)) ? level2_th_1;
+
+ /** PBAFIR[13]
+ * PBA Invalid CRESP
+ */
+ (rPBAFIR, bit(13)) ? level2_th_1;
+
+ /** PBAFIR[14]
+ * PBA CRESP ACK Dead response r
+ */
+ (rPBAFIR, bit(14)) ? defaultMaskedError;
+
+ /** PBAFIR[15]
+ * PBA OPERATIONAL Timeout detected
+ */
+ (rPBAFIR, bit(15)) ? level2_th_1;
+
+ /** PBAFIR[16]
+ * BCUE Setup Error
+ */
+ (rPBAFIR, bit(16)) ? defaultMaskedError;
+
+ /** PBAFIR[17]
+ * BCUE PowerBus Link
+ */
+ (rPBAFIR, bit(17)) ? defaultMaskedError;
+
+ /** PBAFIR[18]
+ * PBA CRESP Addr Error for BC Write
+ */
+ (rPBAFIR, bit(18)) ? defaultMaskedError;
+
+ /** PBAFIR[19]
+ * BCUE Read Data Parity Error OR MRDERR
+ */
+ (rPBAFIR, bit(19)) ? defaultMaskedError;
+
+ /** PBAFIR[20]
+ * BCDE Setup Error Block Copy Error
+ */
+ (rPBAFIR, bit(20)) ? defaultMaskedError;
+
+ /** PBAFIR[21]
+ * BCDE PowerBus Link error
+ */
+ (rPBAFIR, bit(21)) ? defaultMaskedError;
+
+ /** PBAFIR[22]
+ * PBA CRESP Addr Error for BC Read
+ */
+ (rPBAFIR, bit(22)) ? defaultMaskedError;
+
+ /** PBAFIR[23]
+ * PBA Read Data Timeout
+ */
+ (rPBAFIR, bit(23)) ? defaultMaskedError;
+
+ /** PBAFIR[24]
+ * PBA Read Data SUE Error
+ */
+ (rPBAFIR, bit(24)) ? defaultMaskedError;
+
+ /** PBAFIR[25]
+ * PBA Read Data UE Error
+ */
+ (rPBAFIR, bit(25)) ? defaultMaskedError;
+
+ /** PBAFIR[26]
+ * PBA Read Data CE Error
+ */
+ (rPBAFIR, bit(26)) ? defaultMaskedError;
+
+ /** PBAFIR[27]
+ * BCDE Write Data error
+ */
+ (rPBAFIR, bit(27)) ? defaultMaskedError;
+
+ /** PBAFIR[28]
+ * Internal Logic Error.
+ */
+ (rPBAFIR, bit(28)) ? self_th_1;
+
+ /** PBAFIR[29]
+ * Byte count is less than full cache line
+ */
+ (rPBAFIR, bit(29)) ? level2_dump_SW;
+
+ /** PBAFIR[30]
+ * Illegal access to OCI Register.
+ */
+ (rPBAFIR, bit(30)) ? level2_dump_SW;
+
+ /** PBAFIR[31]
+ * Push Write Error.
+ */
+ (rPBAFIR, bit(31)) ? defaultMaskedError;
+
+ /** PBAFIR[32]
+ * PBAXRCV Low data before High Data
+ */
+ (rPBAFIR, bit(32)) ? defaultMaskedError;
+
+ /** PBAFIR[33]
+ * PBAXRCV low data timeout
+ */
+ (rPBAFIR, bit(33)) ? defaultMaskedError;
+
+ /** PBAFIR[34]
+ * PBA Reservation timeout
+ */
+ (rPBAFIR, bit(34)) ? defaultMaskedError;
+
+ /** PBAFIR[35]
+ * Illegal PBAX Flow.
+ */
+ (rPBAFIR, bit(35)) ? defaultMaskedError;
+
+ /** PBAFIR[36]
+ * PBA engine retry threshold reached
+ */
+ (rPBAFIR, bit(36)) ? defaultMaskedError;
+
+ /** PBAFIR[37]
+ * PBA engine retry threshold reached
+ */
+ (rPBAFIR, bit(37)) ? defaultMaskedError;
+
+ /** PBAFIR[38]
+ * PBAXSND Reservation Timeout
+ */
+ (rPBAFIR, bit(38)) ? defaultMaskedError;
+
+ /** PBAFIR[39]
+ * PBAXSND Reservation Error.
+ */
+ (rPBAFIR, bit(39)) ? defaultMaskedError;
+
+ /** PBAFIR[40]
+ * PBA CRESP ACK Dead response
+ */
+ (rPBAFIR, bit(40)) ? defaultMaskedError;
+
+ /** PBAFIR[41:43]
+ * spare
+ */
+ (rPBAFIR, bit(41|42|43)) ? defaultMaskedError;
+
+ /** PBAFIR[44]
+ * Internal fir parity error duplicate
+ */
+ (rPBAFIR, bit(44)) ? defaultMaskedError;
+
+ /** PBAFIR[45]
+ * Internal fir parity error
+ */
+ (rPBAFIR, bit(45)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip PSIHBFIR
+################################################################################
+
+rule rPSIHBFIR
+{
+ CHECK_STOP:
+ PSIHBFIR & ~PSIHBFIR_MASK & ~PSIHBFIR_ACT0 & ~PSIHBFIR_ACT1;
+ RECOVERABLE:
+ PSIHBFIR & ~PSIHBFIR_MASK & ~PSIHBFIR_ACT0 & PSIHBFIR_ACT1;
+};
+
+group gPSIHBFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** PSIHBFIR[0]
+ * CE from PowerBus data
+ */
+ (rPSIHBFIR, bit(0)) ? self_th_32perDay;
+
+ /** PSIHBFIR[1]
+ * UE from PowerBus data
+ */
+ (rPSIHBFIR, bit(1)) ? self_th_1;
+
+ /** PSIHBFIR[2]
+ * SUE from PowerBus data
+ */
+ (rPSIHBFIR, bit(2)) ? defaultMaskedError;
+
+ /** PSIHBFIR[3]
+ * Interrupt Condition present in PSIHB
+ */
+ (rPSIHBFIR, bit(3)) ? defaultMaskedError;
+
+ /** PSIHBFIR[4]
+ * Interrupt from FSP is being processed
+ */
+ (rPSIHBFIR, bit(4)) ? defaultMaskedError;
+
+ /** PSIHBFIR[5]
+ * CE from PSILL data
+ */
+ (rPSIHBFIR, bit(5)) ? defaultMaskedError;
+
+ /** PSIHBFIR[6]
+ * UE from PSILL data
+ */
+ (rPSIHBFIR, bit(6)) ? defaultMaskedError;
+
+ /** PSIHBFIR[7]
+ * Error bit se
+ */
+ (rPSIHBFIR, bit(7)) ? defaultMaskedError;
+
+ /** PSIHBFIR[8]
+ * Invalid TType Hit on PHB or FSP bar
+ */
+ (rPSIHBFIR, bit(8)) ? level2_M_self_L_th_1;
+
+ /** PSIHBFIR[9]
+ * Invalid CResp returned
+ */
+ (rPSIHBFIR, bit(9)) ? level2_M_self_L_th_1;
+
+ /** PSIHBFIR[10]
+ * PowerBus time out waiting for data grant
+ */
+ (rPSIHBFIR, bit(10)) ? level2_th_1;
+
+ /** PSIHBFIR[11]
+ * PB parity error in a tag/addr bus
+ */
+ (rPSIHBFIR, bit(11)) ? level2_M_self_L_th_1;
+
+ /** PSIHBFIR[12]
+ * FSP tried access to trusted space
+ */
+ (rPSIHBFIR, bit(12)) ? level2_th_1;
+
+ /** PSIHBFIR[13]
+ * Unexpected PB CRESP or DATA
+ */
+ (rPSIHBFIR, bit(13)) ? level2_M_self_L_th_1;
+
+ /** PSIHBFIR[14]
+ * Intr. reg change witn int. pending
+ */
+ (rPSIHBFIR, bit(14)) ? defaultMaskedError;
+
+ /** PSIHBFIR[15]
+ * PSI Interrupt address Error
+ */
+ (rPSIHBFIR, bit(15)) ? self_M_level2_L_th_1;
+
+ /** PSIHBFIR[16]
+ * OCC Interrupt address Error
+ */
+ (rPSIHBFIR, bit(16)) ? self_M_level2_L_th_1;
+
+ /** PSIHBFIR[17]
+ * FSI Interrupt address Error
+ */
+ (rPSIHBFIR, bit(17)) ? self_M_level2_L_th_1;
+
+ /** PSIHBFIR[18]
+ * LPC Interrupt address Error
+ */
+ (rPSIHBFIR, bit(18)) ? self_M_level2_L_th_1;
+
+ /** PSIHBFIR[19]
+ * LOCAL ERROR Interrupt address Error
+ */
+ (rPSIHBFIR, bit(19)) ? self_M_level2_L_th_1;
+
+ /** PSIHBFIR[20]
+ * HOST ERROR Interrupt address Error
+ */
+ (rPSIHBFIR, bit(20)) ? self_M_level2_L_th_1;
+
+ /** PSIHBFIR[21]
+ * PSI global error bit 0
+ */
+ (rPSIHBFIR, bit(21)) ? defaultMaskedError;
+
+ /** PSIHBFIR[22]
+ * PSI global error bit 1
+ */
+ (rPSIHBFIR, bit(22)) ? defaultMaskedError;
+
+ /** PSIHBFIR[23]
+ * Upstream error
+ */
+ (rPSIHBFIR, bit(23)) ? level2_M_self_L_th_32perDay;
+
+ /** PSIHBFIR[24:26]
+ * spare
+ */
+ (rPSIHBFIR, bit(24|25|26)) ? defaultMaskedError;
+
+ /** PSIHBFIR[27]
+ * scom error
+ */
+ (rPSIHBFIR, bit(27)) ? defaultMaskedError;
+
+ /** PSIHBFIR[28]
+ * fir parity Error
+ */
+ (rPSIHBFIR, bit(28)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip ENHCAFIR
+################################################################################
+
+rule rENHCAFIR
+{
+ CHECK_STOP:
+ ENHCAFIR & ~ENHCAFIR_MASK & ~ENHCAFIR_ACT0 & ~ENHCAFIR_ACT1;
+ RECOVERABLE:
+ ENHCAFIR & ~ENHCAFIR_MASK & ~ENHCAFIR_ACT0 & ENHCAFIR_ACT1;
+};
+
+group gENHCAFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** ENHCAFIR[0]
+ * PB0 data UE
+ */
+ (rENHCAFIR, bit(0)) ? defaultMaskedError;
+
+ /** ENHCAFIR[1]
+ * PB0 data SUE
+ */
+ (rENHCAFIR, bit(1)) ? defaultMaskedError;
+
+ /** ENHCAFIR[2]
+ * PB0 data ue
+ */
+ (rENHCAFIR, bit(2)) ? defaultMaskedError;
+
+ /** ENHCAFIR[3]
+ * spare
+ */
+ (rENHCAFIR, bit(3)) ? defaultMaskedError;
+
+ /** ENHCAFIR[4]
+ * Castout Drop Counter Full
+ */
+ (rENHCAFIR, bit(4)) ? defaultMaskedError;
+
+ /** ENHCAFIR[5]
+ * Data Hang Detect
+ */
+ (rENHCAFIR, bit(5)) ? defaultMaskedError;
+
+ /** ENHCAFIR[6]
+ * Unexpected data or cresp
+ */
+ (rENHCAFIR, bit(6)) ? defaultMaskedError;
+
+ /** ENHCAFIR[7]
+ * Internal Error
+ */
+ (rENHCAFIR, bit(7)) ? defaultMaskedError;
+
+ /** ENHCAFIR[8]
+ * ADU checkstop error from power bus data
+ */
+ (rENHCAFIR, bit(8)) ? defaultMaskedError;
+
+ /** ENHCAFIR[9]
+ * ADU checkstop error from alter display
+ */
+ (rENHCAFIR, bit(9)) ? defaultMaskedError;
+
+ /** ENHCAFIR[10]
+ * ADU checkstop error from xsco m
+ */
+ (rENHCAFIR, bit(10)) ? defaultMaskedError;
+
+ /** ENHCAFIR[11]
+ * ADU checkstop from power bus cmd
+ */
+ (rENHCAFIR, bit(11)) ? defaultMaskedError;
+
+ /** ENHCAFIR[12]
+ * ADU checkstop error from power bus send
+ */
+ (rENHCAFIR, bit(12)) ? defaultMaskedError;
+
+ /** ENHCAFIR[13]
+ * ADU checkstop from power bus receive
+ */
+ (rENHCAFIR, bit(13)) ? defaultMaskedError;
+
+ /** ENHCAFIR[14]
+ * ADU recoverable error from pb data
+ */
+ (rENHCAFIR, bit(14)) ? defaultMaskedError;
+
+ /** ENHCAFIR[15]
+ * ADU recoverable error from alter display
+ */
+ (rENHCAFIR, bit(15)) ? defaultMaskedError;
+
+ /** ENHCAFIR[16]
+ * ADU recoverable error from xscom
+ */
+ (rENHCAFIR, bit(16)) ? defaultMaskedError;
+
+ /** ENHCAFIR[17]
+ * ADU recoverable from power bus cmd
+ */
+ (rENHCAFIR, bit(17)) ? defaultMaskedError;
+
+ /** ENHCAFIR[18]
+ * ADU recoverable error from pb send
+ */
+ (rENHCAFIR, bit(18)) ? defaultMaskedError;
+
+ /** ENHCAFIR[19]
+ * ADU recoverable error from pb receive
+ */
+ (rENHCAFIR, bit(19)) ? defaultMaskedError;
+
+ /** ENHCAFIR[20]
+ * NHTM scom error
+ */
+ (rENHCAFIR, bit(20)) ? defaultMaskedError;
+
+ /** ENHCAFIR[21]
+ * spare
+ */
+ (rENHCAFIR, bit(21)) ? defaultMaskedError;
+
+ /** ENHCAFIR[22]
+ * scom error
+ */
+ (rENHCAFIR, bit(22)) ? defaultMaskedError;
+
+ /** ENHCAFIR[23]
+ * scom error
+ */
+ (rENHCAFIR, bit(23)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip PBAMFIR
+################################################################################
+
+rule rPBAMFIR
+{
+ CHECK_STOP:
+ PBAMFIR & ~PBAMFIR_MASK & ~PBAMFIR_ACT0 & ~PBAMFIR_ACT1;
+ RECOVERABLE:
+ PBAMFIR & ~PBAMFIR_MASK & ~PBAMFIR_ACT0 & PBAMFIR_ACT1;
+};
+
+group gPBAMFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** PBAMFIR[0]
+ * action0_for_invalid_transfer_size
+ */
+ (rPBAMFIR, bit(0)) ? self_th_1;
+
+ /** PBAMFIR[1]
+ * action0_for_invalid_command
+ */
+ (rPBAMFIR, bit(1)) ? self_th_1;
+
+ /** PBAMFIR[2]
+ * action0_for_invalid_address_alignment
+ */
+ (rPBAMFIR, bit(2)) ? self_th_1;
+
+ /** PBAMFIR[3]
+ * action0_for_OPB_error
+ */
+ (rPBAMFIR, bit(3)) ? defaultMaskedError;
+
+ /** PBAMFIR[4]
+ * action0_for_OPB_timeout
+ */
+ (rPBAMFIR, bit(4)) ? defaultMaskedError;
+
+ /** PBAMFIR[5]
+ * action0_for_OPB_master_hang_timeout
+ */
+ (rPBAMFIR, bit(5)) ? self_th_32perDay;
+
+ /** PBAMFIR[6]
+ * master_cmd_buffer_parity_error
+ */
+ (rPBAMFIR, bit(6)) ? self_th_1;
+
+ /** PBAMFIR[7]
+ * master_dat_buffer_parity_error
+ */
+ (rPBAMFIR, bit(7)) ? self_th_1;
+
+ /** PBAMFIR[8:9]
+ * spare
+ */
+ (rPBAMFIR, bit(8|9)) ? defaultMaskedError;
+
+ /** PBAMFIR[10]
+ * scom error
+ */
+ (rPBAMFIR, bit(10)) ? defaultMaskedError;
+
+ /** PBAMFIR[11]
+ * scom error
+ */
+ (rPBAMFIR, bit(11)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip NMMUCQFIR
+################################################################################
+
+rule rNMMUCQFIR
+{
+ CHECK_STOP:
+ NMMUCQFIR & ~NMMUCQFIR_MASK & ~NMMUCQFIR_ACT0 & ~NMMUCQFIR_ACT1;
+ RECOVERABLE:
+ NMMUCQFIR & ~NMMUCQFIR_MASK & ~NMMUCQFIR_ACT0 & NMMUCQFIR_ACT1;
+ UNIT_CS:
+ NMMUCQFIR & ~NMMUCQFIR_MASK & NMMUCQFIR_ACT0 & NMMUCQFIR_ACT1;
+};
+
+group gNMMUCQFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** NMMUCQFIR[0]
+ * PBI_PE_FIR: PBI internal parity error
+ */
+ (rNMMUCQFIR, bit(0)) ? self_th_1;
+
+ /** NMMUCQFIR[1]
+ * PowerBus command hang error
+ */
+ (rNMMUCQFIR, bit(1)) ? defaultMaskedError;
+
+ /** NMMUCQFIR[2]
+ * PowerBus read address error
+ */
+ (rNMMUCQFIR, bit(2)) ? self_M_level2_L_th_1;
+
+ /** NMMUCQFIR[3]
+ * PowerBus write address error
+ */
+ (rNMMUCQFIR, bit(3)) ? self_M_level2_L_th_1;
+
+ /** NMMUCQFIR[4]
+ * PowerBus miscellaneous error
+ */
+ (rNMMUCQFIR, bit(4)) ? self_th_1;
+
+ /** NMMUCQFIR[5]
+ * spare
+ */
+ (rNMMUCQFIR, bit(5)) ? defaultMaskedError;
+
+ /** NMMUCQFIR[6]
+ * PowerBus Xlate UE error
+ */
+ (rNMMUCQFIR, bit(6)) ? self_th_1;
+
+ /** NMMUCQFIR[7]
+ * PowerBus Xlate SUE error
+ */
+ (rNMMUCQFIR, bit(7)) ? self_th_1_SUE;
+
+ /** NMMUCQFIR[8]
+ * PowerBus CE error
+ */
+ (rNMMUCQFIR, bit(8)) ? self_th_32perDay;
+
+ /** NMMUCQFIR[9]
+ * PowerBus UE error
+ */
+ (rNMMUCQFIR, bit(9)) ? self_th_1;
+
+ /** NMMUCQFIR[10]
+ * PowerBus SUE error
+ */
+ (rNMMUCQFIR, bit(10)) ? defaultMaskedError;
+
+ /** NMMUCQFIR[11]
+ * Inbound LCO_ARRAY CE error
+ */
+ (rNMMUCQFIR, bit(11)) ? self_th_32perDay;
+
+ /** NMMUCQFIR[12]
+ * Inbound LCO_ARRAY UE error
+ */
+ (rNMMUCQFIR, bit(12)) ? self_th_1;
+
+ /** NMMUCQFIR[13]
+ * Inbound LCO_ARRAY SUE error
+ */
+ (rNMMUCQFIR, bit(13)) ? defaultMaskedError;
+
+ /** NMMUCQFIR[14]
+ * Inbound array CE error
+ */
+ (rNMMUCQFIR, bit(14)) ? self_th_32perDay;
+
+ /** NMMUCQFIR[15]
+ * Inbound array UE error
+ */
+ (rNMMUCQFIR, bit(15)) ? self_th_1;
+
+ /** NMMUCQFIR[16]
+ * internal state error
+ */
+ (rNMMUCQFIR, bit(16)) ? self_th_1;
+
+ /** NMMUCQFIR[17]
+ * ACK_DEAD cresp received by read command
+ */
+ (rNMMUCQFIR, bit(17)) ? defaultMaskedError;
+
+ /** NMMUCQFIR[18]
+ * ACK_DEAD cresp received by write command
+ */
+ (rNMMUCQFIR, bit(18)) ? defaultMaskedError;
+
+ /** NMMUCQFIR[19]
+ * Link check aborted while waiting on data
+ */
+ (rNMMUCQFIR, bit(19)) ? defaultMaskedError;
+
+ /** NMMUCQFIR[20]
+ * scom error
+ */
+ (rNMMUCQFIR, bit(20)) ? defaultMaskedError;
+
+ /** NMMUCQFIR[21]
+ * scom error
+ */
+ (rNMMUCQFIR, bit(21)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip NMMUFIR
+################################################################################
+
+rule rNMMUFIR
+{
+ CHECK_STOP:
+ NMMUFIR & ~NMMUFIR_MASK & ~NMMUFIR_ACT0 & ~NMMUFIR_ACT1;
+ RECOVERABLE:
+ NMMUFIR & ~NMMUFIR_MASK & ~NMMUFIR_ACT0 & NMMUFIR_ACT1;
+ UNIT_CS:
+ NMMUFIR & ~NMMUFIR_MASK & NMMUFIR_ACT0 & NMMUFIR_ACT1;
+};
+
+group gNMMUFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** NMMUFIR[0]
+ * Fabric DIn xlat array CE error detected.
+ */
+ (rNMMUFIR, bit(0)) ? self_th_32perDay;
+
+ /** NMMUFIR[1]
+ * Fabric DIn xlat array UE error detected.
+ */
+ (rNMMUFIR, bit(1)) ? self_th_1;
+
+ /** NMMUFIR[2]
+ * Fabric DIn xlat array SUE error
+ */
+ (rNMMUFIR, bit(2)) ? self_th_1_SUE;
+
+ /** NMMUFIR[3]
+ * Fabric mst rd array CE error detected.
+ */
+ (rNMMUFIR, bit(3)) ? self_th_32perDay;
+
+ /** NMMUFIR[4]
+ * Fabric mst rd array UE error detected.
+ */
+ (rNMMUFIR, bit(4)) ? self_th_1;
+
+ /** NMMUFIR[5]
+ * Fabric mst rd array SUE error detected.
+ */
+ (rNMMUFIR, bit(5)) ? defaultMaskedError;
+
+ /** NMMUFIR[6]
+ * Fabric xlat protocol error detected.
+ */
+ (rNMMUFIR, bit(6)) ? self_th_1;
+
+ /** NMMUFIR[7]
+ * Fabric xlat op timeout detected.
+ */
+ (rNMMUFIR, bit(7)) ? defaultMaskedError;
+
+ /** NMMUFIR[8]
+ * SLB directory parity error detected.
+ */
+ (rNMMUFIR, bit(8)) ? self_th_1;
+
+ /** NMMUFIR[9]
+ * SLB cache parity error detected.
+ */
+ (rNMMUFIR, bit(9)) ? self_th_1;
+
+ /** NMMUFIR[10]
+ * SLB lru parity error detected.
+ */
+ (rNMMUFIR, bit(10)) ? self_th_1;
+
+ /** NMMUFIR[11]
+ * SLB multi-hit error detected.
+ */
+ (rNMMUFIR, bit(11)) ? threshold_and_mask_self;
+
+ /** NMMUFIR[12]
+ * TLB directory parity error detected.
+ */
+ (rNMMUFIR, bit(12)) ? self_th_1;
+
+ /** NMMUFIR[13]
+ * TLB cache parity error detected.
+ */
+ (rNMMUFIR, bit(13)) ? self_th_1;
+
+ /** NMMUFIR[14]
+ * TLB lru parity error detected.
+ */
+ (rNMMUFIR, bit(14)) ? self_th_1;
+
+ /** NMMUFIR[15]
+ * TLB multi-hit error detected.
+ */
+ (rNMMUFIR, bit(15)) ? threshold_and_mask_self;
+
+ /** NMMUFIR[16]
+ * Segment fault detected .
+ */
+ (rNMMUFIR, bit(16)) ? defaultMaskedError;
+
+ /** NMMUFIR[17]
+ * Page fault detected, no matching pte.
+ */
+ (rNMMUFIR, bit(17)) ? defaultMaskedError;
+
+ /** NMMUFIR[18]
+ * Page fault, basic prot chk fail.
+ */
+ (rNMMUFIR, bit(18)) ? defaultMaskedError;
+
+ /** NMMUFIR[19]
+ * Page fault detected, virt prot chk fail.
+ */
+ (rNMMUFIR, bit(19)) ? defaultMaskedError;
+
+ /** NMMUFIR[20]
+ * Page fault detected,seid mismatch .
+ */
+ (rNMMUFIR, bit(20)) ? defaultMaskedError;
+
+ /** NMMUFIR[21]
+ * Address error cresp detected by twsm
+ */
+ (rNMMUFIR, bit(21)) ? self_M_level2_L_th_1;
+
+ /** NMMUFIR[22]
+ * PTE update fail due to armwf mismatch.
+ */
+ (rNMMUFIR, bit(22)) ? defaultMaskedError;
+
+ /** NMMUFIR[23]
+ * Address error cresp detected by twsm
+ */
+ (rNMMUFIR, bit(23)) ? self_M_level2_L_th_1;
+
+ /** NMMUFIR[24]
+ * Unsupported radix cfg for guest-side .
+ */
+ (rNMMUFIR, bit(24)) ? defaultMaskedError;
+
+ /** NMMUFIR[25]
+ * Unsupported radix cfg for host-side .
+ */
+ (rNMMUFIR, bit(25)) ? defaultMaskedError;
+
+ /** NMMUFIR[26]
+ * Invalid wimg setting detected .
+ */
+ (rNMMUFIR, bit(26)) ? defaultMaskedError;
+
+ /** NMMUFIR[27]
+ * Invalid radix quad access detected .
+ */
+ (rNMMUFIR, bit(27)) ? defaultMaskedError;
+
+ /** NMMUFIR[28]
+ * Unexpected access to foreign addr space
+ */
+ (rNMMUFIR, bit(28)) ? defaultMaskedError;
+
+ /** NMMUFIR[29]
+ * Prefetch abort/fail detected .
+ */
+ (rNMMUFIR, bit(29)) ? defaultMaskedError;
+
+ /** NMMUFIR[30]
+ * Context cache array parity er
+ */
+ (rNMMUFIR, bit(30)) ? self_th_1;
+
+ /** NMMUFIR[31]
+ * Radix pwc array parity error detected .
+ */
+ (rNMMUFIR, bit(31)) ? self_th_1;
+
+ /** NMMUFIR[32]
+ * Tablewalk sm control error detected .
+ */
+ (rNMMUFIR, bit(32)) ? self_th_1;
+
+ /** NMMUFIR[33]
+ * Castout sm control error detected .
+ */
+ (rNMMUFIR, bit(33)) ? self_th_1;
+
+ /** NMMUFIR[34]
+ * Check-in sm control error detected .
+ */
+ (rNMMUFIR, bit(34)) ? self_th_1;
+
+ /** NMMUFIR[35]
+ * Invalidate sm control error detected .
+ */
+ (rNMMUFIR, bit(35)) ? self_th_1;
+
+ /** NMMUFIR[36]
+ * Tablewalk sm timeout error detected .
+ */
+ (rNMMUFIR, bit(36)) ? defaultMaskedError;
+
+ /** NMMUFIR[37]
+ * Castout sm timeout error detected .
+ */
+ (rNMMUFIR, bit(37)) ? defaultMaskedError;
+
+ /** NMMUFIR[38]
+ * Check-in sm timeout error detected .
+ */
+ (rNMMUFIR, bit(38)) ? defaultMaskedError;
+
+ /** NMMUFIR[39]
+ * Invalidate sm timeout error detected .
+ */
+ (rNMMUFIR, bit(39)) ? defaultMaskedError;
+
+ /** NMMUFIR[40]
+ * NX local checkstop error detected .
+ */
+ (rNMMUFIR, bit(40)) ? defaultMaskedError;
+
+ /** NMMUFIR[41]
+ * CP0 local checkstop error detected .
+ */
+ (rNMMUFIR, bit(41)) ? defaultMaskedError;
+
+ /** NMMUFIR[42]
+ * CP1 local checkstop error detected .
+ */
+ (rNMMUFIR, bit(42)) ? defaultMaskedError;
+
+ /** NMMUFIR[43]
+ * NPU local checkstop error detected .
+ */
+ (rNMMUFIR, bit(43)) ? defaultMaskedError;
+
+ /** NMMUFIR[44]
+ * FBC local checkstop error detected .
+ */
+ (rNMMUFIR, bit(44)) ? defaultMaskedError;
+
+ /** NMMUFIR[45]
+ * Snoop invalidate filter overflow .
+ */
+ (rNMMUFIR, bit(45)) ? defaultMaskedError;
+
+ /** NMMUFIR[46]
+ * scom error
+ */
+ (rNMMUFIR, bit(46)) ? defaultMaskedError;
+
+ /** NMMUFIR[47]
+ * scom error
+ */
+ (rNMMUFIR, bit(47)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip INTCQFIR
+################################################################################
+
+rule rINTCQFIR
+{
+ CHECK_STOP:
+ INTCQFIR & ~INTCQFIR_MASK & ~INTCQFIR_ACT0 & ~INTCQFIR_ACT1;
+ RECOVERABLE:
+ INTCQFIR & ~INTCQFIR_MASK & ~INTCQFIR_ACT0 & INTCQFIR_ACT1;
+};
+
+group gINTCQFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** INTCQFIR[0]
+ * INT_CQ_FIR_PI_ECC_CE:
+ */
+ (rINTCQFIR, bit(0)) ? self_th_32perDay;
+
+ /** INTCQFIR[1]
+ * INT_CQ_FIR_PI_ECC_UE:
+ */
+ (rINTCQFIR, bit(1)) ? self_th_1;
+
+ /** INTCQFIR[2]
+ * INT_CQ_FIR_PI_ECC_SUE:
+ */
+ (rINTCQFIR, bit(2)) ? self_th_1_SUE;
+
+ /** INTCQFIR[3]
+ * INT_CQ_FIR_ST_ECC_CE:
+ */
+ (rINTCQFIR, bit(3)) ? self_th_32perDay;
+
+ /** INTCQFIR[4]
+ * INT_CQ_FIR_ST_ECC_UE:
+ */
+ (rINTCQFIR, bit(4)) ? self_th_1;
+
+ /** INTCQFIR[5]
+ * INT_CQ_FIR_LD_ECC_CE:
+ */
+ (rINTCQFIR, bit(5)) ? self_th_32perDay;
+
+ /** INTCQFIR[6]
+ * INT_CQ_FIR_LD_ECC_UE:
+ */
+ (rINTCQFIR, bit(6)) ? self_th_1;
+
+ /** INTCQFIR[7]
+ * INT_CQ_FIR_CL_ECC_CE:
+ */
+ (rINTCQFIR, bit(7)) ? self_th_32perDay;
+
+ /** INTCQFIR[8]
+ * INT_CQ_FIR_CL_ECC_UE:
+ */
+ (rINTCQFIR, bit(8)) ? self_th_1;
+
+ /** INTCQFIR[9]
+ * INT_CQ_FIR_WR_ECC_CE:
+ */
+ (rINTCQFIR, bit(9)) ? self_th_32perDay;
+
+ /** INTCQFIR[10]
+ * INT_CQ_FIR_WR_ECC_UE:
+ */
+ (rINTCQFIR, bit(10)) ? self_th_1;
+
+ /** INTCQFIR[11]
+ * INT_CQ_FIR_RD_ECC_CE:
+ */
+ (rINTCQFIR, bit(11)) ? self_th_32perDay;
+
+ /** INTCQFIR[12]
+ * INT_CQ_FIR_RD_ECC_UE:
+ */
+ (rINTCQFIR, bit(12)) ? self_th_1;
+
+ /** INTCQFIR[13]
+ * INT_CQ_FIR_AI_ECC_CE:
+ */
+ (rINTCQFIR, bit(13)) ? self_th_32perDay;
+
+ /** INTCQFIR[14]
+ * INT_CQ_FIR_AI_ECC_UE:
+ */
+ (rINTCQFIR, bit(14)) ? self_th_1;
+
+ /** INTCQFIR[15]
+ * INT_CQ_FIR_AIB_IN_CMD_CTL_PERR:
+ */
+ (rINTCQFIR, bit(15)) ? self_th_1;
+
+ /** INTCQFIR[16]
+ * INT_CQ_FIR_AIB_IN_CMD_PERR:
+ */
+ (rINTCQFIR, bit(16)) ? self_th_1;
+
+ /** INTCQFIR[17]
+ * INT_CQ_FIR_AIB_IN_DAT_CTL_PERR:
+ */
+ (rINTCQFIR, bit(17)) ? self_th_1;
+
+ /** INTCQFIR[18]
+ * INT_CQ_FIR_PB_PARITY_ERROR:
+ */
+ (rINTCQFIR, bit(18)) ? self_th_1;
+
+ /** INTCQFIR[19]
+ * INT_CQ_FIR_PB_RCMDX_CI_ERR1:
+ */
+ (rINTCQFIR, bit(19)) ? self_th_1;
+
+ /** INTCQFIR[20]
+ * INT_CQ_FIR_PB_RCMDX_CI_ERR2:
+ */
+ (rINTCQFIR, bit(20)) ? self_th_1;
+
+ /** INTCQFIR[21]
+ * INT_CQ_FIR_PB_RCMDX_CI_ERR3:
+ */
+ (rINTCQFIR, bit(21)) ? self_th_1;
+
+ /** INTCQFIR[22]
+ * INT_CQ_FIR_RCVD_POISONED_CIST_DATA:
+ */
+ (rINTCQFIR, bit(22)) ? self_th_32perDay;
+
+ /** INTCQFIR[23]
+ * INT_CQ_FIR_MRT_ERR_NOT_VALID:
+ */
+ (rINTCQFIR, bit(23)) ? self_th_1;
+
+ /** INTCQFIR[24]
+ * INT_CQ_FIR_MRT_ERR_PSIZE:
+ */
+ (rINTCQFIR, bit(24)) ? self_th_1;
+
+ /** INTCQFIR[25]
+ * INT_CQ_FIR_SCOM_S_ERR:
+ */
+ (rINTCQFIR, bit(25)) ? defaultMaskedError;
+
+ /** INTCQFIR[26]
+ * INT_CQ_FIR_TCTXT_PRESP_ERROR:
+ */
+ (rINTCQFIR, bit(26)) ? self_th_1;
+
+ /** INTCQFIR[27]
+ * INT_CQ_FIR_WRQ_OP_HANG:
+ */
+ (rINTCQFIR, bit(27)) ? defaultMaskedError;
+
+ /** INTCQFIR[28]
+ * INT_CQ_FIR_RDQ_OP_HANG:
+ */
+ (rINTCQFIR, bit(28)) ? defaultMaskedError;
+
+ /** INTCQFIR[29]
+ * INT_CQ_FIR_INTQ_OP_HANG:
+ */
+ (rINTCQFIR, bit(29)) ? defaultMaskedError;
+
+ /** INTCQFIR[30]
+ * INT_CQ_FIR_RDQ_DATA_HANG:
+ */
+ (rINTCQFIR, bit(30)) ? self_th_1;
+
+ /** INTCQFIR[31]
+ * INT_CQ_FIR_STQ_DATA_HANG:
+ */
+ (rINTCQFIR, bit(31)) ? self_th_1;
+
+ /** INTCQFIR[32]
+ * INT_CQ_FIR_LDQ_DATA_HANG:
+ */
+ (rINTCQFIR, bit(32)) ? self_th_1;
+
+ /** INTCQFIR[33]
+ * INT_CQ_FIR_WRQ_BAD_CRESP:
+ */
+ (rINTCQFIR, bit(33)) ? self_M_level2_L_th_1;
+
+ /** INTCQFIR[34]
+ * INT_CQ_FIR_RDQ_BAD_CRESP:
+ */
+ (rINTCQFIR, bit(34)) ? self_M_level2_L_th_1;
+
+ /** INTCQFIR[35]
+ * INT_CQ_FIR_INTQ_BAD_CRESP:
+ */
+ (rINTCQFIR, bit(35)) ? self_M_level2_L_th_1;
+
+ /** INTCQFIR[36]
+ * INT_CQ_FIR_BAD_128K_VP_OP:
+ */
+ (rINTCQFIR, bit(36)) ? self_th_1;
+
+ /** INTCQFIR[37]
+ * INT_CQ_FIR_RDQ_ABORT_OP:
+ */
+ (rINTCQFIR, bit(37)) ? defaultMaskedError;
+
+ /** INTCQFIR[38]
+ * INT_CQ_FIR_PC_CRD_PERR:
+ */
+ (rINTCQFIR, bit(38)) ? self_th_1;
+
+ /** INTCQFIR[39]
+ * INT_CQ_FIR_PC_CRD_AVAIL_PERR:
+ */
+ (rINTCQFIR, bit(39)) ? self_th_1;
+
+ /** INTCQFIR[40]
+ * INT_CQ_FIR_VC_CRD_PERR:
+ */
+ (rINTCQFIR, bit(40)) ? self_th_1;
+
+ /** INTCQFIR[41]
+ * INT_CQ_FIR_VC_CRD_AVAIL_PERR:
+ */
+ (rINTCQFIR, bit(41)) ? self_th_1;
+
+ /** INTCQFIR[42]
+ * INT_CQ_FIR_CMD_QX_SEVERE_ERR:
+ */
+ (rINTCQFIR, bit(42)) ? self_th_1;
+
+ /** INTCQFIR[43]
+ * INT_CQ_FIR_RDQ_ABORT_TRM:
+ */
+ (rINTCQFIR, bit(43)) ? self_th_32perDay;
+
+ /** INTCQFIR[44]
+ * INT_CQ_FIR_UNSOLICITED_CRESP:
+ */
+ (rINTCQFIR, bit(44)) ? level2_M_self_L_th_1;
+
+ /** INTCQFIR[45]
+ * INT_CQ_FIR_UNSOLICITED_PBDATA:
+ */
+ (rINTCQFIR, bit(45)) ? self_th_1;
+
+ /** INTCQFIR[46]
+ * INT_CQ_FIR_FIR_PARITY_ERR:
+ */
+ (rINTCQFIR, bit(46)) ? self_th_1;
+
+ /** INTCQFIR[47]
+ * INT_CQ_FIR_PGM_DBG_ACCESS:
+ */
+ (rINTCQFIR, bit(47)) ? threshold_and_mask_self;
+
+ /** INTCQFIR[48]
+ * spare
+ */
+ (rINTCQFIR, bit(48)) ? defaultMaskedError;
+
+ /** INTCQFIR[49:51]
+ * INT_CQ_FIR_PC_FATAL_ERROR_0_2:
+ */
+ (rINTCQFIR, bit(49|50|51)) ? self_th_1;
+
+ /** INTCQFIR[52:54]
+ * INT_CQ_FIR_PC_RECOV_ERROR_0_2:
+ */
+ (rINTCQFIR, bit(52|53|54)) ? analyzeIntCqFirPcRecovError;
+
+ /** INTCQFIR[55:57]
+ * INT_CQ_FIR_PC_INFO_ERROR_0_2:
+ */
+ (rINTCQFIR, bit(55|56|57)) ? defaultMaskedError;
+
+ /** INTCQFIR[58:59]
+ * INT_CQ_FIR_VC_FATAL_ERROR_0_1:
+ */
+ (rINTCQFIR, bit(58|59)) ? self_th_1;
+
+ /** INTCQFIR[60:61]
+ * INT_CQ_FIR_VC_RECOV_ERROR_0_1:
+ */
+ (rINTCQFIR, bit(60|61)) ? level2_M_self_L_th_1;
+
+ /** INTCQFIR[62:63]
+ * INT_CQ_FIR_VC_INFO_ERROR_0_1:
+ */
+ (rINTCQFIR, bit(62|63)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip PBIOEFIR
+################################################################################
+
+rule rPBIOEFIR
+{
+ CHECK_STOP:
+ PBIOEFIR & ~PBIOEFIR_MASK & ~PBIOEFIR_ACT0 & ~PBIOEFIR_ACT1;
+ RECOVERABLE:
+ PBIOEFIR & ~PBIOEFIR_MASK & ~PBIOEFIR_ACT0 & PBIOEFIR_ACT1;
+};
+
+group gPBIOEFIR
+ filter singlebit,
+ cs_root_cause(8,11,14)
+{
+ /** PBIOEFIR[0]
+ * fmr00 trained
+ */
+ (rPBIOEFIR, bit(0)) ? defaultMaskedError;
+
+ /** PBIOEFIR[1]
+ * fmr01 trained
+ */
+ (rPBIOEFIR, bit(1)) ? defaultMaskedError;
+
+ /** PBIOEFIR[2]
+ * fmr02 trained
+ */
+ (rPBIOEFIR, bit(2)) ? defaultMaskedError;
+
+ /** PBIOEFIR[3]
+ * fmr03 trained
+ */
+ (rPBIOEFIR, bit(3)) ? defaultMaskedError;
+
+ /** PBIOEFIR[4]
+ * fmr04 trained
+ */
+ (rPBIOEFIR, bit(4)) ? defaultMaskedError;
+
+ /** PBIOEFIR[5]
+ * fmr05 trained
+ */
+ (rPBIOEFIR, bit(5)) ? defaultMaskedError;
+
+ /** PBIOEFIR[6:7]
+ * spare
+ */
+ (rPBIOEFIR, bit(6|7)) ? defaultMaskedError;
+
+ /** PBIOEFIR[8]
+ * dob01 ue
+ */
+ (rPBIOEFIR, bit(8)) ? self_th_1_UERE;
+
+ /** PBIOEFIR[9]
+ * d0b01 ce
+ */
+ (rPBIOEFIR, bit(9)) ? self_th_32perDay;
+
+ /** PBIOEFIR[10]
+ * dob01 sue
+ */
+ (rPBIOEFIR, bit(10)) ? defaultMaskedError;
+
+ /** PBIOEFIR[11]
+ * dob23 ue
+ */
+ (rPBIOEFIR, bit(11)) ? self_th_1_UERE;
+
+ /** PBIOEFIR[12]
+ * dob23 ce
+ */
+ (rPBIOEFIR, bit(12)) ? self_th_32perDay;
+
+ /** PBIOEFIR[13]
+ * dob23 sue
+ */
+ (rPBIOEFIR, bit(13)) ? defaultMaskedError;
+
+ /** PBIOEFIR[14]
+ * dob45 ue
+ */
+ (rPBIOEFIR, bit(14)) ? self_th_1_UERE;
+
+ /** PBIOEFIR[15]
+ * dob45 ce
+ */
+ (rPBIOEFIR, bit(15)) ? self_th_32perDay;
+
+ /** PBIOEFIR[16]
+ * dob45 sue
+ */
+ (rPBIOEFIR, bit(16)) ? defaultMaskedError;
+
+ /** PBIOEFIR[17]
+ * spare
+ */
+ (rPBIOEFIR, bit(17)) ? defaultMaskedError;
+
+ /** PBIOEFIR[18]
+ * spare
+ */
+ (rPBIOEFIR, bit(18)) ? defaultMaskedError;
+
+ /** PBIOEFIR[19]
+ * spare
+ */
+ (rPBIOEFIR, bit(19)) ? defaultMaskedError;
+
+ /** PBIOEFIR[20]
+ * X0 even link framer or outbnd switch err
+ */
+ (rPBIOEFIR, bit(20)) ? self_th_1;
+
+ /** PBIOEFIR[21]
+ * X0 odd internal framer err
+ */
+ (rPBIOEFIR, bit(21)) ? self_th_1;
+
+ /** PBIOEFIR[22]
+ * X1 even link framer or outbnd switch err
+ */
+ (rPBIOEFIR, bit(22)) ? self_th_1;
+
+ /** PBIOEFIR[23]
+ * X1 odd internal framer err
+ */
+ (rPBIOEFIR, bit(23)) ? self_th_1;
+
+ /** PBIOEFIR[24]
+ * X2 even link framer or outbnd switch err
+ */
+ (rPBIOEFIR, bit(24)) ? self_th_1;
+
+ /** PBIOEFIR[25]
+ * X2 odd internal framer err
+ */
+ (rPBIOEFIR, bit(25)) ? self_th_1;
+
+ /** PBIOEFIR[26:27]
+ * spare
+ */
+ (rPBIOEFIR, bit(26|27)) ? defaultMaskedError;
+
+ /** PBIOEFIR[28]
+ * parser00 attn or X0evn link down
+ */
+ (rPBIOEFIR, bit(28)) ? calloutBusInterface_xbus0_th_1;
+
+ /** PBIOEFIR[29]
+ * parser01 attn or X0odd link down
+ */
+ (rPBIOEFIR, bit(29)) ? calloutBusInterface_xbus0_th_1;
+
+ /** PBIOEFIR[30]
+ * parser02 attn or X1evn link down
+ */
+ (rPBIOEFIR, bit(30)) ? calloutBusInterface_xbus1_th_1;
+
+ /** PBIOEFIR[31]
+ * parser03 attn or X1odd link down
+ */
+ (rPBIOEFIR, bit(31)) ? calloutBusInterface_xbus1_th_1;
+
+ /** PBIOEFIR[32]
+ * parser04 attn or X2evn link down
+ */
+ (rPBIOEFIR, bit(32)) ? calloutBusInterface_xbus2_th_1;
+
+ /** PBIOEFIR[33]
+ * parser05 attn or X2odd link down
+ */
+ (rPBIOEFIR, bit(33)) ? calloutBusInterface_xbus2_th_1;
+
+ /** PBIOEFIR[34:35]
+ * spare
+ */
+ (rPBIOEFIR, bit(34|35)) ? defaultMaskedError;
+
+ /** PBIOEFIR[36]
+ * mb00 spattn
+ */
+ (rPBIOEFIR, bit(36)) ? defaultMaskedError;
+
+ /** PBIOEFIR[37]
+ * mb01 spattn
+ */
+ (rPBIOEFIR, bit(37)) ? defaultMaskedError;
+
+ /** PBIOEFIR[38]
+ * mb10 spattn
+ */
+ (rPBIOEFIR, bit(38)) ? defaultMaskedError;
+
+ /** PBIOEFIR[39]
+ * mb11 spattn
+ */
+ (rPBIOEFIR, bit(39)) ? defaultMaskedError;
+
+ /** PBIOEFIR[40]
+ * mb20 spattn
+ */
+ (rPBIOEFIR, bit(40)) ? defaultMaskedError;
+
+ /** PBIOEFIR[41]
+ * mb21 spattn
+ */
+ (rPBIOEFIR, bit(41)) ? defaultMaskedError;
+
+ /** PBIOEFIR[42]
+ * mb30 spattn
+ */
+ (rPBIOEFIR, bit(42)) ? defaultMaskedError;
+
+ /** PBIOEFIR[43]
+ * mb31 spattn
+ */
+ (rPBIOEFIR, bit(43)) ? defaultMaskedError;
+
+ /** PBIOEFIR[44]
+ * mb40 spattn
+ */
+ (rPBIOEFIR, bit(44)) ? defaultMaskedError;
+
+ /** PBIOEFIR[45]
+ * mb41 spattn
+ */
+ (rPBIOEFIR, bit(45)) ? defaultMaskedError;
+
+ /** PBIOEFIR[46]
+ * mb50 spattn
+ */
+ (rPBIOEFIR, bit(46)) ? defaultMaskedError;
+
+ /** PBIOEFIR[47]
+ * mb51 spattn
+ */
+ (rPBIOEFIR, bit(47)) ? defaultMaskedError;
+
+ /** PBIOEFIR[48:51]
+ * spare
+ */
+ (rPBIOEFIR, bit(48|49|50|51)) ? defaultMaskedError;
+
+ /** PBIOEFIR[52]
+ * data outbnd switch int. err-links 01
+ */
+ (rPBIOEFIR, bit(52)) ? calloutBusInterface_xbus0_th_1;
+
+ /** PBIOEFIR[53]
+ * data outbnd switch int. err-links 23
+ */
+ (rPBIOEFIR, bit(53)) ? calloutBusInterface_xbus1_th_1;
+
+ /** PBIOEFIR[54]
+ * data outbnd switch int. err-links 45
+ */
+ (rPBIOEFIR, bit(54)) ? calloutBusInterface_xbus2_th_1;
+
+ /** PBIOEFIR[55]
+ * spare
+ */
+ (rPBIOEFIR, bit(55)) ? defaultMaskedError;
+
+ /** PBIOEFIR[56]
+ * data inbnd switch int. err-links 01
+ */
+ (rPBIOEFIR, bit(56)) ? calloutBusInterface_xbus0_th_1;
+
+ /** PBIOEFIR[57]
+ * data inbnd switch int. err-links 23
+ */
+ (rPBIOEFIR, bit(57)) ? calloutBusInterface_xbus1_th_1;
+
+ /** PBIOEFIR[58]
+ * data inbnd switch int. err-links 45
+ */
+ (rPBIOEFIR, bit(58)) ? calloutBusInterface_xbus2_th_1;
+
+ /** PBIOEFIR[59:61]
+ * spare
+ */
+ (rPBIOEFIR, bit(59|60|61)) ? defaultMaskedError;
+
+ /** PBIOEFIR[62]
+ * scom error
+ */
+ (rPBIOEFIR, bit(62)) ? defaultMaskedError;
+
+ /** PBIOEFIR[63]
+ * scom error
+ */
+ (rPBIOEFIR, bit(63)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip PBIOOFIR
+################################################################################
+
+rule rPBIOOFIR
+{
+ CHECK_STOP:
+ PBIOOFIR & ~PBIOOFIR_MASK & ~PBIOOFIR_ACT0 & ~PBIOOFIR_ACT1;
+ RECOVERABLE:
+ PBIOOFIR & ~PBIOOFIR_MASK & ~PBIOOFIR_ACT0 & PBIOOFIR_ACT1;
+};
+
+group gPBIOOFIR
+ filter singlebit,
+ cs_root_cause(8,11,14,17)
+{
+ /** PBIOOFIR[0]
+ * fmr00 trained
+ */
+ (rPBIOOFIR, bit(0)) ? defaultMaskedError;
+
+ /** PBIOOFIR[1]
+ * fmr01 trained
+ */
+ (rPBIOOFIR, bit(1)) ? defaultMaskedError;
+
+ /** PBIOOFIR[2]
+ * fmr02 trained
+ */
+ (rPBIOOFIR, bit(2)) ? defaultMaskedError;
+
+ /** PBIOOFIR[3]
+ * fmr03 trained
+ */
+ (rPBIOOFIR, bit(3)) ? defaultMaskedError;
+
+ /** PBIOOFIR[4]
+ * fmr04 trained
+ */
+ (rPBIOOFIR, bit(4)) ? defaultMaskedError;
+
+ /** PBIOOFIR[5]
+ * fmr05 trained
+ */
+ (rPBIOOFIR, bit(5)) ? defaultMaskedError;
+
+ /** PBIOOFIR[6]
+ * fmr06 trained
+ */
+ (rPBIOOFIR, bit(6)) ? defaultMaskedError;
+
+ /** PBIOOFIR[7]
+ * fmr07 trained
+ */
+ (rPBIOOFIR, bit(7)) ? defaultMaskedError;
+
+ /** PBIOOFIR[8]
+ * dob01 ue
+ */
+ (rPBIOOFIR, bit(8)) ? self_th_1_UERE;
+
+ /** PBIOOFIR[9]
+ * dob01 ce
+ */
+ (rPBIOOFIR, bit(9)) ? self_th_32perDay;
+
+ /** PBIOOFIR[10]
+ * dob01 sue
+ */
+ (rPBIOOFIR, bit(10)) ? defaultMaskedError;
+
+ /** PBIOOFIR[11]
+ * dob23 ue
+ */
+ (rPBIOOFIR, bit(11)) ? self_th_1_UERE;
+
+ /** PBIOOFIR[12]
+ * dob23 ce
+ */
+ (rPBIOOFIR, bit(12)) ? self_th_32perDay;
+
+ /** PBIOOFIR[13]
+ * dob23 sue
+ */
+ (rPBIOOFIR, bit(13)) ? defaultMaskedError;
+
+ /** PBIOOFIR[14]
+ * dob45 ue
+ */
+ (rPBIOOFIR, bit(14)) ? self_th_1_UERE;
+
+ /** PBIOOFIR[15]
+ * dob45 ce
+ */
+ (rPBIOOFIR, bit(15)) ? self_th_32perDay;
+
+ /** PBIOOFIR[16]
+ * dob45 sue
+ */
+ (rPBIOOFIR, bit(16)) ? defaultMaskedError;
+
+ /** PBIOOFIR[17]
+ * dob67 ue
+ */
+ (rPBIOOFIR, bit(17)) ? self_th_1_UERE;
+
+ /** PBIOOFIR[18]
+ * dob67 ce
+ */
+ (rPBIOOFIR, bit(18)) ? self_th_32perDay;
+
+ /** PBIOOFIR[19]
+ * dob67 sue
+ */
+ (rPBIOOFIR, bit(19)) ? defaultMaskedError;
+
+ /** PBIOOFIR[20]
+ * A0 even link framer error
+ */
+ (rPBIOOFIR, bit(20)) ? self_th_1;
+
+ /** PBIOOFIR[21]
+ * A0 odd framer error
+ */
+ (rPBIOOFIR, bit(21)) ? self_th_1;
+
+ /** PBIOOFIR[22]
+ * A1 even link framer error
+ */
+ (rPBIOOFIR, bit(22)) ? self_th_1;
+
+ /** PBIOOFIR[23]
+ * A1 odd link framer error
+ */
+ (rPBIOOFIR, bit(23)) ? self_th_1;
+
+ /** PBIOOFIR[24]
+ * A2 even link framer error
+ */
+ (rPBIOOFIR, bit(24)) ? self_th_1;
+
+ /** PBIOOFIR[25]
+ * A2 odd link framer error
+ */
+ (rPBIOOFIR, bit(25)) ? self_th_1;
+
+ /** PBIOOFIR[26]
+ * A3 even link framer error
+ */
+ (rPBIOOFIR, bit(26)) ? self_th_1;
+
+ /** PBIOOFIR[27]
+ * A3 odd link framer error
+ */
+ (rPBIOOFIR, bit(27)) ? self_th_1;
+
+ /** PBIOOFIR[28]
+ * parser00 attn
+ */
+ (rPBIOOFIR, bit(28)) ? obus0SmpFailure_L0;
+
+ /** PBIOOFIR[29]
+ * parser01 attn
+ */
+ (rPBIOOFIR, bit(29)) ? obus0SmpFailure_L1;
+
+ /** PBIOOFIR[30]
+ * parser02 attn
+ */
+ (rPBIOOFIR, bit(30)) ? obus1SmpFailure_L0;
+
+ /** PBIOOFIR[31]
+ * parser03 attn
+ */
+ (rPBIOOFIR, bit(31)) ? obus1SmpFailure_L1;
+
+ /** PBIOOFIR[32]
+ * parser04 attn
+ */
+ (rPBIOOFIR, bit(32)) ? obus2SmpFailure_L0;
+
+ /** PBIOOFIR[33]
+ * parser05 attn
+ */
+ (rPBIOOFIR, bit(33)) ? obus2SmpFailure_L1;
+
+ /** PBIOOFIR[34]
+ * parser06 attn
+ */
+ (rPBIOOFIR, bit(34)) ? obus3SmpFailure_L0;
+
+ /** PBIOOFIR[35]
+ * parser07 attn
+ */
+ (rPBIOOFIR, bit(35)) ? obus3SmpFailure_L1;
+
+ /** PBIOOFIR[36]
+ * mailbox 00 special attention
+ */
+ (rPBIOOFIR, bit(36)) ? defaultMaskedError;
+
+ /** PBIOOFIR[37]
+ * mailbox 01 special attention
+ */
+ (rPBIOOFIR, bit(37)) ? defaultMaskedError;
+
+ /** PBIOOFIR[38]
+ * mailbox 02 special attention
+ */
+ (rPBIOOFIR, bit(38)) ? defaultMaskedError;
+
+ /** PBIOOFIR[39]
+ * mailbox 11 special attention
+ */
+ (rPBIOOFIR, bit(39)) ? defaultMaskedError;
+
+ /** PBIOOFIR[40]
+ * mailbox 20 special attention
+ */
+ (rPBIOOFIR, bit(40)) ? defaultMaskedError;
+
+ /** PBIOOFIR[41]
+ * mailbox 21 special attention
+ */
+ (rPBIOOFIR, bit(41)) ? defaultMaskedError;
+
+ /** PBIOOFIR[42]
+ * mailbox 30 special attention
+ */
+ (rPBIOOFIR, bit(42)) ? defaultMaskedError;
+
+ /** PBIOOFIR[43]
+ * mailbox 31 special attention
+ */
+ (rPBIOOFIR, bit(43)) ? defaultMaskedError;
+
+ /** PBIOOFIR[44]
+ * mailbox 40 special attention
+ */
+ (rPBIOOFIR, bit(44)) ? defaultMaskedError;
+
+ /** PBIOOFIR[45]
+ * mailbox 41 special attention
+ */
+ (rPBIOOFIR, bit(45)) ? defaultMaskedError;
+
+ /** PBIOOFIR[46]
+ * mailbox 50 special attention
+ */
+ (rPBIOOFIR, bit(46)) ? defaultMaskedError;
+
+ /** PBIOOFIR[47]
+ * mailbox 51 special attention
+ */
+ (rPBIOOFIR, bit(47)) ? defaultMaskedError;
+
+ /** PBIOOFIR[48]
+ * mailbox 60 special attention
+ */
+ (rPBIOOFIR, bit(48)) ? defaultMaskedError;
+
+ /** PBIOOFIR[49]
+ * mailbox 61 special attention
+ */
+ (rPBIOOFIR, bit(49)) ? defaultMaskedError;
+
+ /** PBIOOFIR[50]
+ * mailbox 70 special attention
+ */
+ (rPBIOOFIR, bit(50)) ? defaultMaskedError;
+
+ /** PBIOOFIR[51]
+ * mailbox 71 special attention
+ */
+ (rPBIOOFIR, bit(51)) ? defaultMaskedError;
+
+ /** PBIOOFIR[52]
+ * data outbound switch internal-links 01
+ */
+ (rPBIOOFIR, bit(52)) ? obus0SmpFailure_LALL;
+
+ /** PBIOOFIR[53]
+ * data outbound switch internal - links 23
+ */
+ (rPBIOOFIR, bit(53)) ? obus1SmpFailure_LALL;
+
+ /** PBIOOFIR[54]
+ * data outbound switch internal-links 45
+ */
+ (rPBIOOFIR, bit(54)) ? obus2SmpFailure_LALL;
+
+ /** PBIOOFIR[55]
+ * data outbound switch internal-links 67
+ */
+ (rPBIOOFIR, bit(55)) ? obus3SmpFailure_LALL;
+
+ /** PBIOOFIR[56]
+ * data inbound switch internal-links 01
+ */
+ (rPBIOOFIR, bit(56)) ? obus0SmpFailure_LALL;
+
+ /** PBIOOFIR[57]
+ * data inbound switch internal-links 23
+ */
+ (rPBIOOFIR, bit(57)) ? obus1SmpFailure_LALL;
+
+ /** PBIOOFIR[58]
+ * data inbound switch internal-links 45
+ */
+ (rPBIOOFIR, bit(58)) ? obus2SmpFailure_LALL;
+
+ /** PBIOOFIR[59]
+ * data inbound switch internal-links 67
+ */
+ (rPBIOOFIR, bit(59)) ? obus3SmpFailure_LALL;
+
+ /** PBIOOFIR[60:61]
+ * spare
+ */
+ (rPBIOOFIR, bit(60|61)) ? defaultMaskedError;
+
+ /** PBIOOFIR[62]
+ * scom error
+ */
+ (rPBIOOFIR, bit(62)) ? defaultMaskedError;
+
+ /** PBIOOFIR[63]
+ * scom error
+ */
+ (rPBIOOFIR, bit(63)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# XB Chiplet FIR
+################################################################################
+
+rule rXB_CHIPLET_FIR
+{
+ CHECK_STOP:
+ XB_CHIPLET_CS_FIR & ~XB_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+ RECOVERABLE:
+ (XB_CHIPLET_RE_FIR >> 2) & ~XB_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+};
+
+group gXB_CHIPLET_FIR
+ filter singlebit
+{
+ /** XB_CHIPLET_FIR[3]
+ * Attention from XB_LFIR
+ */
+ (rXB_CHIPLET_FIR, bit(3)) ? analyzeXB_LFIR;
+
+ /** XB_CHIPLET_FIR[4]
+ * Attention from IOELFIR 0
+ */
+ (rXB_CHIPLET_FIR, bit(4)) ? analyzeConnectedXBUS0;
+
+ /** XB_CHIPLET_FIR[5]
+ * Attention from IOELFIR 1
+ */
+ (rXB_CHIPLET_FIR, bit(5)) ? analyzeConnectedXBUS1;
+
+ /** XB_CHIPLET_FIR[6]
+ * Attention from IOELFIR 2
+ */
+ (rXB_CHIPLET_FIR, bit(6)) ? analyzeConnectedXBUS2;
+
+ /** XB_CHIPLET_FIR[8]
+ * Attention from IOXBFIR 0
+ */
+ (rXB_CHIPLET_FIR, bit(8)) ? analyzeConnectedXBUS0;
+
+ /** XB_CHIPLET_FIR[9]
+ * Attention from IOXBFIR 1
+ */
+ (rXB_CHIPLET_FIR, bit(9)) ? analyzeConnectedXBUS1;
+
+ /** XB_CHIPLET_FIR[10]
+ * Attention from IOXBFIR 2
+ */
+ (rXB_CHIPLET_FIR, bit(10)) ? analyzeConnectedXBUS2;
+
+ /** XB_CHIPLET_FIR[11]
+ * Attention from XBPPEFIR
+ */
+ (rXB_CHIPLET_FIR, bit(11)) ? analyzeXBPPEFIR;
+
+};
+
+################################################################################
+# XB Chiplet Unit Checkstop FIR
+################################################################################
+
+rule rXB_CHIPLET_UCS_FIR
+{
+ UNIT_CS:
+ XB_CHIPLET_UCS_FIR & ~(XB_CHIPLET_UCS_FIR_MASK >> 1) & `7fffffffffffffff`;
+};
+
+group gXB_CHIPLET_UCS_FIR
+ filter singlebit
+{
+ /** XB_CHIPLET_UCS_FIR[1]
+ * Attention from IOELFIR 0
+ */
+ (rXB_CHIPLET_UCS_FIR, bit(1)) ? analyzeConnectedXBUS0;
+
+ /** XB_CHIPLET_UCS_FIR[2]
+ * Attention from IOELFIR 1
+ */
+ (rXB_CHIPLET_UCS_FIR, bit(2)) ? analyzeConnectedXBUS1;
+
+ /** XB_CHIPLET_UCS_FIR[3]
+ * Attention from IOELFIR 2
+ */
+ (rXB_CHIPLET_UCS_FIR, bit(3)) ? analyzeConnectedXBUS2;
+
+ /** XB_CHIPLET_UCS_FIR[5]
+ * Attention from IOXBFIR 0
+ */
+ (rXB_CHIPLET_UCS_FIR, bit(5)) ? analyzeConnectedXBUS0;
+
+ /** XB_CHIPLET_UCS_FIR[6]
+ * Attention from IOXBFIR 1
+ */
+ (rXB_CHIPLET_UCS_FIR, bit(6)) ? analyzeConnectedXBUS1;
+
+ /** XB_CHIPLET_UCS_FIR[7]
+ * Attention from IOXBFIR 2
+ */
+ (rXB_CHIPLET_UCS_FIR, bit(7)) ? analyzeConnectedXBUS2;
+
+ /** XB_CHIPLET_UCS_FIR[8]
+ * Attention from XBPPEFIR
+ */
+ (rXB_CHIPLET_UCS_FIR, bit(8)) ? analyzeXBPPEFIR;
+
+};
+
+################################################################################
+# P9 chip XB_LFIR
+################################################################################
+
+rule rXB_LFIR
+{
+ CHECK_STOP:
+ XB_LFIR & ~XB_LFIR_MASK & ~XB_LFIR_ACT0 & ~XB_LFIR_ACT1;
+ RECOVERABLE:
+ XB_LFIR & ~XB_LFIR_MASK & ~XB_LFIR_ACT0 & XB_LFIR_ACT1;
+};
+
+group gXB_LFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** XB_LFIR[0]
+ * CFIR internal parity error
+ */
+ (rXB_LFIR, bit(0)) ? self_th_32perDay;
+
+ /** XB_LFIR[1]
+ * Chiplet Control Reg: PCB Access Error
+ */
+ (rXB_LFIR, bit(1)) ? self_th_32perDay;
+
+ /** XB_LFIR[2]
+ * Clock Controller: PCB Access Error
+ */
+ (rXB_LFIR, bit(2)) ? self_th_32perDay;
+
+ /** XB_LFIR[3]
+ * Clock Controller: Summarized Error
+ */
+ (rXB_LFIR, bit(3)) ? self_th_32perDay;
+
+ /** XB_LFIR[4]
+ * PSCOM Logic: PCB Access Error
+ */
+ (rXB_LFIR, bit(4)) ? defaultMaskedError;
+
+ /** XB_LFIR[5]
+ * PSCOM Logic: Summarized internal errors
+ */
+ (rXB_LFIR, bit(5)) ? defaultMaskedError;
+
+ /** XB_LFIR[6]
+ * Therm Logic: Summarized internal errors
+ */
+ (rXB_LFIR, bit(6)) ? defaultMaskedError;
+
+ /** XB_LFIR[7]
+ * Therm Logic: PCB Access Error
+ */
+ (rXB_LFIR, bit(7)) ? defaultMaskedError;
+
+ /** XB_LFIR[8]
+ * Therm Logic: Temperature critical trip
+ */
+ (rXB_LFIR, bit(8)) ? defaultMaskedError;
+
+ /** XB_LFIR[9]
+ * Therm Logic: Temperature fatal trip
+ */
+ (rXB_LFIR, bit(9)) ? defaultMaskedError;
+
+ /** XB_LFIR[10]
+ * UNUSED in P9
+ */
+ (rXB_LFIR, bit(10)) ? defaultMaskedError;
+
+ /** XB_LFIR[11]
+ * Debug Logic: Scom Satelite Error
+ */
+ (rXB_LFIR, bit(11)) ? defaultMaskedError;
+
+ /** XB_LFIR[12]
+ * Scom Satellite Err - Trace0
+ */
+ (rXB_LFIR, bit(12)) ? defaultMaskedError;
+
+ /** XB_LFIR[13]
+ * Scom Satellite Err - Trace0
+ */
+ (rXB_LFIR, bit(13)) ? defaultMaskedError;
+
+ /** XB_LFIR[14]
+ * Scom Satellite Err - Trace1
+ */
+ (rXB_LFIR, bit(14)) ? defaultMaskedError;
+
+ /** XB_LFIR[15]
+ * Scom Satellite Err - Trace1
+ */
+ (rXB_LFIR, bit(15)) ? defaultMaskedError;
+
+ /** XB_LFIR[16:40]
+ * spare
+ */
+ (rXB_LFIR, bit(16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40)) ? defaultMaskedError;
+
+ /** XB_LFIR[41]
+ * Malfunction Alert or Local Checkstop
+ */
+ (rXB_LFIR, bit(41)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 chip XBPPEFIR
+################################################################################
+
+rule rXBPPEFIR
+{
+ CHECK_STOP:
+ XBPPEFIR & ~XBPPEFIR_MASK & ~XBPPEFIR_ACT0 & ~XBPPEFIR_ACT1;
+ RECOVERABLE:
+ XBPPEFIR & ~XBPPEFIR_MASK & ~XBPPEFIR_ACT0 & XBPPEFIR_ACT1;
+ UNIT_CS:
+ XBPPEFIR & ~XBPPEFIR_MASK & XBPPEFIR_ACT0 & XBPPEFIR_ACT1;
+};
+
+group gXBPPEFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** XBPPEFIR[0]
+ * PPE general error.
+ */
+ (rXBPPEFIR, bit(0)) ? threshold_and_mask_self;
+
+ /** XBPPEFIR[1]
+ * PPE general error.
+ */
+ (rXBPPEFIR, bit(1)) ? threshold_and_mask_self;
+
+ /** XBPPEFIR[2]
+ * PPE general error.
+ */
+ (rXBPPEFIR, bit(2)) ? threshold_and_mask_self;
+
+ /** XBPPEFIR[3]
+ * PPE general error.
+ */
+ (rXBPPEFIR, bit(3)) ? threshold_and_mask_self;
+
+ /** XBPPEFIR[4]
+ * PPE halted.
+ */
+ (rXBPPEFIR, bit(4)) ? defaultMaskedError;
+
+ /** XBPPEFIR[5]
+ * PPE watchdog timer timed out
+ */
+ (rXBPPEFIR, bit(5)) ? defaultMaskedError;
+
+ /** XBPPEFIR[6]
+ * MMIO data in error.
+ */
+ (rXBPPEFIR, bit(6)) ? defaultMaskedError;
+
+ /** XBPPEFIR[7]
+ * Arb missed scrub tick.
+ */
+ (rXBPPEFIR, bit(7)) ? threshold_and_mask_self;
+
+ /** XBPPEFIR[8]
+ * Arb ary ue error.
+ */
+ (rXBPPEFIR, bit(8)) ? self_th_1;
+
+ /** XBPPEFIR[9]
+ * Arb ary ce error.
+ */
+ (rXBPPEFIR, bit(9)) ? threshold_and_mask_self;
+
+ /** XBPPEFIR[10]
+ * spare
+ */
+ (rXBPPEFIR, bit(10)) ? defaultMaskedError;
+
+ /** XBPPEFIR[11]
+ * FIR_SCOMFIR_ERROR
+ */
+ (rXBPPEFIR, bit(11)) ? defaultMaskedError;
+
+ /** XBPPEFIR[12]
+ * FIR_SCOMFIR_ERROR
+ */
+ (rXBPPEFIR, bit(12)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# PCI0 Chiplet FIR
+################################################################################
+
+rule rPCI0_CHIPLET_FIR
+{
+ CHECK_STOP:
+ PCI0_CHIPLET_CS_FIR & ~PCI0_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+ RECOVERABLE:
+ (PCI0_CHIPLET_RE_FIR >> 2) & ~PCI0_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+};
+
+group gPCI0_CHIPLET_FIR
+ filter singlebit
+{
+ /** PCI0_CHIPLET_FIR[3]
+ * Attention from PCI_LFIR 0
+ */
+ (rPCI0_CHIPLET_FIR, bit(3)) ? analyzeConnectedPEC0;
+
+ /** PCI0_CHIPLET_FIR[4]
+ * Attention from ETUFIR 0
+ */
+ (rPCI0_CHIPLET_FIR, bit(4)) ? analyzeConnectedPHB0;
+
+ /** PCI0_CHIPLET_FIR[5]
+ * Attention from IOPCIFIR 0
+ */
+ (rPCI0_CHIPLET_FIR, bit(5)) ? analyzeConnectedPEC0;
+
+ /** PCI0_CHIPLET_FIR[6]
+ * Attention from PCIFIR 0
+ */
+ (rPCI0_CHIPLET_FIR, bit(6)) ? analyzeConnectedPHB0;
+
+};
+
+################################################################################
+# PCI1 Chiplet FIR
+################################################################################
+
+rule rPCI1_CHIPLET_FIR
+{
+ CHECK_STOP:
+ PCI1_CHIPLET_CS_FIR & ~PCI1_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+ RECOVERABLE:
+ (PCI1_CHIPLET_RE_FIR >> 2) & ~PCI1_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+};
+
+group gPCI1_CHIPLET_FIR
+ filter singlebit
+{
+ /** PCI1_CHIPLET_FIR[3]
+ * Attention from PCI_LFIR 1
+ */
+ (rPCI1_CHIPLET_FIR, bit(3)) ? analyzeConnectedPEC1;
+
+ /** PCI1_CHIPLET_FIR[4]
+ * Attention from ETUFIR 1
+ */
+ (rPCI1_CHIPLET_FIR, bit(4)) ? analyzeConnectedPHB1;
+
+ /** PCI1_CHIPLET_FIR[5]
+ * Attention from ETUFIR 2
+ */
+ (rPCI1_CHIPLET_FIR, bit(5)) ? analyzeConnectedPHB2;
+
+ /** PCI1_CHIPLET_FIR[6]
+ * Attention from IOPCIFIR 1
+ */
+ (rPCI1_CHIPLET_FIR, bit(6)) ? analyzeConnectedPEC1;
+
+ /** PCI1_CHIPLET_FIR[7]
+ * Attention from PCIFIR 1
+ */
+ (rPCI1_CHIPLET_FIR, bit(7)) ? analyzeConnectedPHB1;
+
+ /** PCI1_CHIPLET_FIR[8]
+ * Attention from PCIFIR 2
+ */
+ (rPCI1_CHIPLET_FIR, bit(8)) ? analyzeConnectedPHB2;
+
+};
+
+################################################################################
+# PCI2 Chiplet FIR
+################################################################################
+
+rule rPCI2_CHIPLET_FIR
+{
+ CHECK_STOP:
+ PCI2_CHIPLET_CS_FIR & ~PCI2_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+ RECOVERABLE:
+ (PCI2_CHIPLET_RE_FIR >> 2) & ~PCI2_CHIPLET_FIR_MASK & `1fffffffffffffff`;
+};
+
+group gPCI2_CHIPLET_FIR
+ filter singlebit
+{
+ /** PCI2_CHIPLET_FIR[3]
+ * Attention from PCI_LFIR 2
+ */
+ (rPCI2_CHIPLET_FIR, bit(3)) ? analyzeConnectedPEC2;
+
+ /** PCI2_CHIPLET_FIR[4]
+ * Attention from ETUFIR 3
+ */
+ (rPCI2_CHIPLET_FIR, bit(4)) ? analyzeConnectedPHB3;
+
+ /** PCI2_CHIPLET_FIR[5]
+ * Attention from ETUFIR 4
+ */
+ (rPCI2_CHIPLET_FIR, bit(5)) ? analyzeConnectedPHB4;
+
+ /** PCI2_CHIPLET_FIR[6]
+ * Attention from ETUFIR 5
+ */
+ (rPCI2_CHIPLET_FIR, bit(6)) ? analyzeConnectedPHB5;
+
+ /** PCI2_CHIPLET_FIR[7]
+ * Attention from IOPCIFIR 2
+ */
+ (rPCI2_CHIPLET_FIR, bit(7)) ? analyzeConnectedPEC2;
+
+ /** PCI2_CHIPLET_FIR[8]
+ * Attention from PCIFIR 3
+ */
+ (rPCI2_CHIPLET_FIR, bit(8)) ? analyzeConnectedPHB3;
+
+ /** PCI2_CHIPLET_FIR[9]
+ * Attention from PCIFIR 4
+ */
+ (rPCI2_CHIPLET_FIR, bit(9)) ? analyzeConnectedPHB4;
+
+ /** PCI2_CHIPLET_FIR[10]
+ * Attention from PCIFIR 5
+ */
+ (rPCI2_CHIPLET_FIR, bit(10)) ? analyzeConnectedPHB5;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "p9_common_proc_actions.rule";
+.include "axone_proc_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_proc_actions.rule b/src/usr/diag/prdf/common/plat/axone/axone_proc_actions.rule
new file mode 100644
index 000000000..b6e056498
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_proc_actions.rule
@@ -0,0 +1,42 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_proc_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
+
+################################################################################
+# Analyze connected
+################################################################################
+
+actionclass analyzeConnectedNPU0 { analyze(connected(TYPE_NPU, 0)); };
+actionclass analyzeConnectedNPU1 { analyze(connected(TYPE_NPU, 1)); };
+actionclass analyzeConnectedNPU2 { analyze(connected(TYPE_NPU, 2)); };
+actionclass analyzeConnectedOBUS1 { analyze(connected(TYPE_OBUS, 1)); };
+actionclass analyzeConnectedOBUS2 { analyze(connected(TYPE_OBUS, 2)); };
+actionclass analyzeConnectedXBUS0 { analyze(connected(TYPE_XBUS, 0)); };
+actionclass analyzeConnectedMC0 { analyze(connected(TYPE_MC, 0)); };
+actionclass analyzeConnectedMC1 { analyze(connected(TYPE_MC, 1)); };
+actionclass analyzeConnectedMI0 { analyze(connected(TYPE_MI, 0)); };
+actionclass analyzeConnectedMI1 { analyze(connected(TYPE_MI, 1)); };
+actionclass analyzeConnectedMI2 { analyze(connected(TYPE_MI, 2)); };
+actionclass analyzeConnectedMI3 { analyze(connected(TYPE_MI, 3)); };
+
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_xbus.rule b/src/usr/diag/prdf/common/plat/axone/axone_xbus.rule
new file mode 100644
index 000000000..8c4b8a06a
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/axone_xbus.rule
@@ -0,0 +1,593 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/axone_xbus.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
+
+chip axone_xbus
+{
+ name "AXONE XBUS target";
+ targettype TYPE_XBUS;
+ sigoff 0x0000;
+ dump DUMP_CONTENT_HW;
+ scomlen 64;
+
+# Import signatures
+.include "prdfLaneRepairExtraSig.H";
+
+ #############################################################################
+ # #
+ # ###### #
+ # # # ###### #### ### #### ##### ###### ##### #### #
+ # # # # # # # # # # # # # #
+ # ###### ##### # # #### # ##### # # #### #
+ # # # # # ### # # # # ##### # #
+ # # # # # # # # # # # # # # # #
+ # # # ###### #### ### #### # ###### # # #### #
+ # #
+ #############################################################################
+
+ ############################################################################
+ # P9 XBUS target IOXBFIR
+ ############################################################################
+
+ register IOXBFIR
+ {
+ name "P9 XBUS target IOXBFIR";
+ scomaddr 0x06010c00;
+ reset (&, 0x06010c01);
+ mask (|, 0x06010c05);
+ capture group default;
+ };
+
+ register IOXBFIR_MASK
+ {
+ name "P9 XBUS target IOXBFIR MASK";
+ scomaddr 0x06010c03;
+ capture group default;
+ };
+
+ register IOXBFIR_ACT0
+ {
+ name "P9 XBUS target IOXBFIR ACT0";
+ scomaddr 0x06010c06;
+ capture group default;
+ capture req nonzero("IOXBFIR");
+ };
+
+ register IOXBFIR_ACT1
+ {
+ name "P9 XBUS target IOXBFIR ACT1";
+ scomaddr 0x06010c07;
+ capture group default;
+ capture req nonzero("IOXBFIR");
+ };
+
+ ############################################################################
+ # P9 XBUS target IOELFIR
+ ############################################################################
+
+ register IOELFIR
+ {
+ name "P9 XBUS target IOELFIR";
+ scomaddr 0x06011800;
+ reset (&, 0x06011801);
+ mask (|, 0x06011805);
+ capture group default;
+ };
+
+ register IOELFIR_MASK
+ {
+ name "P9 XBUS target IOELFIR MASK";
+ scomaddr 0x06011803;
+ capture group default;
+ };
+
+ register IOELFIR_ACT0
+ {
+ name "P9 XBUS target IOELFIR ACT0";
+ scomaddr 0x06011806;
+ capture group default;
+ capture req nonzero("IOELFIR");
+ };
+
+ register IOELFIR_ACT1
+ {
+ name "P9 XBUS target IOELFIR ACT1";
+ scomaddr 0x06011807;
+ capture group default;
+ capture req nonzero("IOELFIR");
+ };
+
+# Include registers not defined by the xml
+.include "p9_common_xbus_regs.rule";
+
+};
+
+ ##############################################################################
+ # #
+ # #### # #
+ # # # # # # ##### ### # # # ## ##### ### ### # # ### #
+ # # # # # # # # # # # # # # # # # ## # # #
+ # #### # # # #### ### # ####### # # # # # # # # ### #
+ # # # # # # # # # # # # # # # # # # ## # #
+ # # # ### #### ##### ### # # # ## # ### ### # # ### #
+ # #
+ ##############################################################################
+
+################################################################################
+# Summary for XBUS
+################################################################################
+
+rule rXBUS
+{
+ CHECK_STOP:
+ summary( 0, rIOXBFIR ) |
+ summary( 1, rIOELFIR );
+
+ RECOVERABLE:
+ summary( 0, rIOXBFIR ) |
+ summary( 1, rIOELFIR );
+
+ UNIT_CS:
+ summary( 0, rIOXBFIR ) |
+ summary( 1, rIOELFIR );
+
+};
+
+group gXBUS attntype CHECK_STOP, RECOVERABLE, UNIT_CS
+ filter singlebit
+{
+ (rXBUS, bit(0)) ? analyzeIOXBFIR;
+ (rXBUS, bit(1)) ? analyzeIOELFIR;
+};
+
+################################################################################
+# P9 XBUS target IOXBFIR
+################################################################################
+
+rule rIOXBFIR
+{
+ CHECK_STOP:
+ IOXBFIR & ~IOXBFIR_MASK & ~IOXBFIR_ACT0 & ~IOXBFIR_ACT1;
+ RECOVERABLE:
+ IOXBFIR & ~IOXBFIR_MASK & ~IOXBFIR_ACT0 & IOXBFIR_ACT1;
+ UNIT_CS:
+ IOXBFIR & ~IOXBFIR_MASK & IOXBFIR_ACT0 & IOXBFIR_ACT1;
+};
+
+group gIOXBFIR
+ filter singlebit,
+ cs_root_cause
+{
+ /** IOXBFIR[0]
+ * RX_INVALID_STATE_OR_PARITY_ERROR
+ */
+ (rIOXBFIR, bit(0)) ? defaultMaskedError;
+
+ /** IOXBFIR[1]
+ * TX_INVALID_STATE_OR_PARITY_ERROR
+ */
+ (rIOXBFIR, bit(1)) ? defaultMaskedError;
+
+ /** IOXBFIR[2]
+ * GCR_HANG_ERROR
+ */
+ (rIOXBFIR, bit(2)) ? self_th_1;
+
+ /** IOXBFIR[3:7]
+ * spare
+ */
+ (rIOXBFIR, bit(3|4|5|6|7)) ? defaultMaskedError;
+
+ /** IOXBFIR[8]
+ * RX_BUS0_TRAINING_ERROR
+ */
+ (rIOXBFIR, bit(8)) ? defaultMaskedError;
+
+ /** IOXBFIR[9]
+ * Spare lane deployed on clock group 0
+ */
+ (rIOXBFIR, bit(9)) ? spareDeployed_xbus_clkgrp0;
+
+ /** IOXBFIR[10]
+ * Max spares exceeded on clock group 0
+ */
+ (rIOXBFIR, bit(10)) ? maxSparesExceeded_xbus_clkgrp0;
+
+ /** IOXBFIR[11]
+ * RX_BUS0_RECAL_OR_DYN_REPAIR_ERROR
+ */
+ (rIOXBFIR, bit(11)) ? defaultMaskedError;
+
+ /** IOXBFIR[12]
+ * Too many bus errors on clock group 0
+ */
+ (rIOXBFIR, bit(12)) ? tooManyBusErrors_xbus_clkgrp0;
+
+ /** IOXBFIR[13:15]
+ * spare
+ */
+ (rIOXBFIR, bit(13|14|15)) ? defaultMaskedError;
+
+ /** IOXBFIR[16]
+ * RX_BUS1_TRAINING_ERROR
+ */
+ (rIOXBFIR, bit(16)) ? defaultMaskedError;
+
+ /** IOXBFIR[17]
+ * Spare lane deployed on clock group 1
+ */
+ (rIOXBFIR, bit(17)) ? spareDeployed_xbus_clkgrp1;
+
+ /** IOXBFIR[18]
+ * Max spares exceeded on clock group 1
+ */
+ (rIOXBFIR, bit(18)) ? maxSparesExceeded_xbus_clkgrp1;
+
+ /** IOXBFIR[19]
+ * RX_BUS1_RECAL_OR_DYN_REPAIR_ERROR
+ */
+ (rIOXBFIR, bit(19)) ? defaultMaskedError;
+
+ /** IOXBFIR[20]
+ * Too many bus errors on clock group 1
+ */
+ (rIOXBFIR, bit(20)) ? tooManyBusErrors_xbus_clkgrp1;
+
+ /** IOXBFIR[21:23]
+ * spare
+ */
+ (rIOXBFIR, bit(21|22|23)) ? defaultMaskedError;
+
+ /** IOXBFIR[24]
+ * RX_BUS2_TRAINING_ERROR
+ */
+ (rIOXBFIR, bit(24)) ? defaultMaskedError;
+
+ /** IOXBFIR[25]
+ * RX_BUS2_SPARE_DEPLOYED
+ */
+ (rIOXBFIR, bit(25)) ? defaultMaskedError;
+
+ /** IOXBFIR[26]
+ * RX_BUS2_MAX_SPARES_EXCEEDED
+ */
+ (rIOXBFIR, bit(26)) ? defaultMaskedError;
+
+ /** IOXBFIR[27]
+ * RX_BUS2_RECAL_OR_DYN_REPAIR_ERROR
+ */
+ (rIOXBFIR, bit(27)) ? defaultMaskedError;
+
+ /** IOXBFIR[28]
+ * RX_BUS2_TOO_MANY_BUS_ERRORS
+ */
+ (rIOXBFIR, bit(28)) ? defaultMaskedError;
+
+ /** IOXBFIR[29:31]
+ * spare
+ */
+ (rIOXBFIR, bit(29|30|31)) ? defaultMaskedError;
+
+ /** IOXBFIR[32]
+ * RX_BUS3_TRAINING_ERROR
+ */
+ (rIOXBFIR, bit(32)) ? defaultMaskedError;
+
+ /** IOXBFIR[33]
+ * RX_BUS3_SPARE_DEPLOYED
+ */
+ (rIOXBFIR, bit(33)) ? defaultMaskedError;
+
+ /** IOXBFIR[34]
+ * RX_BUS3_MAX_SPARES_EXCEEDED
+ */
+ (rIOXBFIR, bit(34)) ? defaultMaskedError;
+
+ /** IOXBFIR[35]
+ * RX_BUS3_RECAL_OR_DYN_REPAIR_ERROR
+ */
+ (rIOXBFIR, bit(35)) ? defaultMaskedError;
+
+ /** IOXBFIR[36]
+ * RX_BUS3_TOO_MANY_BUS_ERRORS
+ */
+ (rIOXBFIR, bit(36)) ? defaultMaskedError;
+
+ /** IOXBFIR[37:39]
+ * spare
+ */
+ (rIOXBFIR, bit(37|38|39)) ? defaultMaskedError;
+
+ /** IOXBFIR[40]
+ * RX_BUS4_TRAINING_ERROR
+ */
+ (rIOXBFIR, bit(40)) ? defaultMaskedError;
+
+ /** IOXBFIR[41]
+ * RX_BUS4_SPARE_DEPLOYED
+ */
+ (rIOXBFIR, bit(41)) ? defaultMaskedError;
+
+ /** IOXBFIR[42]
+ * RX_BUS4_MAX_SPARES_EXCEEDED
+ */
+ (rIOXBFIR, bit(42)) ? defaultMaskedError;
+
+ /** IOXBFIR[43]
+ * RX_BUS4_RECAL_OR_DYN_REPAIR_ERROR
+ */
+ (rIOXBFIR, bit(43)) ? defaultMaskedError;
+
+ /** IOXBFIR[44]
+ * RX_BUS4_TOO_MANY_BUS_ERRORS
+ */
+ (rIOXBFIR, bit(44)) ? defaultMaskedError;
+
+ /** IOXBFIR[45:47]
+ * spare
+ */
+ (rIOXBFIR, bit(45|46|47)) ? defaultMaskedError;
+
+ /** IOXBFIR[48]
+ * SCOMFIR_ERROR
+ */
+ (rIOXBFIR, bit(48)) ? defaultMaskedError;
+
+ /** IOXBFIR[49]
+ * SCOMFIR_ERROR_CLONE
+ */
+ (rIOXBFIR, bit(49)) ? defaultMaskedError;
+
+};
+
+################################################################################
+# P9 XBUS target IOELFIR
+################################################################################
+
+rule rIOELFIR
+{
+ CHECK_STOP:
+ IOELFIR & ~IOELFIR_MASK & ~IOELFIR_ACT0 & ~IOELFIR_ACT1;
+ RECOVERABLE:
+ IOELFIR & ~IOELFIR_MASK & ~IOELFIR_ACT0 & IOELFIR_ACT1;
+ UNIT_CS:
+ IOELFIR & ~IOELFIR_MASK & IOELFIR_ACT0 & IOELFIR_ACT1;
+};
+
+group gIOELFIR
+ filter singlebit,
+ cs_root_cause(54,55,56,57,58,59)
+{
+ /** IOELFIR[0]
+ * link0 trained
+ */
+ (rIOELFIR, bit(0)) ? defaultMaskedError;
+
+ /** IOELFIR[1]
+ * link1 trained
+ */
+ (rIOELFIR, bit(1)) ? defaultMaskedError;
+
+ /** IOELFIR[2:3]
+ * spare
+ */
+ (rIOELFIR, bit(2|3)) ? defaultMaskedError;
+
+ /** IOELFIR[4]
+ * link0 replay threshold
+ */
+ (rIOELFIR, bit(4)) ? defaultMaskedError;
+
+ /** IOELFIR[5]
+ * link1 replay threshold
+ */
+ (rIOELFIR, bit(5)) ? defaultMaskedError;
+
+ /** IOELFIR[6]
+ * link0 crc error
+ */
+ (rIOELFIR, bit(6)) ? threshold_and_mask_self;
+
+ /** IOELFIR[7]
+ * link1 crc error
+ */
+ (rIOELFIR, bit(7)) ? threshold_and_mask_self;
+
+ /** IOELFIR[8]
+ * link0 nak received
+ */
+ (rIOELFIR, bit(8)) ? defaultMaskedError;
+
+ /** IOELFIR[9]
+ * link1 nak received
+ */
+ (rIOELFIR, bit(9)) ? defaultMaskedError;
+
+ /** IOELFIR[10]
+ * link0 replay buffer full
+ */
+ (rIOELFIR, bit(10)) ? defaultMaskedError;
+
+ /** IOELFIR[11]
+ * link1 replay buffer full
+ */
+ (rIOELFIR, bit(11)) ? defaultMaskedError;
+
+ /** IOELFIR[12]
+ * link0 sl ecc threshold
+ */
+ (rIOELFIR, bit(12)) ? defaultMaskedError;
+
+ /** IOELFIR[13]
+ * link1 sl ecc threshold
+ */
+ (rIOELFIR, bit(13)) ? defaultMaskedError;
+
+ /** IOELFIR[14]
+ * link0 sl ecc correctable
+ */
+ (rIOELFIR, bit(14)) ? threshold_and_mask_self;
+
+ /** IOELFIR[15]
+ * link1 sl ecc correctable
+ */
+ (rIOELFIR, bit(15)) ? threshold_and_mask_self;
+
+ /** IOELFIR[16]
+ * link0 sl ecc ue
+ */
+ (rIOELFIR, bit(16)) ? threshold_and_mask_self;
+
+ /** IOELFIR[17]
+ * link1 sl ecc ue
+ */
+ (rIOELFIR, bit(17)) ? threshold_and_mask_self;
+
+ /** IOELFIR[18:39]
+ * spare
+ */
+ (rIOELFIR, bit(18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39)) ? defaultMaskedError;
+
+ /** IOELFIR[40]
+ * link0 tcomplete bad
+ */
+ (rIOELFIR, bit(40)) ? defaultMaskedError;
+
+ /** IOELFIR[41]
+ * link1 tcomplete bad
+ */
+ (rIOELFIR, bit(41)) ? defaultMaskedError;
+
+ /** IOELFIR[42:43]
+ * spare
+ */
+ (rIOELFIR, bit(42|43)) ? defaultMaskedError;
+
+ /** IOELFIR[44]
+ * link0 spare done
+ */
+ (rIOELFIR, bit(44)) ? defaultMaskedError;
+
+ /** IOELFIR[45]
+ * link1 spare done
+ */
+ (rIOELFIR, bit(45)) ? defaultMaskedError;
+
+ /** IOELFIR[46]
+ * link0 too many crc errors
+ */
+ (rIOELFIR, bit(46)) ? defaultMaskedError;
+
+ /** IOELFIR[47]
+ * link1 too many crc errors
+ */
+ (rIOELFIR, bit(47)) ? defaultMaskedError;
+
+ /** IOELFIR[48:50]
+ * spare
+ */
+ (rIOELFIR, bit(48|49|50)) ? defaultMaskedError;
+
+ /** IOELFIR[51]
+ * psave invalid state (internal error)
+ */
+ (rIOELFIR, bit(51)) ? self_th_1;
+
+ /** IOELFIR[52]
+ * link0 correctable array error
+ */
+ (rIOELFIR, bit(52)) ? calloutBusInterface_th_32perDay;
+
+ /** IOELFIR[53]
+ * link1 correctable array error
+ */
+ (rIOELFIR, bit(53)) ? calloutBusInterface_th_32perDay;
+
+ /** IOELFIR[54]
+ * link0 uncorrectable array error
+ */
+ (rIOELFIR, bit(54)) ? calloutBusInterface_th_32perDay;
+
+ /** IOELFIR[55]
+ * link1 uncorrectable array error
+ */
+ (rIOELFIR, bit(55)) ? calloutBusInterface_th_32perDay;
+
+ /** IOELFIR[56]
+ * link0 training failed
+ */
+ (rIOELFIR, bit(56)) ? calloutBusInterface_th_32perDay;
+
+ /** IOELFIR[57]
+ * link1 training failed
+ */
+ (rIOELFIR, bit(57)) ? calloutBusInterface_th_32perDay;
+
+ /** IOELFIR[58]
+ * link0 unrecoverable error
+ */
+ (rIOELFIR, bit(58)) ? calloutBusInterface_th_32perDay;
+
+ /** IOELFIR[59]
+ * link1 unrecoverable error
+ */
+ (rIOELFIR, bit(59)) ? calloutBusInterface_th_32perDay;
+
+ /** IOELFIR[60]
+ * link0 internal error
+ */
+ (rIOELFIR, bit(60)) ? self_th_32perDay;
+
+ /** IOELFIR[61]
+ * link1 internal error
+ */
+ (rIOELFIR, bit(61)) ? self_th_32perDay;
+
+ /** IOELFIR[62]
+ * fir scom err dup
+ */
+ (rIOELFIR, bit(62)) ? defaultMaskedError;
+
+ /** IOELFIR[63]
+ * fir scom err
+ */
+ (rIOELFIR, bit(63)) ? defaultMaskedError;
+
+};
+
+ ##############################################################################
+ # #
+ # # ### #
+ # # # ## ##### ### ### # # # # # # ### ### ### ### #
+ # # # # # # # # # ## # # # # # # # # # #
+ # ####### # # # # # # # # # # ##### ### ### ## ### #
+ # # # # # # # # # # ## # # # # # # # # # #
+ # # # ## # ### ### # # ### ### # # ### ### ### ### #
+ # #
+ ##############################################################################
+
+# Include the actions defined for this target
+.include "p9_common_actions.rule";
+.include "p9_common_xbus_actions.rule";
+
diff --git a/src/usr/diag/prdf/common/plat/axone/prdf_plat_axone.mk b/src/usr/diag/prdf/common/plat/axone/prdf_plat_axone.mk
new file mode 100644
index 000000000..ea76f9121
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/axone/prdf_plat_axone.mk
@@ -0,0 +1,41 @@
+# IBM_PROLOG_BEGIN_TAG
+# This is an automatically generated prolog.
+#
+# $Source: src/usr/diag/prdf/common/plat/axone/prdf_plat_axone.mk $
+#
+# 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
+
+# NOTE: PRD_SRC_PATH must be defined before including this file.
+
+################################################################################
+# Paths common to both FSP and Hostboot
+################################################################################
+
+prd_vpath += ${PRD_SRC_PATH}/common/plat/axone
+
+prd_incpath += ${PRD_SRC_PATH}/common/plat/axone
+
+################################################################################
+# Object files common to both FSP and Hostboot
+################################################################################
+
+# plat/cumulus/ (rule plugin related)
+
diff --git a/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C b/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C
index 2e72db2f4..46c05c862 100644
--- a/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C
+++ b/src/usr/diag/prdf/common/plugins/prdfLogParse_common.C
@@ -191,6 +191,13 @@ void getTargetInfo( HUID i_chipId, TARGETING::TYPE & o_targetType,
l_node, l_chip, l_chiplet );
break;
+ case TYPE_NPU:
+ l_chip = l_chip / MAX_NPU_PER_PROC;
+ l_chiplet = l_chiplet % MAX_NPU_PER_PROC;
+ snprintf( o_chipName, i_sz_chipName, "npu(n%dp%dc%d)",
+ l_node, l_chip, l_chiplet );
+ break;
+
case TYPE_PEC:
l_chip = l_chip / MAX_PEC_PER_PROC;
l_chiplet = l_chiplet % MAX_PEC_PER_PROC;
@@ -261,6 +268,20 @@ void getTargetInfo( HUID i_chipId, TARGETING::TYPE & o_targetType,
l_node, l_chip, l_chiplet );
break;
+ case TYPE_MCC:
+ l_chip = l_chip / MAX_MCC_PER_PROC;
+ l_chiplet = l_chiplet % MAX_MCC_PER_PROC;
+ snprintf( o_chipName, i_sz_chipName, "mcc(n%dp%dc%d)",
+ l_node, l_chip, l_chiplet );
+ break;
+
+ case TYPE_OMIC:
+ l_chip = l_chip / MAX_OMIC_PER_PROC;
+ l_chiplet = l_chiplet % MAX_OMIC_PER_PROC;
+ snprintf( o_chipName, i_sz_chipName, "omic(n%dp%dc%d)",
+ l_node, l_chip, l_chiplet );
+ break;
+
case TYPE_MEMBUF:
snprintf( o_chipName, i_sz_chipName, "mb(n%dp%d)",
l_node, l_chip );
diff --git a/src/usr/diag/prdf/common/plugins/prdfParserEnums.H b/src/usr/diag/prdf/common/plugins/prdfParserEnums.H
index 05dde7269..78232ba68 100644
--- a/src/usr/diag/prdf/common/plugins/prdfParserEnums.H
+++ b/src/usr/diag/prdf/common/plugins/prdfParserEnums.H
@@ -100,10 +100,17 @@ enum PositionBounds
MAX_L4_PER_MEMBUF = 1,
MAX_MCC_PER_MI = 2,
- MAX_OMI_PER_MCC = 2,
+ MAX_MCC_PER_MC = MAX_MCC_PER_MI * MAX_MI_PER_MC,
+ MAX_MCC_PER_PROC = MAX_MCC_PER_MC * MAX_MC_PER_PROC,
+
MAX_OMIC_PER_MC = 3,
+ MAX_OMIC_PER_PROC = MAX_OMIC_PER_MC * MAX_MC_PER_PROC,
+
+ MAX_OMI_PER_MCC = 2,
MAX_OMI_PER_OMIC = 3,
+
MAX_OCMB_PER_OMI = 1,
+
MAX_NPU_PER_PROC = 3,
INVALID_POSITION_BOUND = 0xffffffff,
diff --git a/src/usr/diag/prdf/common/rule/prdfRuleFiles.C b/src/usr/diag/prdf/common/rule/prdfRuleFiles.C
index 0c6f7c03a..4d50ced64 100755
--- a/src/usr/diag/prdf/common/rule/prdfRuleFiles.C
+++ b/src/usr/diag/prdf/common/rule/prdfRuleFiles.C
@@ -61,6 +61,22 @@ namespace PRDF
const char * cumulus_mi = "cumulus_mi";
const char * cumulus_dmi = "cumulus_dmi";
+ // P9 Axone Chip
+ const char * axone_proc = "axone_proc";
+ const char * axone_eq = "axone_eq";
+ const char * axone_ex = "axone_ex";
+ const char * axone_ec = "axone_ec";
+ const char * axone_capp = "axone_capp";
+ const char * axone_npu = "axone_npu";
+ const char * axone_pec = "axone_pec";
+ const char * axone_phb = "axone_phb";
+ const char * axone_xbus = "axone_xbus";
+ const char * axone_obus = "axone_obus";
+ const char * axone_mc = "axone_mc";
+ const char * axone_mi = "axone_mi";
+ const char * axone_mcc = "axone_mcc";
+ const char * axone_omic = "axone_omic";
+
// Centaur Chip
const char * centaur_membuf = "centaur_membuf";
const char * centaur_mba = "centaur_mba";
diff --git a/src/usr/diag/prdf/common/rule/prdfRuleFiles.H b/src/usr/diag/prdf/common/rule/prdfRuleFiles.H
index ecb227184..f62f4beb0 100755
--- a/src/usr/diag/prdf/common/rule/prdfRuleFiles.H
+++ b/src/usr/diag/prdf/common/rule/prdfRuleFiles.H
@@ -62,6 +62,22 @@ namespace PRDF
extern const char * cumulus_mi;
extern const char * cumulus_dmi;
+ // P9 Axone Chip
+ extern const char * axone_proc;
+ extern const char * axone_eq;
+ extern const char * axone_ex;
+ extern const char * axone_ec;
+ extern const char * axone_capp;
+ extern const char * axone_npu;
+ extern const char * axone_pec;
+ extern const char * axone_phb;
+ extern const char * axone_xbus;
+ extern const char * axone_obus;
+ extern const char * axone_mc;
+ extern const char * axone_mi;
+ extern const char * axone_mcc;
+ extern const char * axone_omic;
+
// Centaur Chip
extern const char * centaur_membuf;
extern const char * centaur_mba;
diff --git a/src/usr/diag/prdf/common/rule/prdf_rule.mk b/src/usr/diag/prdf/common/rule/prdf_rule.mk
index 62f95a676..704210d5d 100644
--- a/src/usr/diag/prdf/common/rule/prdf_rule.mk
+++ b/src/usr/diag/prdf/common/rule/prdf_rule.mk
@@ -51,6 +51,22 @@ PRDR_RULE_TABLES += cumulus_mc.prf
PRDR_RULE_TABLES += cumulus_mi.prf
PRDR_RULE_TABLES += cumulus_dmi.prf
+# P9 Axone Chip
+PRDR_RULE_TABLES += axone_proc.prf
+PRDR_RULE_TABLES += axone_eq.prf
+PRDR_RULE_TABLES += axone_ex.prf
+PRDR_RULE_TABLES += axone_ec.prf
+PRDR_RULE_TABLES += axone_capp.prf
+PRDR_RULE_TABLES += axone_npu.prf
+PRDR_RULE_TABLES += axone_pec.prf
+PRDR_RULE_TABLES += axone_phb.prf
+PRDR_RULE_TABLES += axone_xbus.prf
+PRDR_RULE_TABLES += axone_obus.prf
+PRDR_RULE_TABLES += axone_mc.prf
+PRDR_RULE_TABLES += axone_mi.prf
+PRDR_RULE_TABLES += axone_mcc.prf
+PRDR_RULE_TABLES += axone_omic.prf
+
# Centaur Chip
PRDR_RULE_TABLES += centaur_membuf.prf
PRDR_RULE_TABLES += centaur_mba.prf
diff --git a/src/usr/diag/prdf/rule/makefile b/src/usr/diag/prdf/rule/makefile
index ef13022eb..dccd386af 100755
--- a/src/usr/diag/prdf/rule/makefile
+++ b/src/usr/diag/prdf/rule/makefile
@@ -206,12 +206,14 @@ ${PRDR_CMP_PATH}: ${PRDR_CMP_YACC_o_PATH} ${PRDR_CMP_FLEX_o_PATH} \
vpath %.rule \
../common/plat/p9 \
+ ../common/plat/axone \
../common/plat/centaur \
../common/plat/cumulus \
../common/plat/mem \
../common/plat/nimbus
PRDRPP_SEARCHDIRS = -I../common/plat/p9 \
+ -I../common/plat/axone \
-I../common/plat/centaur \
-I../common/plat/cumulus \
-I../common/plat/mem \
OpenPOWER on IntegriCloud