diff options
Diffstat (limited to 'src/usr')
17 files changed, 9776 insertions, 114 deletions
diff --git a/src/usr/diag/prdf/common/framework/resolution/prdfCalloutMap.H b/src/usr/diag/prdf/common/framework/resolution/prdfCalloutMap.H index 7d007644f..d6e5156bc 100644 --- a/src/usr/diag/prdf/common/framework/resolution/prdfCalloutMap.H +++ b/src/usr/diag/prdf/common/framework/resolution/prdfCalloutMap.H @@ -189,6 +189,9 @@ PRDF_TARGET_TYPE_ALIAS( TYPE_PSI, TARGETING::TYPE_PSI ) PRDF_TARGET_TYPE_ALIAS( TYPE_MCBIST, TARGETING::TYPE_MCBIST ) PRDF_TARGET_TYPE_ALIAS( TYPE_MCS, TARGETING::TYPE_MCS ) 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_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/p9/p9_cumulus.rule b/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule new file mode 100644 index 000000000..e2fc371d4 --- /dev/null +++ b/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule @@ -0,0 +1,8002 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2017 +# [+] 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 p9_cumulus +{ + name "P9 Cumulus chip"; + targettype TYPE_PROC; + sigoff 0x9200; + 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 req funccall("isUcsFirAccessible"); + capture group default; + }; + + ############################################################################ + # Global Host Attention FIR + ############################################################################ + + register GLOBAL_HA_FIR + { + name "Global Host Attention FIR"; + scomaddr 0x50040009; + capture req funccall("isHostAttnFirAccessible"); + 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; + }; + + ############################################################################ + # N2 Chiplet Unit Checkstop FIR + ############################################################################ + + register N2_CHIPLET_UCS_FIR + { + name "N2 Chiplet Unit Checkstop FIR"; + scomaddr 0x04040018; + capture group default; + }; + + register N2_CHIPLET_UCS_FIR_MASK + { + name "N2 Chiplet Unit Checkstop FIR MASK"; + scomaddr 0x04040019; + 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"); + }; + + ############################################################################ + # P9 chip NPU0FIR + ############################################################################ + + register NPU0FIR + { + name "P9 chip NPU0FIR"; + scomaddr 0x05013C00; + reset (&, 0x05013C01); + mask (|, 0x05013C05); + capture group default; + }; + + register NPU0FIR_MASK + { + name "P9 chip NPU0FIR MASK"; + scomaddr 0x05013C03; + capture group default; + }; + + register NPU0FIR_ACT0 + { + name "P9 chip NPU0FIR ACT0"; + scomaddr 0x05013C06; + capture group default; + capture req nonzero("NPU0FIR"); + }; + + register NPU0FIR_ACT1 + { + name "P9 chip NPU0FIR ACT1"; + scomaddr 0x05013C07; + capture group default; + capture req nonzero("NPU0FIR"); + }; + + ############################################################################ + # P9 chip NPU1FIR + ############################################################################ + + register NPU1FIR + { + name "P9 chip NPU1FIR"; + scomaddr 0x05013C40; + reset (&, 0x05013C41); + mask (|, 0x05013C45); + capture group default; + }; + + register NPU1FIR_MASK + { + name "P9 chip NPU1FIR MASK"; + scomaddr 0x05013C43; + capture group default; + }; + + register NPU1FIR_ACT0 + { + name "P9 chip NPU1FIR ACT0"; + scomaddr 0x05013C46; + capture group default; + capture req nonzero("NPU1FIR"); + }; + + register NPU1FIR_ACT1 + { + name "P9 chip NPU1FIR ACT1"; + scomaddr 0x05013C47; + capture group default; + capture req nonzero("NPU1FIR"); + }; + + ############################################################################ + # P9 chip NPU2FIR + ############################################################################ + + register NPU2FIR + { + name "P9 chip NPU2FIR"; + scomaddr 0x05013C80; + reset (&, 0x05013C81); + mask (|, 0x05013C85); + capture group default; + }; + + register NPU2FIR_MASK + { + name "P9 chip NPU2FIR MASK"; + scomaddr 0x05013C83; + capture group default; + }; + + register NPU2FIR_ACT0 + { + name "P9 chip NPU2FIR ACT0"; + scomaddr 0x05013C86; + capture group default; + capture req nonzero("NPU2FIR"); + }; + + register NPU2FIR_ACT1 + { + name "P9 chip NPU2FIR ACT1"; + scomaddr 0x05013C87; + capture group default; + capture req nonzero("NPU2FIR"); + }; + + ############################################################################ + # 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_cumulus_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[4] + * Attention from N2 chiplet + */ + (rGLOBAL_UCS_FIR, bit(4)) ? analyze(gN2_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)) ? analyze(gTP_LFIR); + + /** TP_CHIPLET_FIR[4] + * Attention from OCCFIR + */ + (rTP_CHIPLET_FIR, bit(4)) ? analyze(gOCCFIR); + +}; + +################################################################################ +# 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] + * GPIO: PCB error during CC access + */ + (rTP_LFIR, bit(1)) ? self_th_32perDay; + + /** TP_LFIR[2] + * CC: PCB error during CC access + */ + (rTP_LFIR, bit(2)) ? self_th_32perDay; + + /** TP_LFIR[3] + * CC local error + */ + (rTP_LFIR, bit(3)) ? self_th_32perDay; + + /** TP_LFIR[4] + * local errors from PSC (PCB error) + */ + (rTP_LFIR, bit(4)) ? defaultMaskedError; + + /** TP_LFIR[5] + * local errors from PSC (parity error) + */ + (rTP_LFIR, bit(5)) ? defaultMaskedError; + + /** TP_LFIR[6] + * local errors from Thermal (parity error) + */ + (rTP_LFIR, bit(6)) ? defaultMaskedError; + + /** TP_LFIR[7] + * local errors from Thermal (PCB error) + */ + (rTP_LFIR, bit(7)) ? defaultMaskedError; + + /** TP_LFIR[8] + * trip critical error from thermal + */ + (rTP_LFIR, bit(8)) ? defaultMaskedError; + + /** TP_LFIR[9] + * trip fatal error from thermal + */ + (rTP_LFIR, bit(9)) ? defaultMaskedError; + + /** TP_LFIR[10] + * therm volttrip error + */ + (rTP_LFIR, bit(10)) ? defaultMaskedError; + + /** TP_LFIR[11] + * local errors from Debug ( error) + */ + (rTP_LFIR, bit(11)) ? defaultMaskedError; + + /** TP_LFIR[12] + * local errors from Trace Array ( error) + */ + (rTP_LFIR, bit(12)) ? defaultMaskedError; + + /** TP_LFIR[13] + * scom trace array error + */ + (rTP_LFIR, bit(13)) ? defaultMaskedError; + + /** TP_LFIR[14] + * ITR local error + */ + (rTP_LFIR, bit(14)) ? defaultMaskedError; + + /** TP_LFIR[15] + * ITR local error + */ + (rTP_LFIR, bit(15)) ? defaultMaskedError; + + /** TP_LFIR[16] + * local error from PCB + */ + (rTP_LFIR, bit(16)) ? defaultMaskedError; + + /** TP_LFIR[17] + * local errors from I2CM ( error) + */ + (rTP_LFIR, bit(17)) ? self_th_1; + + /** TP_LFIR[18] + * local errors from TOD ( error) + */ + (rTP_LFIR, bit(18)) ? defaultMaskedError; + + /** TP_LFIR[19] + * local errors from TOD ( error) + */ + (rTP_LFIR, bit(19)) ? defaultMaskedError; + + /** TP_LFIR[20] + * local errors from TOD ( error) + */ + (rTP_LFIR, bit(20)) ? defaultMaskedError; + + /** TP_LFIR[21] + * local errors from PORT2 ( error) + */ + (rTP_LFIR, bit(21)) ? pcb_slave_internal_parity; + + /** TP_LFIR[22] + * FIR error from SBE + */ + (rTP_LFIR, bit(22)) ? self_th_1; + + /** TP_LFIR[23] + * FIR error from SBE + */ + (rTP_LFIR, bit(23)) ? self_th_1; + + /** TP_LFIR[24] + * FIR error from SBE + */ + (rTP_LFIR, bit(24)) ? self_th_1; + + /** TP_LFIR[25] + * FIR error from SBE + */ + (rTP_LFIR, bit(25)) ? self_th_1; + + /** TP_LFIR[26] + * FIR error from SBE + */ + (rTP_LFIR, bit(26)) ? defaultMaskedError; + + /** TP_LFIR[27] + * FIR error from SBE + */ + (rTP_LFIR, bit(27)) ? self_th_1; + + /** TP_LFIR[28] + * FIR error from SBE + */ + (rTP_LFIR, bit(28)) ? defaultMaskedError; + + /** TP_LFIR[29] + * FIR error from SBE + */ + (rTP_LFIR, bit(29)) ? self_th_1; + + /** TP_LFIR[30] + * FIR error from SBE + */ + (rTP_LFIR, bit(30)) ? defaultMaskedError; + + /** TP_LFIR[31] + * Local error from OTP + */ + (rTP_LFIR, bit(31)) ? defaultMaskedError; + + /** TP_LFIR[32] + * Local error from Ext trigger + */ + (rTP_LFIR, bit(32)) ? defaultMaskedError; + + /** TP_LFIR[33] + * Fast xstop fir error + */ + (rTP_LFIR, bit(33)) ? defaultMaskedError; + + /** TP_LFIR[34] + * PCB mcast grp err + */ + (rTP_LFIR, bit(34)) ? defaultMaskedError; + + /** TP_LFIR[35] + * PCB parity err + */ + (rTP_LFIR, bit(35)) ? defaultMaskedError; + + /** TP_LFIR[36] + * Osc Sw fir error + */ + (rTP_LFIR, bit(36)) ? defaultMaskedError; + + /** TP_LFIR[37] + * Osc Sw fir error + */ + (rTP_LFIR, bit(37)) ? defaultMaskedError; + + /** TP_LFIR[38] + * local errors from pibmem + */ + (rTP_LFIR, bit(38)) ? self_th_1; + + /** TP_LFIR[39] + * local errors from pibmem + */ + (rTP_LFIR, bit(39)) ? self_th_1; + + /** TP_LFIR[40] + * otp uncorrectable error + */ + (rTP_LFIR, bit(40)) ? self_th_1; + + /** TP_LFIR[41] + * xstop in another chiplet + */ + (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)) ? threshold_and_mask_self; + + /** OCCFIR[4] + * OCC_HB_ERROR + */ + (rOCCFIR, bit(4)) ? defaultMaskedError; + + /** OCCFIR[5] + * GPE0_WATCHDOG_TIMEOUT + */ + (rOCCFIR, bit(5)) ? defaultMaskedError; + + /** OCCFIR[6] + * GPE0 watchdog timeout condition + */ + (rOCCFIR, bit(6)) ? defaultMaskedError; + + /** OCCFIR[7] + * GPE1 watchdog timeout condition + */ + (rOCCFIR, bit(7)) ? defaultMaskedError; + + /** OCCFIR[8] + * GPE2 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)) ? analyze(gN0_LFIR); + + /** N0_CHIPLET_FIR[4] + * Attention from NXDMAENGFIR + */ + (rN0_CHIPLET_FIR, bit(4)) ? analyze(gNXDMAENGFIR); + + /** N0_CHIPLET_FIR[5] + * Attention from NXCQFIR + */ + (rN0_CHIPLET_FIR, bit(5)) ? analyze(gNXCQFIR); + + /** 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 & `7fffffffffffffff`; +}; + +group gN0_CHIPLET_UCS_FIR filter singlebit +{ + /** N0_CHIPLET_UCS_FIR[1] + * Attention from NXDMAENGFIR + */ + (rN0_CHIPLET_UCS_FIR, bit(1)) ? analyze(gNXDMAENGFIR); + + /** N0_CHIPLET_UCS_FIR[2] + * Attention from NXCQFIR + */ + (rN0_CHIPLET_UCS_FIR, bit(2)) ? analyze(gNXCQFIR); + + /** 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] + * Errors from Control + */ + (rN0_LFIR, bit(1)) ? self_th_32perDay; + + /** N0_LFIR[2] + * local errors from CC (PCB error) + */ + (rN0_LFIR, bit(2)) ? self_th_32perDay; + + /** N0_LFIR[3] + * local errors from CC + */ + (rN0_LFIR, bit(3)) ? self_th_32perDay; + + /** N0_LFIR[4] + * local errors from PSC (PCB error) + */ + (rN0_LFIR, bit(4)) ? defaultMaskedError; + + /** N0_LFIR[5] + * local errors from PSC (parity error) + */ + (rN0_LFIR, bit(5)) ? defaultMaskedError; + + /** N0_LFIR[6] + * local errors from Thermal (parity error) + */ + (rN0_LFIR, bit(6)) ? defaultMaskedError; + + /** N0_LFIR[7] + * local errors from Thermal (PCB error + */ + (rN0_LFIR, bit(7)) ? defaultMaskedError; + + /** N0_LFIR[8] + * critical level Thermal error + */ + (rN0_LFIR, bit(8)) ? defaultMaskedError; + + /** N0_LFIR[9] + * fatal level Thermal error + */ + (rN0_LFIR, bit(9)) ? defaultMaskedError; + + /** N0_LFIR[10] + * therm volttrip error + */ + (rN0_LFIR, bit(10)) ? defaultMaskedError; + + /** N0_LFIR[11] + * local errors from Debug ( error) + */ + (rN0_LFIR, bit(11)) ? defaultMaskedError; + + /** N0_LFIR[12] + * local errors from Trace Array0 + */ + (rN0_LFIR, bit(12)) ? defaultMaskedError; + + /** N0_LFIR[13] + * local errors from Trace Array0 + */ + (rN0_LFIR, bit(13)) ? defaultMaskedError; + + /** N0_LFIR[14] + * local errors from Trace Array1 + */ + (rN0_LFIR, bit(14)) ? defaultMaskedError; + + /** N0_LFIR[15] + * local errors from Trace Array1 + */ + (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] + * spare + */ + (rN0_LFIR, bit(24)) ? defaultMaskedError; + + /** N0_LFIR[25] + * Errors from Bsense IO + */ + (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] + * Malf-alert Broadcast via OOB + */ + (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] + * UEon 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)) ? analyze(gN1_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)) ? analyze(gMCDFIR_0); + + /** N1_CHIPLET_FIR[7] + * Attention from MCDFIR + */ + (rN1_CHIPLET_FIR, bit(7)) ? analyze(gMCDFIR_1); + + /** N1_CHIPLET_FIR[8] + * Attention from VASFIR + */ + (rN1_CHIPLET_FIR, bit(8)) ? analyze(gVASFIR); + +}; + +################################################################################ +# N1 Chiplet Unit Checkstop FIR +################################################################################ + +rule rN1_CHIPLET_UCS_FIR +{ + UNIT_CS: + N1_CHIPLET_UCS_FIR & ~N1_CHIPLET_UCS_FIR_MASK & `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)) ? analyze(gVASFIR); + +}; + +################################################################################ +# N1 Chiplet Host Attention FIR +################################################################################ + +rule rN1_CHIPLET_HA_FIR +{ + HOST_ATTN: + N1_CHIPLET_HA_FIR & ~N1_CHIPLET_HA_FIR_MASK & `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] + * cir internal parity error + */ + (rN1_LFIR, bit(0)) ? self_th_32perDay; + + /** N1_LFIR[1] + * local errors from GPIO + */ + (rN1_LFIR, bit(1)) ? self_th_32perDay; + + /** N1_LFIR[2] + * local errors from CC + */ + (rN1_LFIR, bit(2)) ? self_th_32perDay; + + /** N1_LFIR[3] + * local errors from cc + */ + (rN1_LFIR, bit(3)) ? self_th_32perDay; + + /** N1_LFIR[4] + * pcb error from psc + */ + (rN1_LFIR, bit(4)) ? defaultMaskedError; + + /** N1_LFIR[5] + * PE local errors from PSC + */ + (rN1_LFIR, bit(5)) ? defaultMaskedError; + + /** N1_LFIR[6] + * parity error from thermal + */ + (rN1_LFIR, bit(6)) ? defaultMaskedError; + + /** N1_LFIR[7] + * PCM error from thermal + */ + (rN1_LFIR, bit(7)) ? defaultMaskedError; + + /** N1_LFIR[8] + * trip critical error from thermal + */ + (rN1_LFIR, bit(8)) ? defaultMaskedError; + + /** N1_LFIR[9] + * trip fatal error from thermal + */ + (rN1_LFIR, bit(9)) ? defaultMaskedError; + + /** N1_LFIR[10] + * therm volttrip eror + */ + (rN1_LFIR, bit(10)) ? defaultMaskedError; + + /** N1_LFIR[11] + * local errors from debug + */ + (rN1_LFIR, bit(11)) ? defaultMaskedError; + + /** N1_LFIR[12] + * scom error from trace array0 + */ + (rN1_LFIR, bit(12)) ? defaultMaskedError; + + /** N1_LFIR[13] + * local errors from trace array0 + */ + (rN1_LFIR, bit(13)) ? defaultMaskedError; + + /** N1_LFIR[14] + * scom error from trace array1 + */ + (rN1_LFIR, bit(14)) ? defaultMaskedError; + + /** N1_LFIR[15] + * local errors from trace array1 + */ + (rN1_LFIR, bit(15)) ? defaultMaskedError; + + /** N1_LFIR[16] + * scom errors from trace array2 + */ + (rN1_LFIR, bit(16)) ? defaultMaskedError; + + /** N1_LFIR[17] + * local errors from trace array2 + */ + (rN1_LFIR, bit(17)) ? defaultMaskedError; + + /** N1_LFIR[18] + * local errors from trace array3 + */ + (rN1_LFIR, bit(18)) ? defaultMaskedError; + + /** N1_LFIR[19] + * local errors from trace array3 + */ + (rN1_LFIR, bit(19)) ? defaultMaskedError; + + /** N1_LFIR[20] + * local errors from trace array4 + */ + (rN1_LFIR, bit(20)) ? defaultMaskedError; + + /** N1_LFIR[21] + * local errors from trace array4 + */ + (rN1_LFIR, bit(21)) ? defaultMaskedError; + + /** N1_LFIR[22:23] + * spare + */ + (rN1_LFIR, bit(22|23)) ? defaultMaskedError; + + /** N1_LFIR[24] + * spare + */ + (rN1_LFIR, bit(24)) ? defaultMaskedError; + + /** N1_LFIR[25] + * Errors from Bsense IO + */ + (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 broadcast via OOB + */ + (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[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[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_th_1; + + /** VASFIR[7] + * PB (CQ) Address Error CRESP on Read + */ + (rVASFIR, bit(7)) ? self_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)) ? self_th_1; + + /** 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)) ? self_th_1; + + /** 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)) ? self_th_1; + + /** VASFIR[36] + * non-8B MMIO Detected (HYP) + */ + (rVASFIR, bit(36)) ? self_th_1; + + /** VASFIR[37] + * non-8B MMIO Detected (OS) + */ + (rVASFIR, bit(37)) ? self_th_1; + + /** 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)) ? analyze(gN2_LFIR); + + /** N2_CHIPLET_FIR[4] + * Attention from CXAFIR 1 + */ + (rN2_CHIPLET_FIR, bit(4)) ? analyzeConnectedCAPP1; + + /** 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)) ? analyze(gPSIFIR); + +}; + +################################################################################ +# N2 Chiplet Unit Checkstop FIR +################################################################################ + +rule rN2_CHIPLET_UCS_FIR +{ + UNIT_CS: + N2_CHIPLET_UCS_FIR & ~N2_CHIPLET_UCS_FIR_MASK & `7fffffffffffffff`; +}; + +group gN2_CHIPLET_UCS_FIR filter singlebit +{ + /** N2_CHIPLET_UCS_FIR[1] + * Attention from CXAFIR 1 + */ + (rN2_CHIPLET_UCS_FIR, bit(1)) ? analyzeConnectedCAPP1; + +}; + +################################################################################ +# 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] + * cir internal parity error + */ + (rN2_LFIR, bit(0)) ? self_th_32perDay; + + /** N2_LFIR[1] + * local errors from GPIO + */ + (rN2_LFIR, bit(1)) ? self_th_32perDay; + + /** N2_LFIR[2] + * local errors from CC + */ + (rN2_LFIR, bit(2)) ? self_th_32perDay; + + /** N2_LFIR[3] + * local errors from cc + */ + (rN2_LFIR, bit(3)) ? self_th_32perDay; + + /** N2_LFIR[4] + * pcb error from psc + */ + (rN2_LFIR, bit(4)) ? defaultMaskedError; + + /** N2_LFIR[5] + * PE local errors from PSC + */ + (rN2_LFIR, bit(5)) ? defaultMaskedError; + + /** N2_LFIR[6] + * parity error from thermal + */ + (rN2_LFIR, bit(6)) ? defaultMaskedError; + + /** N2_LFIR[7] + * PCM error from thermal + */ + (rN2_LFIR, bit(7)) ? defaultMaskedError; + + /** N2_LFIR[8] + * trip critical error from thermal + */ + (rN2_LFIR, bit(8)) ? defaultMaskedError; + + /** N2_LFIR[9] + * trip fatal error from thermal + */ + (rN2_LFIR, bit(9)) ? defaultMaskedError; + + /** N2_LFIR[10] + * therm volttrip eror + */ + (rN2_LFIR, bit(10)) ? defaultMaskedError; + + /** N2_LFIR[11] + * local errors from debug + */ + (rN2_LFIR, bit(11)) ? defaultMaskedError; + + /** N2_LFIR[12] + * scom error from trace array0 + */ + (rN2_LFIR, bit(12)) ? defaultMaskedError; + + /** N2_LFIR[13] + * local errors from trace array0 + */ + (rN2_LFIR, bit(13)) ? defaultMaskedError; + + /** N2_LFIR[14:23] + * spare + */ + (rN2_LFIR, bit(14|15|16|17|18|19|20|21|22|23)) ? defaultMaskedError; + + /** N2_LFIR[24] + * spare + */ + (rN2_LFIR, bit(24)) ? defaultMaskedError; + + /** N2_LFIR[25] + * Errors from Bsense IO + */ + (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 broadcast via OOB + */ + (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)) ? analyze(gN3_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)) ? analyze(gPBWESTFIR); + + /** N3_CHIPLET_FIR[7] + * Attention from PBCENTFIR + */ + (rN3_CHIPLET_FIR, bit(7)) ? analyze(gPBCENTFIR); + + /** N3_CHIPLET_FIR[8] + * Attention from PBEASTFIR + */ + (rN3_CHIPLET_FIR, bit(8)) ? analyze(gPBEASTFIR); + + /** N3_CHIPLET_FIR[10] + * Attention from NPU0FIR + */ + (rN3_CHIPLET_FIR, bit(10)) ? analyze(gNPU0FIR); + + /** N3_CHIPLET_FIR[11] + * Attention from NPU1FIR + */ + (rN3_CHIPLET_FIR, bit(11)) ? analyze(gNPU1FIR); + + /** N3_CHIPLET_FIR[12] + * Attention from NMMUCQFIR + */ + (rN3_CHIPLET_FIR, bit(12)) ? analyze(gNMMUCQFIR); + + /** N3_CHIPLET_FIR[13] + * Attention from NMMUFIR + */ + (rN3_CHIPLET_FIR, bit(13)) ? analyze(gNMMUFIR); + + /** N3_CHIPLET_FIR[14] + * Attention from PBPPEFIR + */ + (rN3_CHIPLET_FIR, bit(14)) ? analyze(gPBPPEFIR); + + /** N3_CHIPLET_FIR[15] + * Attention from PBIOEFIR + */ + (rN3_CHIPLET_FIR, bit(15)) ? analyze(gPBIOEFIR); + + /** N3_CHIPLET_FIR[16] + * Attention from PBIOOFIR + */ + (rN3_CHIPLET_FIR, bit(16)) ? analyze(gPBIOOFIR); + + /** N3_CHIPLET_FIR[17] + * Attention from INTCQFIR + */ + (rN3_CHIPLET_FIR, bit(17)) ? analyze(gINTCQFIR); + + /** N3_CHIPLET_FIR[18] + * Attention from PBAFIR + */ + (rN3_CHIPLET_FIR, bit(18)) ? analyze(gPBAFIR); + + /** N3_CHIPLET_FIR[19] + * Attention from PSIHBFIR + */ + (rN3_CHIPLET_FIR, bit(19)) ? analyze(gPSIHBFIR); + + /** N3_CHIPLET_FIR[20] + * Attention from PBAMFIR + */ + (rN3_CHIPLET_FIR, bit(20)) ? analyze(gPBAMFIR); + + /** N3_CHIPLET_FIR[22] + * Attention from ENHCAFIR + */ + (rN3_CHIPLET_FIR, bit(22)) ? analyze(gENHCAFIR); + + /** N3_CHIPLET_FIR[23] + * Attention from NPU2FIR + */ + (rN3_CHIPLET_FIR, bit(23)) ? analyze(gNPU2FIR); + +}; + +################################################################################ +# N3 Chiplet Unit Checkstop FIR +################################################################################ + +rule rN3_CHIPLET_UCS_FIR +{ + UNIT_CS: + N3_CHIPLET_UCS_FIR & ~N3_CHIPLET_UCS_FIR_MASK & `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[6] + * Attention from NPU2FIR + */ + (rN3_CHIPLET_UCS_FIR, bit(6)) ? analyze(gNPU2FIR); + + /** N3_CHIPLET_UCS_FIR[7] + * Attention from NPU0FIR + */ + (rN3_CHIPLET_UCS_FIR, bit(7)) ? analyze(gNPU0FIR); + + /** N3_CHIPLET_UCS_FIR[8] + * Attention from NPU1FIR + */ + (rN3_CHIPLET_UCS_FIR, bit(8)) ? analyze(gNPU1FIR); + + /** N3_CHIPLET_UCS_FIR[9] + * Attention from NMMUCQFIR + */ + (rN3_CHIPLET_UCS_FIR, bit(9)) ? analyze(gNMMUCQFIR); + + /** N3_CHIPLET_UCS_FIR[10] + * Attention from NMMUFIR + */ + (rN3_CHIPLET_UCS_FIR, bit(10)) ? analyze(gNMMUFIR); + +}; + +################################################################################ +# N3 Chiplet Host Attention FIR +################################################################################ + +rule rN3_CHIPLET_HA_FIR +{ + HOST_ATTN: + N3_CHIPLET_HA_FIR & ~N3_CHIPLET_HA_FIR_MASK & `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] + * Errors from Control + */ + (rN3_LFIR, bit(1)) ? self_th_32perDay; + + /** N3_LFIR[2] + * local err from CC (PCB error) + */ + (rN3_LFIR, bit(2)) ? self_th_32perDay; + + /** N3_LFIR[3] + * local err from CC + */ + (rN3_LFIR, bit(3)) ? self_th_32perDay; + + /** N3_LFIR[4] + * local err from PSC + */ + (rN3_LFIR, bit(4)) ? defaultMaskedError; + + /** N3_LFIR[5] + * local err from PSC (parity error) + */ + (rN3_LFIR, bit(5)) ? defaultMaskedError; + + /** N3_LFIR[6] + * local err from Thermal (parity error) + */ + (rN3_LFIR, bit(6)) ? defaultMaskedError; + + /** N3_LFIR[7] + * local err from Thermal (PCB error + */ + (rN3_LFIR, bit(7)) ? defaultMaskedError; + + /** N3_LFIR[8] + * trip critical thermal local err + */ + (rN3_LFIR, bit(8)) ? defaultMaskedError; + + /** N3_LFIR[9] + * trip fatal thermal local error + */ + (rN3_LFIR, bit(9)) ? defaultMaskedError; + + /** N3_LFIR[10] + * therm volttrip error + */ + (rN3_LFIR, bit(10)) ? defaultMaskedError; + + /** N3_LFIR[11] + * local err from Debug ( error) + */ + (rN3_LFIR, bit(11)) ? defaultMaskedError; + + /** N3_LFIR[12] + * local err from trace array 0 + */ + (rN3_LFIR, bit(12)) ? defaultMaskedError; + + /** N3_LFIR[13] + * local err from trace array 0 + */ + (rN3_LFIR, bit(13)) ? defaultMaskedError; + + /** N3_LFIR[14] + * local err from trace array 1 + */ + (rN3_LFIR, bit(14)) ? defaultMaskedError; + + /** N3_LFIR[15] + * local err from trace array 1 + */ + (rN3_LFIR, bit(15)) ? defaultMaskedError; + + /** N3_LFIR[16] + * local err from trace array 2 + */ + (rN3_LFIR, bit(16)) ? defaultMaskedError; + + /** N3_LFIR[17] + * local err from trace array 2 + */ + (rN3_LFIR, bit(17)) ? defaultMaskedError; + + /** N3_LFIR[18] + * local err from trace array 3 + */ + (rN3_LFIR, bit(18)) ? defaultMaskedError; + + /** N3_LFIR[19] + * local err from trace array 3 + */ + (rN3_LFIR, bit(19)) ? defaultMaskedError; + + /** N3_LFIR[20] + * local err from trace array 4 + */ + (rN3_LFIR, bit(20)) ? defaultMaskedError; + + /** N3_LFIR[21] + * local err from trace array 4 + */ + (rN3_LFIR, bit(21)) ? defaultMaskedError; + + /** N3_LFIR[22] + * local err from trace array 5 + */ + (rN3_LFIR, bit(22)) ? defaultMaskedError; + + /** N3_LFIR[23] + * local err from trace array 5 + */ + (rN3_LFIR, bit(23)) ? defaultMaskedError; + + /** N3_LFIR[24] + * spare + */ + (rN3_LFIR, bit(24)) ? defaultMaskedError; + + /** N3_LFIR[25] + * Errors from Bsense IO + */ + (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 broadcast via OOB + */ + (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)) ? threshold_and_mask_self; + + /** 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 + */ + (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 Erro + */ + (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_th_1; + + /** 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 + */ + (rPBAFIR, bit(12)) ? self_th_1; + + /** PBAFIR[13] + * PBA Invalid CRESP + */ + (rPBAFIR, bit(13)) ? self_th_1; + + /** PBAFIR[14] + * PBA CRESP ACK Dead response r + */ + (rPBAFIR, bit(14)) ? defaultMaskedError; + + /** PBAFIR[15] + * PBA OPERATIONAL Timeout detected + */ + (rPBAFIR, bit(15)) ? self_th_1; + + /** PBAFIR[16] + * BCUE Setup Error + */ + (rPBAFIR, bit(16)) ? level2_th_1; + + /** PBAFIR[17] + * BCUE PowerBus Link + */ + (rPBAFIR, bit(17)) ? defaultMaskedError; + + /** PBAFIR[18] + * PBA CRESP Addr Error + */ + (rPBAFIR, bit(18)) ? level2_th_1; + + /** PBAFIR[19] + * BCUE Read Data Parity Error OR MRDERR + */ + (rPBAFIR, bit(19)) ? self_th_1; + + /** PBAFIR[20] + * BCDE Setup Error Block Copy Error + */ + (rPBAFIR, bit(20)) ? self_th_1; + + /** PBAFIR[21] + * BCDE PowerBus Link error + */ + (rPBAFIR, bit(21)) ? defaultMaskedError; + + /** PBAFIR[22] + * PBA CRESP Addr Error + */ + (rPBAFIR, bit(22)) ? self_th_1; + + /** PBAFIR[23] + * PBA Read Data Timeout + */ + (rPBAFIR, bit(23)) ? self_th_1; + + /** PBAFIR[24] + * PBA Read Data SUE Error + */ + (rPBAFIR, bit(24)) ? defaultMaskedError; + + /** PBAFIR[25] + * PBA Read Data UE Error + */ + (rPBAFIR, bit(25)) ? self_th_1; + + /** PBAFIR[26] + * PBA Read Data CE Error + */ + (rPBAFIR, bit(26)) ? self_th_32perDay; + + /** PBAFIR[27] + * BCDE Write Data error + */ + (rPBAFIR, bit(27)) ? self_th_1; + + /** PBAFIR[28] + * Internal Logic Error. + */ + (rPBAFIR, bit(28)) ? self_th_1; + + /** PBAFIR[29] + * Byte count is less than full cache line + */ + (rPBAFIR, bit(29)) ? self_th_1; + + /** PBAFIR[30] + * Illegal access to OCI Register. + */ + (rPBAFIR, bit(30)) ? self_th_1; + + /** PBAFIR[31] + * Push Write Error. + */ + (rPBAFIR, bit(31)) ? self_th_1; + + /** 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)) ? self_th_1; + + /** PBAFIR[37] + * PBA engine retry threshold reached + */ + (rPBAFIR, bit(37)) ? self_th_1; + + /** PBAFIR[38] + * PBAXSND Reservation Timeout + */ + (rPBAFIR, bit(38)) ? defaultMaskedError; + + /** PBAFIR[39] + * PBAXSND Reservation Error. + */ + (rPBAFIR, bit(39)) ? self_th_1; + + /** 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)) ? level2_M_self_L_th_1; + + /** PSIHBFIR[16] + * OCC Interrupt address Error + */ + (rPSIHBFIR, bit(16)) ? level2_M_self_L_th_1; + + /** PSIHBFIR[17] + * FSI Interrupt address Error + */ + (rPSIHBFIR, bit(17)) ? level2_M_self_L_th_1; + + /** PSIHBFIR[18] + * LPC Interrupt address Error + */ + (rPSIHBFIR, bit(18)) ? level2_M_self_L_th_1; + + /** PSIHBFIR[19] + * LOCAL ERROR Interrupt address Error + */ + (rPSIHBFIR, bit(19)) ? level2_M_self_L_th_1; + + /** PSIHBFIR[20] + * HOST ERROR Interrupt address Error + */ + (rPSIHBFIR, bit(20)) ? level2_M_self_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)) ? level2_th_1; + + /** NMMUCQFIR[2] + * PowerBus read address error + */ + (rNMMUCQFIR, bit(2)) ? level2_th_1; + + /** NMMUCQFIR[3] + * PowerBus write address error + */ + (rNMMUCQFIR, bit(3)) ? level2_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)) ? self_th_1; # NIMBUS_10 + + /** 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)) ? self_th_1; # NIMBUS_10 + + /** NMMUFIR[6] + * Fabric xlat protocol error detected. + */ + (rNMMUFIR, bit(6)) ? self_th_1; + + /** NMMUFIR[7] + * Fabric xlat op timeout detected. + */ + (rNMMUFIR, bit(7)) ? self_th_1; + + /** 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)) ? level2_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)) ? level2_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)) ? level2_th_1; # NIMBUS_10 + + /** 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)) ? self_th_1; + + /** NMMUFIR[37] + * Castout sm timeout error detected . + */ + (rNMMUFIR, bit(37)) ? self_th_1; + + /** NMMUFIR[38] + * Check-in sm timeout error detected . + */ + (rNMMUFIR, bit(38)) ? self_th_1; + + /** NMMUFIR[39] + * Invalidate sm timeout error detected . + */ + (rNMMUFIR, bit(39)) ? self_th_1; + + /** 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)) ? self_th_1; + + /** INTCQFIR[28] + * INT_CQ_FIR_RDQ_OP_HANG: + */ + (rINTCQFIR, bit(28)) ? self_th_1; + + /** INTCQFIR[29] + * INT_CQ_FIR_INTQ_OP_HANG: + */ + (rINTCQFIR, bit(29)) ? self_th_1; + + /** 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)) ? level2_M_self_L_th_1; + + /** INTCQFIR[34] + * INT_CQ_FIR_RDQ_BAD_CRESP: + */ + (rINTCQFIR, bit(34)) ? level2_M_self_L_th_1; + + /** INTCQFIR[35] + * INT_CQ_FIR_INTQ_BAD_CRESP: + */ + (rINTCQFIR, bit(35)) ? level2_M_self_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)) ? self_th_1; + + /** INTCQFIR[55:57] + * INT_CQ_FIR_PC_INFO_ERROR_0_2: + */ + (rINTCQFIR, bit(55|56|57)) ? self_th_1; + + /** 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)) ? self_th_1; + + /** INTCQFIR[62:63] + * INT_CQ_FIR_VC_INFO_ERROR_0_1: + */ + (rINTCQFIR, bit(62|63)) ? self_th_1; + +}; + +################################################################################ +# 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)) ? defaultMaskedError; + + /** 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)) ? defaultMaskedError; + + /** 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)) ? defaultMaskedError; + + /** PBIOEFIR[16] + * dob45 sue + */ + (rPBIOEFIR, bit(16)) ? defaultMaskedError; + + /** PBIOEFIR[17] + * dob67 ue + */ + (rPBIOEFIR, bit(17)) ? defaultMaskedError; + + /** PBIOEFIR[18] + * dob67 ce + */ + (rPBIOEFIR, bit(18)) ? defaultMaskedError; + + /** PBIOEFIR[19] + * spare + */ + (rPBIOEFIR, bit(19)) ? defaultMaskedError; + + /** PBIOEFIR[20] + * framer00 attn - X0 even link + */ + (rPBIOEFIR, bit(20)) ? self_th_1; + + /** PBIOEFIR[21] + * framer00 attn - X0 odd link + */ + (rPBIOEFIR, bit(21)) ? self_th_1; + + /** PBIOEFIR[22] + * framer00 attn - X1 even link + */ + (rPBIOEFIR, bit(22)) ? self_th_1; + + /** PBIOEFIR[23] + * framer00 attn - X1 odd link + */ + (rPBIOEFIR, bit(23)) ? self_th_1; + + /** PBIOEFIR[24] + * framer00 attn - X2 even link + */ + (rPBIOEFIR, bit(24)) ? self_th_1; + + /** PBIOEFIR[25] + * framer00 attn - X2 odd link + */ + (rPBIOEFIR, bit(25)) ? self_th_1; + + /** PBIOEFIR[26:27] + * spare + */ + (rPBIOEFIR, bit(26|27)) ? defaultMaskedError; + + /** PBIOEFIR[28] + * parser00 attn + */ + (rPBIOEFIR, bit(28)) ? self_th_1; + + /** PBIOEFIR[29] + * parser01 attn + */ + (rPBIOEFIR, bit(29)) ? self_th_1; + + /** PBIOEFIR[30] + * parser02 attn + */ + (rPBIOEFIR, bit(30)) ? self_th_1; + + /** PBIOEFIR[31] + * parser03 attn + */ + (rPBIOEFIR, bit(31)) ? self_th_1; + + /** PBIOEFIR[32] + * parser04 attn + */ + (rPBIOEFIR, bit(32)) ? self_th_1; + + /** PBIOEFIR[33] + * parser05 attn + */ + (rPBIOEFIR, bit(33)) ? self_th_1; + + /** PBIOEFIR[34:35] + * spare + */ + (rPBIOEFIR, bit(34|35)) ? defaultMaskedError; + + /** PBIOEFIR[36] + * mb0 spattn + */ + (rPBIOEFIR, bit(36)) ? defaultMaskedError; + + /** PBIOEFIR[37] + * mb01 spattn + */ + (rPBIOEFIR, bit(37)) ? defaultMaskedError; + + /** PBIOEFIR[38] + * mb0 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] + * links 01 data outbound switch int. err + */ + (rPBIOEFIR, bit(52)) ? defaultMaskedError; + + /** PBIOEFIR[53] + * links 23 data outbound switch int. err + */ + (rPBIOEFIR, bit(53)) ? defaultMaskedError; + + /** PBIOEFIR[54] + * links 45 data outbound switch int. err + */ + (rPBIOEFIR, bit(54)) ? defaultMaskedError; + + /** PBIOEFIR[55] + * spare + */ + (rPBIOEFIR, bit(55)) ? defaultMaskedError; + + /** PBIOEFIR[56] + * links 01 data inbound switch int. err + */ + (rPBIOEFIR, bit(56)) ? defaultMaskedError; + + /** PBIOEFIR[57] + * links 23 data inbound switch int. err + */ + (rPBIOEFIR, bit(57)) ? defaultMaskedError; + + /** PBIOEFIR[58] + * links 45 data inbound switch int. err + */ + (rPBIOEFIR, bit(58)) ? defaultMaskedError; + + /** 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)) ? defaultMaskedError; + + /** 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)) ? defaultMaskedError; + + /** 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)) ? defaultMaskedError; + + /** 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)) ? defaultMaskedError; + + /** 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)) ? self_th_1; + + /** PBIOOFIR[29] + * parser01 attn + */ + (rPBIOOFIR, bit(29)) ? self_th_1; + + /** PBIOOFIR[30] + * parser02 attn + */ + (rPBIOOFIR, bit(30)) ? self_th_1; + + /** PBIOOFIR[31] + * parser03 attn + */ + (rPBIOOFIR, bit(31)) ? self_th_1; + + /** PBIOOFIR[32] + * parser04 attn + */ + (rPBIOOFIR, bit(32)) ? self_th_1; + + /** PBIOOFIR[33] + * parser05 attn + */ + (rPBIOOFIR, bit(33)) ? self_th_1; + + /** PBIOOFIR[34] + * parser06 attn + */ + (rPBIOOFIR, bit(34)) ? self_th_1; + + /** PBIOOFIR[35] + * parser07 attn + */ + (rPBIOOFIR, bit(35)) ? self_th_1; + + /** 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)) ? defaultMaskedError; + + /** PBIOOFIR[53] + * data outbound switch internal - links 23 + */ + (rPBIOOFIR, bit(53)) ? defaultMaskedError; + + /** PBIOOFIR[54] + * data outbound switch internal-links 45 + */ + (rPBIOOFIR, bit(54)) ? defaultMaskedError; + + /** PBIOOFIR[55] + * data outbound switch internal-links 67 + */ + (rPBIOOFIR, bit(55)) ? defaultMaskedError; + + /** PBIOOFIR[56] + * data inbound switch internal-links 01 + */ + (rPBIOOFIR, bit(56)) ? defaultMaskedError; + + /** PBIOOFIR[57] + * data inbound switch internal-links 23 + */ + (rPBIOOFIR, bit(57)) ? defaultMaskedError; + + /** PBIOOFIR[58] + * data inbound switch internal-links 45 + */ + (rPBIOOFIR, bit(58)) ? defaultMaskedError; + + /** PBIOOFIR[59] + * data inbound switch internal-links 67 + */ + (rPBIOOFIR, bit(59)) ? defaultMaskedError; + + /** 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; + +}; + +################################################################################ +# P9 chip 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 +{ + /** 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)) ? level2_M_self_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] + * CQ CTL/SM UT=1 to frozen PE error + */ + (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)) ? self_th_1; + + /** 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 chip 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)) ? self_th_1; + + /** NPU1FIR[1] + * NDL Brick0 nostall + */ + (rNPU1FIR, bit(1)) ? self_th_1; + + /** NPU1FIR[2] + * NDL Brick1 stall + */ + (rNPU1FIR, bit(2)) ? self_th_1; + + /** NPU1FIR[3] + * NDL Brick1 nostall + */ + (rNPU1FIR, bit(3)) ? self_th_1; + + /** NPU1FIR[4] + * NDL Brick2 stall + */ + (rNPU1FIR, bit(4)) ? self_th_1; + + /** NPU1FIR[5] + * NDL Brick2 nostall + */ + (rNPU1FIR, bit(5)) ? self_th_1; + + /** NPU1FIR[6] + * NDL Brick3 stall + */ + (rNPU1FIR, bit(6)) ? self_th_1; + + /** NPU1FIR[7] + * NDL Brick3 nostall + */ + (rNPU1FIR, bit(7)) ? self_th_1; + + /** NPU1FIR[8] + * NDL Brick4 stall + */ + (rNPU1FIR, bit(8)) ? self_th_1; + + /** NPU1FIR[9] + * NDL Brick4 nostall + */ + (rNPU1FIR, bit(9)) ? self_th_1; + + /** NPU1FIR[10] + * NDL Brick5 stall + */ + (rNPU1FIR, bit(10)) ? self_th_1; + + /** NPU1FIR[11] + * NDL Brick5 nostall + */ + (rNPU1FIR, bit(11)) ? self_th_1; + + /** NPU1FIR[12] + * MISC Register ring error (ie noack) + */ + (rNPU1FIR, bit(12)) ? self_th_32perDay; + + /** NPU1FIR[13] + * MISC Parity error from ibr addr regi + */ + (rNPU1FIR, bit(13)) ? self_th_1; + + /** NPU1FIR[14] + * MISC Parity error on SCOM D/A addr reg + */ + (rNPU1FIR, bit(14)) ? self_th_1; + + /** NPU1FIR[15] + * MISC Parity error on MISC Cntrl reg + */ + (rNPU1FIR, bit(15)) ? self_th_1; + + /** NPU1FIR[16] + * MISC NMMU signaled Local Checkstop + */ + (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)) ? self_th_1; + + /** NPU1FIR[21] + * ATS TCE Page access error + */ + (rNPU1FIR, bit(21)) ? defaultMaskedError; + + /** NPU1FIR[22] + * ATS Timeout on TCE tree walk + */ + (rNPU1FIR, bit(22)) ? self_th_1; + + /** NPU1FIR[23] + * ATS Parity error on TCE cache dir array + */ + (rNPU1FIR, bit(23)) ? self_th_32perDay; + + /** NPU1FIR[24] + * ATS Parity error on TCE cache data array + */ + (rNPU1FIR, bit(24)) ? self_th_32perDay; + + /** NPU1FIR[25] + * ATS ECC UE on Effective Address array + */ + (rNPU1FIR, bit(25)) ? self_th_1; + + /** NPU1FIR[26] + * ATS ECC CE on Effective Address array + */ + (rNPU1FIR, bit(26)) ? self_th_32perDay; + + /** NPU1FIR[27] + * ATS ECC UE on TDRmem array + */ + (rNPU1FIR, bit(27)) ? self_th_1; + + /** NPU1FIR[28] + * ATS ECC CE on TDRmem array + */ + (rNPU1FIR, bit(28)) ? self_th_1; + + /** NPU1FIR[29] + * ATS ECC UE on CQ CTL DMA Read + */ + (rNPU1FIR, bit(29)) ? self_th_1; + + /** NPU1FIR[30] + * ATS ECC CE on CQ CTL DMA Read + */ + (rNPU1FIR, bit(30)) ? self_th_32perDay; + + /** NPU1FIR[31] + * ATS Parity error on TVT entry + */ + (rNPU1FIR, bit(31)) ? self_th_1; + + /** NPU1FIR[32] + * ATS Parity err on IODA Address Reg + */ + (rNPU1FIR, bit(32)) ? self_th_1; + + /** NPU1FIR[33] + * ATS Parity error on ATS Control Register + */ + (rNPU1FIR, bit(33)) ? self_th_1; + + /** NPU1FIR[34] + * ATS Parity error on ATS reg + */ + (rNPU1FIR, bit(34)) ? self_th_1; + + /** NPU1FIR[35] + * ATS Invalid IODA Table Select entry + */ + (rNPU1FIR, bit(35)) ? self_th_1; + + /** NPU1FIR[36:61] + * Reserved + */ + (rNPU1FIR, bit(36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61)) ? defaultMaskedError; + + /** NPU1FIR[62] + * scom error + */ + (rNPU1FIR, bit(62)) ? defaultMaskedError; + + /** NPU1FIR[63] + * scom error + */ + (rNPU1FIR, bit(63)) ? defaultMaskedError; + +}; + +################################################################################ +# P9 chip 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)) ? self_th_1; + + /** NPU2FIR[5] + * OTL RX acTag invalid + */ + (rNPU2FIR, bit(5)) ? self_th_1; + + /** NPU2FIR[6] + * OTL RX acTag points to an invalid entry. + */ + (rNPU2FIR, bit(6)) ? self_th_1; + + /** NPU2FIR[7] + * OTL RX reserved opcode used. + */ + (rNPU2FIR, bit(7)) ? self_th_1; + + /** NPU2FIR[8] + * OTL RX rtn_tl_credit cmd outside slot0. + */ + (rNPU2FIR, bit(8)) ? self_th_1; + + /** NPU2FIR[9] + * OTL RX bad opcode and template combo + */ + (rNPU2FIR, bit(9)) ? self_th_1; + + /** NPU2FIR[10] + * OTL RX unsupported template format. + */ + (rNPU2FIR, bit(10)) ? self_th_1; + + /** NPU2FIR[11] + * OTL RX bad template x00 format. + */ + (rNPU2FIR, bit(11)) ? self_th_1; + + /** NPU2FIR[12] + * OTL RX control flit overrun. + */ + (rNPU2FIR, bit(12)) ? self_th_1; + + /** NPU2FIR[13] + * OTL RX unexpected data flit. + */ + (rNPU2FIR, bit(13)) ? self_th_1; + + /** NPU2FIR[14] + * OTL RX DL link down. + */ + (rNPU2FIR, bit(14)) ? self_th_1; + + /** NPU2FIR[15] + * OTL RX bad data received on command. + */ + (rNPU2FIR, bit(15)) ? self_th_1; + + /** NPU2FIR[16] + * OTL RX bad data received on response. + */ + (rNPU2FIR, bit(16)) ? self_th_1; + + /** NPU2FIR[17] + * OTL RX AP response not allowed + */ + (rNPU2FIR, bit(17)) ? self_th_1; + + /** NPU2FIR[18] + * OR of all OTL parity errors. + */ + (rNPU2FIR, bit(18)) ? self_th_1; + + /** NPU2FIR[19] + * OR of all OTL ECC CE errors. + */ + (rNPU2FIR, bit(19)) ? self_th_32perDay; + + /** NPU2FIR[20] + * OR of all OTL ECC UE errors. + */ + (rNPU2FIR, bit(20)) ? self_th_1; + + /** NPU2FIR[21] + * RXO OP Errors. + */ + (rNPU2FIR, bit(21)) ? self_th_1; + + /** NPU2FIR[22] + * RXO Internal Errors. + */ + (rNPU2FIR, bit(22)) ? self_th_1; + + /** NPU2FIR[23] + * OTL RXI fifo overrun. + */ + (rNPU2FIR, bit(23)) ? self_th_1; + + /** NPU2FIR[24] + * OTL RXI ctrl flit data run len invalid. + */ + (rNPU2FIR, bit(24)) ? self_th_1; + + /** NPU2FIR[25] + * OTL RXI opcode specifies dL=0b00. + */ + (rNPU2FIR, bit(25)) ? self_th_1; + + /** NPU2FIR[26:35] + * spare + */ + (rNPU2FIR, bit(26|27|28|29|30|31|32|33|34|35)) ? defaultMaskedError; + + /** NPU2FIR[36] + * MMIO invalidate while one in progress. + */ + (rNPU2FIR, bit(36)) ? self_th_1; + + /** NPU2FIR[37] + * Unexpected ITAG on itag completion pt 0 + */ + (rNPU2FIR, bit(37)) ? self_th_1; + + /** NPU2FIR[38] + * Unexpected ITAG on itag completion pt 1 + */ + (rNPU2FIR, bit(38)) ? self_th_1; + + /** NPU2FIR[39] + * Unexpected Read PEE completion. + */ + (rNPU2FIR, bit(39)) ? self_th_1; + + /** NPU2FIR[40] + * Unexpected Checkout response. + */ + (rNPU2FIR, bit(40)) ? self_th_1; + + /** NPU2FIR[41] + * Translation request but SPAP is invalid. + */ + (rNPU2FIR, bit(41)) ? self_th_1; + + /** NPU2FIR[42] + * Read a PEE which was not valid. + */ + (rNPU2FIR, bit(42)) ? self_th_1; + + /** NPU2FIR[43] + * Bloom filter protection error. + */ + (rNPU2FIR, bit(43)) ? self_th_1; + + /** NPU2FIR[44:45] + * spare + */ + (rNPU2FIR, bit(44|45)) ? defaultMaskedError; + + /** NPU2FIR[46] + * correctable array error (SBE). + */ + (rNPU2FIR, bit(46)) ? self_th_32perDay; + + /** NPU2FIR[47] + * array error (UE or parity). + */ + (rNPU2FIR, bit(47)) ? self_th_1; + + /** NPU2FIR[48] + * S/TLBI buffer overflow. + */ + (rNPU2FIR, bit(48)) ? self_th_1; + + /** NPU2FIR[49] + * SBE CE on Pb cout rsp or PEE read data. + */ + (rNPU2FIR, bit(49)) ? self_th_32perDay; + + /** NPU2FIR[50] + * UE on Pb cut rsp or PEE read data. + */ + (rNPU2FIR, bit(50)) ? self_th_1; + + /** NPU2FIR[51] + * SUE on Pb chkout rsp or Pb PEE rd data. + */ + (rNPU2FIR, bit(51)) ? self_th_1; + + /** NPU2FIR[52] + * XSL Reserved, macro bit 16. + */ + (rNPU2FIR, bit(52)) ? defaultMaskedError; + + /** NPU2FIR[53] + * XSL Reserved, macro bit 17. + */ + (rNPU2FIR, bit(53)) ? defaultMaskedError; + + /** NPU2FIR[54:59] + * spare + */ + (rNPU2FIR, bit(54|55|56|57|58|59)) ? defaultMaskedError; + + /** NPU2FIR[60] + * SCOM satellite FSM error (ring 1, sat 0) + */ + (rNPU2FIR, bit(60)) ? defaultMaskedError; + + /** NPU2FIR[61] + * SCOM satellite FSM error (ring 1, sat 0) + */ + (rNPU2FIR, bit(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; + +}; + +################################################################################ +# 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)) ? analyze(gXB_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)) ? analyze(gXBPPEFIR); + +}; + +################################################################################ +# XB Chiplet Unit Checkstop FIR +################################################################################ + +rule rXB_CHIPLET_UCS_FIR +{ + UNIT_CS: + XB_CHIPLET_UCS_FIR & ~XB_CHIPLET_UCS_FIR_MASK & `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)) ? analyze(gXBPPEFIR); + +}; + +################################################################################ +# 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] + * local error from GPIO + */ + (rXB_LFIR, bit(1)) ? self_th_32perDay; + + /** XB_LFIR[2] + * local err from CC + */ + (rXB_LFIR, bit(2)) ? self_th_32perDay; + + /** XB_LFIR[3] + * local err from CC + */ + (rXB_LFIR, bit(3)) ? self_th_32perDay; + + /** XB_LFIR[4] + * local err from PSC + */ + (rXB_LFIR, bit(4)) ? defaultMaskedError; + + /** XB_LFIR[5] + * local err from PSC (parity error) + */ + (rXB_LFIR, bit(5)) ? defaultMaskedError; + + /** XB_LFIR[6] + * local err from Thermal (parity error) + */ + (rXB_LFIR, bit(6)) ? defaultMaskedError; + + /** XB_LFIR[7] + * local err from Thermal (PCB error + */ + (rXB_LFIR, bit(7)) ? defaultMaskedError; + + /** XB_LFIR[8] + * trip critical thermal local err + */ + (rXB_LFIR, bit(8)) ? defaultMaskedError; + + /** XB_LFIR[9] + * trip fatal thermal local error + */ + (rXB_LFIR, bit(9)) ? defaultMaskedError; + + /** XB_LFIR[10] + * therm volttrip error + */ + (rXB_LFIR, bit(10)) ? defaultMaskedError; + + /** XB_LFIR[11] + * local err from Debug ( error) + */ + (rXB_LFIR, bit(11)) ? defaultMaskedError; + + /** XB_LFIR[12] + * local err from trace array 0 + */ + (rXB_LFIR, bit(12)) ? defaultMaskedError; + + /** XB_LFIR[13] + * local err from trace array 0 + */ + (rXB_LFIR, bit(13)) ? defaultMaskedError; + + /** XB_LFIR[14] + * local err from trace array 0 + */ + (rXB_LFIR, bit(14)) ? defaultMaskedError; + + /** XB_LFIR[15] + * local err from trace array 0 + */ + (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 broadcast via obb + */ + (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 common action set. +.include "p9_common_actions.rule"; +# Include the chip-specific action set. +.include "p9_proc_common_actions.rule"; +.include "p9_cumulus_actions.rule"; + +actionclass analyzeConnectedEQ0 { analyze(connected(TYPE_EQ, 0)); }; +actionclass analyzeConnectedEQ1 { analyze(connected(TYPE_EQ, 1)); }; +actionclass analyzeConnectedEQ2 { analyze(connected(TYPE_EQ, 2)); }; +actionclass analyzeConnectedEQ3 { analyze(connected(TYPE_EQ, 3)); }; +actionclass analyzeConnectedEQ4 { analyze(connected(TYPE_EQ, 4)); }; +actionclass analyzeConnectedEQ5 { analyze(connected(TYPE_EQ, 5)); }; +actionclass analyzeConnectedEC0 { analyze(connected(TYPE_CORE, 0)); }; +actionclass analyzeConnectedEC1 { analyze(connected(TYPE_CORE, 1)); }; +actionclass analyzeConnectedEC2 { analyze(connected(TYPE_CORE, 2)); }; +actionclass analyzeConnectedEC3 { analyze(connected(TYPE_CORE, 3)); }; +actionclass analyzeConnectedEC4 { analyze(connected(TYPE_CORE, 4)); }; +actionclass analyzeConnectedEC5 { analyze(connected(TYPE_CORE, 5)); }; +actionclass analyzeConnectedEC6 { analyze(connected(TYPE_CORE, 6)); }; +actionclass analyzeConnectedEC7 { analyze(connected(TYPE_CORE, 7)); }; +actionclass analyzeConnectedEC8 { analyze(connected(TYPE_CORE, 8)); }; +actionclass analyzeConnectedEC9 { analyze(connected(TYPE_CORE, 9)); }; +actionclass analyzeConnectedEC10 { analyze(connected(TYPE_CORE, 10)); }; +actionclass analyzeConnectedEC11 { analyze(connected(TYPE_CORE, 11)); }; +actionclass analyzeConnectedEC12 { analyze(connected(TYPE_CORE, 12)); }; +actionclass analyzeConnectedEC13 { analyze(connected(TYPE_CORE, 13)); }; +actionclass analyzeConnectedEC14 { analyze(connected(TYPE_CORE, 14)); }; +actionclass analyzeConnectedEC15 { analyze(connected(TYPE_CORE, 15)); }; +actionclass analyzeConnectedEC16 { analyze(connected(TYPE_CORE, 16)); }; +actionclass analyzeConnectedEC17 { analyze(connected(TYPE_CORE, 17)); }; +actionclass analyzeConnectedEC18 { analyze(connected(TYPE_CORE, 18)); }; +actionclass analyzeConnectedEC19 { analyze(connected(TYPE_CORE, 19)); }; +actionclass analyzeConnectedEC20 { analyze(connected(TYPE_CORE, 20)); }; +actionclass analyzeConnectedEC21 { analyze(connected(TYPE_CORE, 21)); }; +actionclass analyzeConnectedEC22 { analyze(connected(TYPE_CORE, 22)); }; +actionclass analyzeConnectedEC23 { analyze(connected(TYPE_CORE, 23)); }; +actionclass analyzeConnectedCAPP0 { analyze(connected(TYPE_CAPP, 0)); }; +actionclass analyzeConnectedCAPP1 { analyze(connected(TYPE_CAPP, 1)); }; +actionclass analyzeConnectedOBUS0 { analyze(connected(TYPE_OBUS, 0)); }; +actionclass analyzeConnectedOBUS1 { analyze(connected(TYPE_OBUS, 1)); }; +actionclass analyzeConnectedOBUS2 { analyze(connected(TYPE_OBUS, 2)); }; +actionclass analyzeConnectedOBUS3 { analyze(connected(TYPE_OBUS, 3)); }; +actionclass analyzeConnectedXBUS0 { analyze(connected(TYPE_XBUS, 0)); }; +actionclass analyzeConnectedXBUS1 { analyze(connected(TYPE_XBUS, 1)); }; +actionclass analyzeConnectedXBUS2 { analyze(connected(TYPE_XBUS, 2)); }; +actionclass analyzeConnectedPEC0 { analyze(connected(TYPE_PEC, 0)); }; +actionclass analyzeConnectedPEC1 { analyze(connected(TYPE_PEC, 1)); }; +actionclass analyzeConnectedPEC2 { analyze(connected(TYPE_PEC, 2)); }; +actionclass analyzeConnectedPHB0 { analyze(connected(TYPE_PHB, 0)); }; +actionclass analyzeConnectedPHB1 { analyze(connected(TYPE_PHB, 1)); }; +actionclass analyzeConnectedPHB2 { analyze(connected(TYPE_PHB, 2)); }; +actionclass analyzeConnectedPHB3 { analyze(connected(TYPE_PHB, 3)); }; +actionclass analyzeConnectedPHB4 { analyze(connected(TYPE_PHB, 4)); }; +actionclass analyzeConnectedPHB5 { analyze(connected(TYPE_PHB, 5)); }; +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/p9/p9_dmi.rule b/src/usr/diag/prdf/common/plat/p9/p9_dmi.rule new file mode 100644 index 000000000..e2672a69a --- /dev/null +++ b/src/usr/diag/prdf/common/plat/p9/p9_dmi.rule @@ -0,0 +1,453 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/usr/diag/prdf/common/plat/p9/p9_dmi.rule $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2017 +# [+] 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 p9_dmi +{ + name "P9 MCA chiplet"; + targettype TYPE_DMI; + sigoff 0x9200; + dump DUMP_CONTENT_HW; + scomlen 64; + + ############################################################################# + # # + # ###### # + # # # ###### #### ### #### ##### ###### ##### #### # + # # # # # # # # # # # # # # + # ###### ##### # # #### # ##### # # #### # + # # # # # ### # # # # ##### # # + # # # # # # # # # # # # # # # # + # # # ###### #### ### #### # ###### # # #### # + # # + ############################################################################# + + ############################################################################ + # P9 DMI target CHIFIR + ############################################################################ + + register CHIFIR + { + name "P9 DMI target CHIFIR"; + scomaddr 0x07010900; + reset (&, 0x07010901); + mask (|, 0x07010905); + capture group default; + }; + + register CHIFIR_MASK + { + name "P9 DMI target CHIFIR MASK"; + scomaddr 0x07010903; + capture group default; + }; + + register CHIFIR_ACT0 + { + name "P9 DMI target CHIFIR ACT0"; + scomaddr 0x07010906; + capture group default; + capture req nonzero("CHIFIR"); + }; + + register CHIFIR_ACT1 + { + name "P9 DMI target CHIFIR ACT1"; + scomaddr 0x07010907; + capture group default; + capture req nonzero("CHIFIR"); + }; + +# Include registers not defined by the xml +.include "p9_dmi_regs.rule"; + +}; + + ############################################################################## + # # + # #### # # + # # # # # # ##### ### # # # ## ##### ### ### # # ### # + # # # # # # # # # # # # # # # # # ## # # # + # #### # # # #### ### # ####### # # # # # # # # ### # + # # # # # # # # # # # # # # # # # # ## # # + # # # ### #### ##### ### # # # ## # ### ### # # ### # + # # + ############################################################################## + +################################################################################ +# P9 DMI target CHIFIR +################################################################################ + +rule rCHIFIR +{ + CHECK_STOP: + CHIFIR & ~CHIFIR_MASK & ~CHIFIR_ACT0 & ~CHIFIR_ACT1; + RECOVERABLE: + CHIFIR & ~CHIFIR_MASK & ~CHIFIR_ACT0 & CHIFIR_ACT1; + HOST_ATTN: + CHIFIR & ~CHIFIR_MASK & CHIFIR_ACT0 & ~CHIFIR_ACT1; + UNIT_CS: + CHIFIR & ~CHIFIR_MASK & CHIFIR_ACT0 & CHIFIR_ACT1; +}; + +group gCHIFIR filter singlebit, cs_root_cause +{ + /** CHIFIR[0] + * + */ + (rCHIFIR, bit(0)) ? defaultMaskedError; + + /** CHIFIR[1] + * + */ + (rCHIFIR, bit(1)) ? defaultMaskedError; + + /** CHIFIR[2] + * + */ + (rCHIFIR, bit(2)) ? defaultMaskedError; + + /** CHIFIR[3] + * + */ + (rCHIFIR, bit(3)) ? defaultMaskedError; + + /** CHIFIR[4] + * + */ + (rCHIFIR, bit(4)) ? defaultMaskedError; + + /** CHIFIR[5] + * + */ + (rCHIFIR, bit(5)) ? defaultMaskedError; + + /** CHIFIR[6] + * + */ + (rCHIFIR, bit(6)) ? defaultMaskedError; + + /** CHIFIR[7] + * + */ + (rCHIFIR, bit(7)) ? defaultMaskedError; + + /** CHIFIR[8] + * + */ + (rCHIFIR, bit(8)) ? defaultMaskedError; + + /** CHIFIR[9] + * + */ + (rCHIFIR, bit(9)) ? defaultMaskedError; + + /** CHIFIR[10] + * + */ + (rCHIFIR, bit(10)) ? defaultMaskedError; + + /** CHIFIR[11] + * + */ + (rCHIFIR, bit(11)) ? defaultMaskedError; + + /** CHIFIR[12] + * + */ + (rCHIFIR, bit(12)) ? defaultMaskedError; + + /** CHIFIR[13] + * + */ + (rCHIFIR, bit(13)) ? defaultMaskedError; + + /** CHIFIR[14] + * + */ + (rCHIFIR, bit(14)) ? defaultMaskedError; + + /** CHIFIR[15] + * + */ + (rCHIFIR, bit(15)) ? defaultMaskedError; + + /** CHIFIR[16] + * + */ + (rCHIFIR, bit(16)) ? defaultMaskedError; + + /** CHIFIR[17] + * + */ + (rCHIFIR, bit(17)) ? defaultMaskedError; + + /** CHIFIR[18] + * + */ + (rCHIFIR, bit(18)) ? defaultMaskedError; + + /** CHIFIR[19] + * + */ + (rCHIFIR, bit(19)) ? defaultMaskedError; + + /** CHIFIR[20] + * + */ + (rCHIFIR, bit(20)) ? defaultMaskedError; + + /** CHIFIR[21] + * + */ + (rCHIFIR, bit(21)) ? defaultMaskedError; + + /** CHIFIR[22] + * + */ + (rCHIFIR, bit(22)) ? defaultMaskedError; + + /** CHIFIR[23] + * + */ + (rCHIFIR, bit(23)) ? defaultMaskedError; + + /** CHIFIR[24] + * + */ + (rCHIFIR, bit(24)) ? defaultMaskedError; + + /** CHIFIR[25] + * + */ + (rCHIFIR, bit(25)) ? defaultMaskedError; + + /** CHIFIR[26] + * + */ + (rCHIFIR, bit(26)) ? defaultMaskedError; + + /** CHIFIR[27] + * + */ + (rCHIFIR, bit(27)) ? defaultMaskedError; + + /** CHIFIR[28] + * + */ + (rCHIFIR, bit(28)) ? defaultMaskedError; + + /** CHIFIR[29] + * + */ + (rCHIFIR, bit(29)) ? defaultMaskedError; + + /** CHIFIR[30] + * + */ + (rCHIFIR, bit(30)) ? defaultMaskedError; + + /** CHIFIR[31] + * + */ + (rCHIFIR, bit(31)) ? defaultMaskedError; + + /** CHIFIR[32] + * + */ + (rCHIFIR, bit(32)) ? defaultMaskedError; + + /** CHIFIR[33] + * + */ + (rCHIFIR, bit(33)) ? defaultMaskedError; + + /** CHIFIR[34] + * + */ + (rCHIFIR, bit(34)) ? defaultMaskedError; + + /** CHIFIR[35] + * + */ + (rCHIFIR, bit(35)) ? defaultMaskedError; + + /** CHIFIR[36] + * + */ + (rCHIFIR, bit(36)) ? defaultMaskedError; + + /** CHIFIR[37] + * + */ + (rCHIFIR, bit(37)) ? defaultMaskedError; + + /** CHIFIR[38] + * + */ + (rCHIFIR, bit(38)) ? defaultMaskedError; + + /** CHIFIR[39] + * + */ + (rCHIFIR, bit(39)) ? defaultMaskedError; + + /** CHIFIR[40] + * + */ + (rCHIFIR, bit(40)) ? defaultMaskedError; + + /** CHIFIR[41] + * + */ + (rCHIFIR, bit(41)) ? defaultMaskedError; + + /** CHIFIR[42] + * + */ + (rCHIFIR, bit(42)) ? defaultMaskedError; + + /** CHIFIR[43] + * + */ + (rCHIFIR, bit(43)) ? defaultMaskedError; + + /** CHIFIR[44] + * + */ + (rCHIFIR, bit(44)) ? defaultMaskedError; + + /** CHIFIR[45] + * + */ + (rCHIFIR, bit(45)) ? defaultMaskedError; + + /** CHIFIR[46] + * + */ + (rCHIFIR, bit(46)) ? defaultMaskedError; + + /** CHIFIR[47] + * + */ + (rCHIFIR, bit(47)) ? defaultMaskedError; + + /** CHIFIR[48] + * + */ + (rCHIFIR, bit(48)) ? defaultMaskedError; + + /** CHIFIR[49] + * + */ + (rCHIFIR, bit(49)) ? defaultMaskedError; + + /** CHIFIR[50] + * + */ + (rCHIFIR, bit(50)) ? defaultMaskedError; + + /** CHIFIR[51] + * + */ + (rCHIFIR, bit(51)) ? defaultMaskedError; + + /** CHIFIR[52] + * + */ + (rCHIFIR, bit(52)) ? defaultMaskedError; + + /** CHIFIR[53] + * + */ + (rCHIFIR, bit(53)) ? defaultMaskedError; + + /** CHIFIR[54] + * + */ + (rCHIFIR, bit(54)) ? defaultMaskedError; + + /** CHIFIR[55] + * + */ + (rCHIFIR, bit(55)) ? defaultMaskedError; + + /** CHIFIR[56] + * + */ + (rCHIFIR, bit(56)) ? defaultMaskedError; + + /** CHIFIR[57] + * + */ + (rCHIFIR, bit(57)) ? defaultMaskedError; + + /** CHIFIR[58] + * + */ + (rCHIFIR, bit(58)) ? defaultMaskedError; + + /** CHIFIR[59] + * + */ + (rCHIFIR, bit(59)) ? defaultMaskedError; + + /** CHIFIR[60] + * + */ + (rCHIFIR, bit(60)) ? defaultMaskedError; + + /** CHIFIR[61] + * + */ + (rCHIFIR, bit(61)) ? defaultMaskedError; + + /** CHIFIR[62] + * + */ + (rCHIFIR, bit(62)) ? defaultMaskedError; + + /** CHIFIR[63] + * + */ + (rCHIFIR, bit(63)) ? defaultMaskedError; + +}; + + ############################################################################## + # # + # # ### # + # # # ## ##### ### ### # # # # # # ### ### ### ### # + # # # # # # # # # ## # # # # # # # # # # + # ####### # # # # # # # # # # ##### ### ### ## ### # + # # # # # # # # # # ## # # # # # # # # # # + # # # ## # ### ### # # ### ### # # ### ### ### ### # + # # + ############################################################################## + +# Include the common action set. +.include "p9_common_actions.rule"; +# Include the chip-specific action set. +.include "p9_dmi_actions.rule"; + diff --git a/src/usr/diag/prdf/common/plat/p9/p9_mc.rule b/src/usr/diag/prdf/common/plat/p9/p9_mc.rule new file mode 100644 index 000000000..3df20fb6c --- /dev/null +++ b/src/usr/diag/prdf/common/plat/p9/p9_mc.rule @@ -0,0 +1,846 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/usr/diag/prdf/common/plat/p9/p9_mc.rule $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2017 +# [+] 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 p9_mc +{ + name "P9 MC chiplet"; + targettype TYPE_MC; + sigoff 0x9200; + 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 IOMCFIR + ############################################################################ + + register IOMCFIR + { + name "P9 MC target IOMCFIR"; + scomaddr 0x07011000; + reset (&, 0x07011001); + mask (|, 0x07011005); + capture group default; + }; + + register IOMCFIR_MASK + { + name "P9 MC target IOMCFIR MASK"; + scomaddr 0x07011003; + capture group default; + }; + + register IOMCFIR_ACT0 + { + name "P9 MC target IOMCFIR ACT0"; + scomaddr 0x07011006; + capture group default; + capture req nonzero("IOMCFIR"); + }; + + register IOMCFIR_ACT1 + { + name "P9 MC target IOMCFIR ACT1"; + scomaddr 0x07011007; + capture group default; + capture req nonzero("IOMCFIR"); + }; + + ############################################################################ + # P9 MC target MCPPEFIR + ############################################################################ + + register MCPPEFIR + { + name "P9 MC target MCPPEFIR"; + scomaddr 0x07011440; + reset (&, 0x07011441); + mask (|, 0x07011445); + capture group default; + }; + + register MCPPEFIR_MASK + { + name "P9 MC target MCPPEFIR MASK"; + scomaddr 0x07011443; + capture group default; + }; + + register MCPPEFIR_ACT0 + { + name "P9 MC target MCPPEFIR ACT0"; + scomaddr 0x07011446; + capture group default; + capture req nonzero("MCPPEFIR"); + }; + + register MCPPEFIR_ACT1 + { + name "P9 MC target MCPPEFIR ACT1"; + scomaddr 0x07011447; + capture group default; + capture req nonzero("MCPPEFIR"); + }; + + ############################################################################ + # 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 "p9_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)) ? analyze(gMC_LFIR); + + /** MC_CHIPLET_FIR[4] + * Attention from CHIFIR 0 + */ + (rMC_CHIPLET_FIR, bit(4)) ? analyzeConnectedDMI0; + + /** MC_CHIPLET_FIR[6] + * Attention from CHIFIR 1 + */ + (rMC_CHIPLET_FIR, bit(6)) ? analyzeConnectedDMI1; + + /** MC_CHIPLET_FIR[8] + * Attention from CHIFIR 2 + */ + (rMC_CHIPLET_FIR, bit(8)) ? analyzeConnectedDMI2; + + /** MC_CHIPLET_FIR[10] + * Attention from CHIFIR 3 + */ + (rMC_CHIPLET_FIR, bit(10)) ? analyzeConnectedDMI3; + + /** MC_CHIPLET_FIR[12] + * Attention from MCBISTFIR + */ + (rMC_CHIPLET_FIR, bit(12)) ? analyze(gMCBISTFIR); + + /** MC_CHIPLET_FIR[13] + * Attention from IOMCFIR + */ + (rMC_CHIPLET_FIR, bit(13)) ? analyze(gIOMCFIR); + + /** MC_CHIPLET_FIR[14] + * Attention from MCPPEFIR + */ + (rMC_CHIPLET_FIR, bit(14)) ? analyze(gMCPPEFIR); + +}; + +################################################################################ +# MC Chiplet Unit Checkstop FIR +################################################################################ + +rule rMC_CHIPLET_UCS_FIR +{ + UNIT_CS: + MC_CHIPLET_UCS_FIR & ~MC_CHIPLET_UCS_FIR_MASK & `7fffffffffffffff`; +}; + +group gMC_CHIPLET_UCS_FIR attntype UNIT_CS filter singlebit +{ + /** MC_CHIPLET_UCS_FIR[1] + * Attention from CHIFIR 0 + */ + (rMC_CHIPLET_UCS_FIR, bit(1)) ? analyzeConnectedDMI0; + + /** MC_CHIPLET_UCS_FIR[3] + * Attention from CHIFIR 1 + */ + (rMC_CHIPLET_UCS_FIR, bit(3)) ? analyzeConnectedDMI1; + + /** MC_CHIPLET_UCS_FIR[5] + * Attention from CHIFIR 2 + */ + (rMC_CHIPLET_UCS_FIR, bit(5)) ? analyzeConnectedDMI2; + + /** MC_CHIPLET_UCS_FIR[7] + * Attention from CHIFIR 3 + */ + (rMC_CHIPLET_UCS_FIR, bit(7)) ? analyzeConnectedDMI3; + + /** MC_CHIPLET_UCS_FIR[8] + * Attention from MCPPEFIR + */ + (rMC_CHIPLET_UCS_FIR, bit(8)) ? analyze(gMCPPEFIR); + + /** MC_CHIPLET_UCS_FIR[9] + * Attention from MCBISTFIR + */ + (rMC_CHIPLET_UCS_FIR, bit(9)) ? analyze(gMCBISTFIR); + + /** MC_CHIPLET_UCS_FIR[10] + * Attention from IOMCFIR + */ + (rMC_CHIPLET_UCS_FIR, bit(10)) ? analyze(gIOMCFIR); + +}; + +################################################################################ +# MC Chiplet Host Attention FIR +################################################################################ + +rule rMC_CHIPLET_HA_FIR +{ + HOST_ATTN: + MC_CHIPLET_HA_FIR & ~MC_CHIPLET_HA_FIR_MASK & `7fffffffffffffff`; +}; + +group gMC_CHIPLET_HA_FIR attntype HOST_ATTN filter singlebit +{ + /** MC_CHIPLET_HA_FIR[1] + * Attention from CHIFIR 0 + */ + (rMC_CHIPLET_HA_FIR, bit(1)) ? analyzeConnectedDMI0; + + /** MC_CHIPLET_HA_FIR[3] + * Attention from CHIFIR 1 + */ + (rMC_CHIPLET_HA_FIR, bit(3)) ? analyzeConnectedDMI1; + + /** MC_CHIPLET_HA_FIR[5] + * Attention from CHIFIR 2 + */ + (rMC_CHIPLET_HA_FIR, bit(5)) ? analyzeConnectedDMI2; + + /** MC_CHIPLET_HA_FIR[7] + * Attention from CHIFIR 3 + */ + (rMC_CHIPLET_HA_FIR, bit(7)) ? analyzeConnectedDMI3; + + /** MC_CHIPLET_HA_FIR[9] + * Attention from MCBISTFIR + */ + (rMC_CHIPLET_HA_FIR, bit(9)) ? analyze(gMCBISTFIR); + +}; + +################################################################################ +# 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] + * cir internal parity error + */ + (rMC_LFIR, bit(0)) ? self_th_32perDay; + + /** MC_LFIR[1] + * local errors from GPIO + */ + (rMC_LFIR, bit(1)) ? self_th_32perDay; + + /** MC_LFIR[2] + * local errors from CC + */ + (rMC_LFIR, bit(2)) ? self_th_32perDay; + + /** MC_LFIR[3] + * local errors from cc + */ + (rMC_LFIR, bit(3)) ? self_th_32perDay; + + /** MC_LFIR[4] + * pcb error from psc + */ + (rMC_LFIR, bit(4)) ? defaultMaskedError; + + /** MC_LFIR[5] + * PE local errors from PSC + */ + (rMC_LFIR, bit(5)) ? defaultMaskedError; + + /** MC_LFIR[6] + * parity error from thermal + */ + (rMC_LFIR, bit(6)) ? defaultMaskedError; + + /** MC_LFIR[7] + * PCM error from thermal + */ + (rMC_LFIR, bit(7)) ? defaultMaskedError; + + /** MC_LFIR[8] + * trip critical error from thermal + */ + (rMC_LFIR, bit(8)) ? defaultMaskedError; + + /** MC_LFIR[9] + * trip fatal error from thermal + */ + (rMC_LFIR, bit(9)) ? defaultMaskedError; + + /** MC_LFIR[10] + * therm volttrip eror + */ + (rMC_LFIR, bit(10)) ? defaultMaskedError; + + /** MC_LFIR[11] + * local errors from debug + */ + (rMC_LFIR, bit(11)) ? defaultMaskedError; + + /** MC_LFIR[12] + * scom error from trace array0 + */ + (rMC_LFIR, bit(12)) ? defaultMaskedError; + + /** MC_LFIR[13] + * scom error from trace array0 + */ + (rMC_LFIR, bit(13)) ? defaultMaskedError; + + /** MC_LFIR[14] + * Local errors from MC trace array + */ + (rMC_LFIR, bit(14)) ? defaultMaskedError; + + /** MC_LFIR[15] + * Local errors from MC trace array + */ + (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 broadcast via OOB + */ + (rMC_LFIR, bit(41)) ? defaultMaskedError; + +}; + +################################################################################ +# P9 MC target IOMCFIR +################################################################################ + +rule rIOMCFIR +{ + CHECK_STOP: + IOMCFIR & ~IOMCFIR_MASK & ~IOMCFIR_ACT0 & ~IOMCFIR_ACT1; + RECOVERABLE: + IOMCFIR & ~IOMCFIR_MASK & ~IOMCFIR_ACT0 & IOMCFIR_ACT1; + HOST_ATTN: + IOMCFIR & ~IOMCFIR_MASK & IOMCFIR_ACT0 & ~IOMCFIR_ACT1; + UNIT_CS: + IOMCFIR & ~IOMCFIR_MASK & IOMCFIR_ACT0 & IOMCFIR_ACT1; +}; + +group gIOMCFIR filter singlebit, cs_root_cause +{ + /** IOMCFIR[0] + * RX_INVALID_STATE_OR_PARITY_ERROR + */ + (rIOMCFIR, bit(0)) ? defaultMaskedError; + + /** IOMCFIR[1] + * TX_INVALID_STATE_OR_PARITY_ERROR + */ + (rIOMCFIR, bit(1)) ? defaultMaskedError; + + /** IOMCFIR[2] + * + */ + (rIOMCFIR, bit(2)) ? defaultMaskedError; + + /** IOMCFIR[3:7] + * spare + */ + (rIOMCFIR, bit(3|4|5|6|7)) ? defaultMaskedError; + + /** IOMCFIR[8] + * RX BUS 0 Training Error + */ + (rIOMCFIR, bit(8)) ? defaultMaskedError; + + /** IOMCFIR[9] + * RX BUS 0 Spare Deployed + */ + (rIOMCFIR, bit(9)) ? spareDeployed_dmi0; + + /** IOMCFIR[10] + * RX BUS 0 Max Spares Exceeded + */ + (rIOMCFIR, bit(10)) ? maxSparesExceeded_dmi0; + + /** IOMCFIR[11] + * RX BUS 0 Recal or dynamic repair error + */ + (rIOMCFIR, bit(11)) ? defaultMaskedError; + + /** IOMCFIR[12] + * RX BUS 0 Too Many Bus Errors + */ + (rIOMCFIR, bit(12)) ? tooManyBusErrors_dmi0; + + /** IOMCFIR[13:15] + * spare + */ + (rIOMCFIR, bit(13|14|15)) ? defaultMaskedError; + + /** IOMCFIR[16] + * RX BUS 1 Training Error + */ + (rIOMCFIR, bit(16)) ? defaultMaskedError; + + /** IOMCFIR[17] + * RX BUS 1 Spare Deployed + */ + (rIOMCFIR, bit(17)) ? spareDeployed_dmi1; + + /** IOMCFIR[18] + * RX BUS 1 Max Spares Exceeded + */ + (rIOMCFIR, bit(18)) ? maxSparesExceeded_dmi1; + + /** IOMCFIR[19] + * RX BUS 1 Recal or dynamic repair error + */ + (rIOMCFIR, bit(19)) ? defaultMaskedError; + + /** IOMCFIR[20] + * RX BUS 1 Too Many Bus Errors + */ + (rIOMCFIR, bit(20)) ? tooManyBusErrors_dmi1; + + /** IOMCFIR[21:23] + * spare + */ + (rIOMCFIR, bit(21|22|23)) ? defaultMaskedError; + + /** IOMCFIR[24] + * RX BUS 2 Training Error + */ + (rIOMCFIR, bit(24)) ? defaultMaskedError; + + /** IOMCFIR[25] + * RX BUS 2 Spare Deployed + */ + (rIOMCFIR, bit(25)) ? spareDeployed_dmi2; + + /** IOMCFIR[26] + * RX BUS 2 Max Spares Exceeded + */ + (rIOMCFIR, bit(26)) ? maxSparesExceeded_dmi2; + + /** IOMCFIR[27] + * RX BUS 2 Recal or dynamic repair error + */ + (rIOMCFIR, bit(27)) ? defaultMaskedError; + + /** IOMCFIR[28] + * RX BUS 2 Too Many Bus Errors + */ + (rIOMCFIR, bit(28)) ? tooManyBusErrors_dmi2; + + /** IOMCFIR[29:31] + * spare + */ + (rIOMCFIR, bit(29|30|31)) ? defaultMaskedError; + + /** IOMCFIR[32] + * RX BUS 3 Training Error + */ + (rIOMCFIR, bit(32)) ? defaultMaskedError; + + /** IOMCFIR[33] + * RX BUS 3 Spare Deployed + */ + (rIOMCFIR, bit(33)) ? spareDeployed_dmi3; + + /** IOMCFIR[34] + * RX BUS 3 Max Spares Exceeded + */ + (rIOMCFIR, bit(34)) ? maxSparesExceeded_dmi3; + + /** IOMCFIR[35] + * RX BUS 3 Recal or dynamic repair error + */ + (rIOMCFIR, bit(35)) ? defaultMaskedError; + + /** IOMCFIR[36] + * RX BUS 3 Too Many Bus Errors + */ + (rIOMCFIR, bit(36)) ? tooManyBusErrors_dmi3; + + /** IOMCFIR[37:39] + * spare + */ + (rIOMCFIR, bit(37|38|39)) ? defaultMaskedError; + + /** IOMCFIR[40:47] + * reserved + */ + (rIOMCFIR, bit(40|41|42|43|44|45|46|47)) ? defaultMaskedError; + + /** IOMCFIR[48] + * SCOM error + */ + (rIOMCFIR, bit(48)) ? defaultMaskedError; + + /** IOMCFIR[49] + * SCOM error clone + */ + (rIOMCFIR, bit(49)) ? defaultMaskedError; + +}; + +################################################################################ +# P9 MC 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] + * + */ + (rMCPPEFIR, bit(0)) ? defaultMaskedError; + + /** MCPPEFIR[1] + * + */ + (rMCPPEFIR, bit(1)) ? defaultMaskedError; + + /** MCPPEFIR[2] + * + */ + (rMCPPEFIR, bit(2)) ? defaultMaskedError; + + /** MCPPEFIR[3] + * + */ + (rMCPPEFIR, bit(3)) ? defaultMaskedError; + + /** MCPPEFIR[4] + * + */ + (rMCPPEFIR, bit(4)) ? defaultMaskedError; + + /** MCPPEFIR[5] + * + */ + (rMCPPEFIR, bit(5)) ? defaultMaskedError; + + /** MCPPEFIR[6] + * + */ + (rMCPPEFIR, bit(6)) ? defaultMaskedError; + + /** MCPPEFIR[7] + * + */ + (rMCPPEFIR, bit(7)) ? defaultMaskedError; + + /** MCPPEFIR[8] + * + */ + (rMCPPEFIR, bit(8)) ? defaultMaskedError; + + /** MCPPEFIR[9] + * + */ + (rMCPPEFIR, bit(9)) ? defaultMaskedError; + + /** MCPPEFIR[10] + * + */ + (rMCPPEFIR, bit(10)) ? defaultMaskedError; + + /** MCPPEFIR[11] + * SCOM error + */ + (rMCPPEFIR, bit(11)) ? defaultMaskedError; + + /** MCPPEFIR[12] + * SCOM error clone + */ + (rMCPPEFIR, bit(12)) ? 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_ATTN + */ + (rMCBISTFIR, bit(0)) ? defaultMaskedError; + + /** MCBISTFIR[1] + * WAT_DEBUG_REG_PE + */ + (rMCBISTFIR, bit(1)) ? defaultMaskedError; + + /** MCBISTFIR[2] + * SCOM_RECOVERABLE_REG_PE + */ + (rMCBISTFIR, bit(2)) ? self_th_1; + + /** MCBISTFIR[3] + * spare + */ + (rMCBISTFIR, bit(3)) ? defaultMaskedError; + + /** MCBISTFIR[4] + * INTERNAL_SCOM_ERROR + */ + (rMCBISTFIR, bit(4)) ? defaultMaskedError; + + /** MCBISTFIR[5] + * INTERNAL_SCOM_ERROR_CLONE + */ + (rMCBISTFIR, bit(5)) ? defaultMaskedError; + +}; + + ############################################################################## + # # + # # ### # + # # # ## ##### ### ### # # # # # # ### ### ### ### # + # # # # # # # # # ## # # # # # # # # # # + # ####### # # # # # # # # # # ##### ### ### ## ### # + # # # # # # # # # # ## # # # # # # # # # # + # # # ## # ### ### # # ### ### # # ### ### ### ### # + # # + ############################################################################## + +# Include the common action set. +.include "p9_common_actions.rule"; +# Include the chip-specific action set. +.include "p9_mc_actions.rule"; + +actionclass analyzeConnectedDMI0 { analyze(connected(TYPE_DMI, 0)); }; +actionclass analyzeConnectedDMI1 { analyze(connected(TYPE_DMI, 1)); }; +actionclass analyzeConnectedDMI2 { analyze(connected(TYPE_DMI, 2)); }; +actionclass analyzeConnectedDMI3 { analyze(connected(TYPE_DMI, 3)); }; diff --git a/src/usr/diag/prdf/common/plat/p9/p9_mc_actions.rule b/src/usr/diag/prdf/common/plat/p9/p9_mc_actions.rule new file mode 100644 index 000000000..1dab81e59 --- /dev/null +++ b/src/usr/diag/prdf/common/plat/p9/p9_mc_actions.rule @@ -0,0 +1,39 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/usr/diag/prdf/common/plat/p9/p9_mc_actions.rule $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2017 +# [+] 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 + +# TODO: RTC 144057 upate actions for all four DMI buses on this MC target. +actionclass spareDeployed_dmi0 {}; +actionclass spareDeployed_dmi1 {}; +actionclass spareDeployed_dmi2 {}; +actionclass spareDeployed_dmi3 {}; +actionclass maxSparesExceeded_dmi0 {}; +actionclass maxSparesExceeded_dmi1 {}; +actionclass maxSparesExceeded_dmi2 {}; +actionclass maxSparesExceeded_dmi3 {}; +actionclass tooManyBusErrors_dmi0 {}; +actionclass tooManyBusErrors_dmi1 {}; +actionclass tooManyBusErrors_dmi2 {}; +actionclass tooManyBusErrors_dmi3 {}; + diff --git a/src/usr/diag/prdf/common/plat/p9/p9_mcbist.rule b/src/usr/diag/prdf/common/plat/p9/p9_mcbist.rule index 4ed27c31f..d4d3aad05 100644 --- a/src/usr/diag/prdf/common/plat/p9/p9_mcbist.rule +++ b/src/usr/diag/prdf/common/plat/p9/p9_mcbist.rule @@ -179,7 +179,6 @@ chip p9_mcbist capture req nonzero("MCBISTFIR"); }; - # Include registers not defined by the xml .include "p9_mcbist_regs.rule"; diff --git a/src/usr/diag/prdf/common/plat/p9/p9_mi.rule b/src/usr/diag/prdf/common/plat/p9/p9_mi.rule new file mode 100644 index 000000000..2f763fa66 --- /dev/null +++ b/src/usr/diag/prdf/common/plat/p9/p9_mi.rule @@ -0,0 +1,248 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/usr/diag/prdf/common/plat/p9/p9_mi.rule $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2017 +# [+] 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 p9_mi +{ + name "P9 MI chiplet"; + targettype TYPE_MI; + sigoff 0x9200; + 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 "p9_mi_regs.rule"; + +}; + + ############################################################################## + # # + # #### # # + # # # # # # ##### ### # # # ## ##### ### ### # # ### # + # # # # # # # # # # # # # # # # # ## # # # + # #### # # # #### ### # ####### # # # # # # # # ### # + # # # # # # # # # # # # # # # # # # ## # # + # # # ### #### ##### ### # # # ## # ### ### # # ### # + # # + ############################################################################## + +################################################################################ +# 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( 0, 8 ) +{ + /** MCFIR[0] + * mc internal recoverable eror + */ + (rMCFIR, bit(0)) ? self_th_1; + + /** MCFIR[1] + * mc internal non recovervable error + */ + (rMCFIR, bit(1)) ? self_th_1; + + /** MCFIR[2] + * powerbus protocol error + */ + (rMCFIR, bit(2)) ? level2_th_1; + + /** MCFIR[3] + * bat with with incorrect tty pe + */ + (rMCFIR, bit(3)) ? defaultMaskedError; + + /** MCFIR[4] + * multiple bar + */ + (rMCFIR, bit(4)) ? level2_M_self_L_th_1; + + /** MCFIR[5:7] + * reserved + */ + (rMCFIR, bit(5|6|7)) ? defaultMaskedError; + + /** MCFIR[8] + * command list timeout + */ + (rMCFIR, bit(8)) ? threshold_and_mask_level2; + + /** 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] + * mirror action occurred + */ + (rMCFIR, bit(15)) ? defaultMaskedError; + + /** MCFIR[16] + * reserved + */ + (rMCFIR, bit(16)) ? defaultMaskedError; + + /** MCFIR[17] + * debug config reg error + */ + (rMCFIR, bit(17)) ? defaultMaskedError; + + /** MCFIR[18] + * + */ + (rMCFIR, bit(18)) ? defaultMaskedError; + + /** MCFIR[19] + * + */ + (rMCFIR, bit(19)) ? defaultMaskedError; + + /** MCFIR[20] + * reserved + */ + (rMCFIR, bit(20)) ? defaultMaskedError; + + /** MCFIR[21] + * + */ + (rMCFIR, bit(21)) ? defaultMaskedError; + + /** MCFIR[22] + * + */ + (rMCFIR, bit(22)) ? defaultMaskedError; + + /** MCFIR[23] + * reserved + */ + (rMCFIR, bit(23)) ? defaultMaskedError; + + /** MCFIR[24] + * scom ERROR + */ + (rMCFIR, bit(24)) ? defaultMaskedError; + + /** MCFIR[25] + * scom error + */ + (rMCFIR, bit(25)) ? defaultMaskedError; + +}; + + ############################################################################## + # # + # # ### # + # # # ## ##### ### ### # # # # # # ### ### ### ### # + # # # # # # # # # ## # # # # # # # # # # + # ####### # # # # # # # # # # ##### ### ### ## ### # + # # # # # # # # # # ## # # # # # # # # # # + # # # ## # ### ### # # ### ### # # ### ### ### ### # + # # + ############################################################################## + +# Include the common action set. +.include "p9_common_actions.rule"; +# Include the chip-specific action set. +.include "p9_mi_actions.rule"; + diff --git a/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule b/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule index 1b716e68c..f96134eb5 100644 --- a/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule +++ b/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule @@ -8473,6 +8473,7 @@ group gPCI2_CHIPLET_FIR filter singlebit # Include the common action set. .include "p9_common_actions.rule"; # Include the chip-specific action set. +.include "p9_proc_common_actions.rule"; .include "p9_nimbus_actions.rule"; actionclass analyzeConnectedEQ0 { analyze(connected(TYPE_EQ, 0)); }; diff --git a/src/usr/diag/prdf/common/plat/p9/p9_nimbus_actions.rule b/src/usr/diag/prdf/common/plat/p9/p9_nimbus_actions.rule index 8472e9cce..17d8a2223 100644 --- a/src/usr/diag/prdf/common/plat/p9/p9_nimbus_actions.rule +++ b/src/usr/diag/prdf/common/plat/p9/p9_nimbus_actions.rule @@ -22,80 +22,6 @@ # permissions and limitations under the License. # # IBM_PROLOG_END_TAG -actionclass level2_M_self_L_th_32perDay -{ - callout2ndLvlMed; - calloutSelfLow; - threshold32pday; -}; - -/** PLL Threshold of 2 per 5 mins */ -actionclass thresholdPll -{ - threshold( field(2 / 5 min) ); -}; - -# This action is for the case where TP_LFIR[21] comes on -# but PLL code does not isolate to any PLL errors. The -# threshold is the same as PLL one 2 per 5 mins with -# callout/gard the chip at threshold along with PLL scom -# data captured. -/** PCB Slave Internal parity error action */ -actionclass pcb_slave_internal_parity -{ - capture(PllFIRs); - calloutSelfHigh; - thresholdPll; - funccall("capturePllFfdc"); - funccall("clearParityError"); -}; - -/** - * Threshold 32/day (field) and 1 (mnfg). Do not predictively callout on - * threshold, instead just mask. - */ -actionclass pb_cent_hang_recovery_gte -{ - capture(PbCentMode); - calloutSelfMed; - threshold32pday; - funccall("ClearServiceCallFlag_mnfgInfo"); -}; - -/** Callout connected NX, threshold 32/day */ -actionclass nx_th_32perDay -{ - callout(connected(TYPE_NX,0), MRU_MED); - threshold32pday; -}; - -/** Callout connected NX, threshold 1 */ -actionclass nx_th_1 -{ - callout(connected(TYPE_NX,0), MRU_MED); - threshold1; -}; - -/** Callout connected NX, threshold 1, SUE originated from somewhere else */ -actionclass nx_th_1_SUE { nx_th_1; SueSeen; }; - -actionclass analyzePciChipletFir0 -{ - capture(PciChipletFir0); - analyze(gPCI0_CHIPLET_FIR); -}; - -actionclass analyzePciChipletFir1 -{ - capture(PciChipletFir1); - analyze(gPCI1_CHIPLET_FIR); -}; - -actionclass analyzePciChipletFir2 -{ - capture(PciChipletFir2); - analyze(gPCI2_CHIPLET_FIR); -}; actionclass aNPU0FIR_NDD10 {capture(cNPU0FIR_NDD10); analyze(gNPU0FIR_NDD10);}; actionclass aNPU1FIR_NDD10 {capture(cNPU1FIR_NDD10); analyze(gNPU1FIR_NDD10);}; @@ -115,8 +41,3 @@ actionclass analyzeNPU1FIR try( funccall("checkNotNimbusDD10"), aNPU1FIR ); }; -actionclass deadmanTimer -{ - funccall("handleDeadmanTimer"); -}; - diff --git a/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule b/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule new file mode 100644 index 000000000..2ebd0d0c6 --- /dev/null +++ b/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule @@ -0,0 +1,105 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2017 +# [+] 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 + +actionclass level2_M_self_L_th_32perDay +{ + callout2ndLvlMed; + calloutSelfLow; + threshold32pday; +}; + +/** Callout connected NX, threshold 32/day */ +actionclass nx_th_32perDay +{ + callout(connected(TYPE_NX,0), MRU_MED); + threshold32pday; +}; + +/** Callout connected NX, threshold 1 */ +actionclass nx_th_1 +{ + callout(connected(TYPE_NX,0), MRU_MED); + threshold1; +}; + +/** Callout connected NX, threshold 1, SUE originated from somewhere else */ +actionclass nx_th_1_SUE { nx_th_1; SueSeen; }; + +actionclass analyzePciChipletFir0 +{ + capture(PciChipletFir0); + analyze(gPCI0_CHIPLET_FIR); +}; + +actionclass analyzePciChipletFir1 +{ + capture(PciChipletFir1); + analyze(gPCI1_CHIPLET_FIR); +}; + +actionclass analyzePciChipletFir2 +{ + capture(PciChipletFir2); + analyze(gPCI2_CHIPLET_FIR); +}; + +/** PLL Threshold of 2 per 5 mins */ +actionclass thresholdPll +{ + threshold( field(2 / 5 min) ); +}; + +# This action is for the case where TP_LFIR[21] comes on +# but PLL code does not isolate to any PLL errors. The +# threshold is the same as PLL one 2 per 5 mins with +# callout/gard the chip at threshold along with PLL scom +# data captured. +/** PCB Slave Internal parity error action */ +actionclass pcb_slave_internal_parity +{ + capture(PllFIRs); + calloutSelfHigh; + thresholdPll; + funccall("capturePllFfdc"); + funccall("clearParityError"); +}; + +/** + * Threshold 32/day (field) and 1 (mnfg). Do not predictively callout on + * threshold, instead just mask. + */ +actionclass pb_cent_hang_recovery_gte +{ + capture(PbCentMode); + calloutSelfMed; + threshold32pday; + funccall("ClearServiceCallFlag_mnfgInfo"); +}; + +actionclass deadmanTimer +{ + funccall("handleDeadmanTimer"); +}; + diff --git a/src/usr/diag/prdf/common/plat/p9/prdfCommonPlugins.C b/src/usr/diag/prdf/common/plat/p9/prdfCommonPlugins.C index eeedc505b..06d524416 100644 --- a/src/usr/diag/prdf/common/plat/p9/prdfCommonPlugins.C +++ b/src/usr/diag/prdf/common/plat/p9/prdfCommonPlugins.C @@ -64,18 +64,22 @@ int32_t ClearServiceCallFlag( ExtensibleChip * i_chip, return SUCCESS; } -PRDF_PLUGIN_DEFINE_NS( p9_nimbus, CommonPlugins, ClearServiceCallFlag ); -PRDF_PLUGIN_DEFINE_NS( p9_xbus, CommonPlugins, ClearServiceCallFlag ); -PRDF_PLUGIN_DEFINE_NS( p9_obus, CommonPlugins, ClearServiceCallFlag ); -PRDF_PLUGIN_DEFINE_NS( p9_ex, CommonPlugins, ClearServiceCallFlag ); -PRDF_PLUGIN_DEFINE_NS( p9_ec, CommonPlugins, ClearServiceCallFlag ); -PRDF_PLUGIN_DEFINE_NS( p9_eq, CommonPlugins, ClearServiceCallFlag ); -PRDF_PLUGIN_DEFINE_NS( p9_pec, CommonPlugins, ClearServiceCallFlag ); -PRDF_PLUGIN_DEFINE_NS( p9_mcbist, CommonPlugins, ClearServiceCallFlag ); -PRDF_PLUGIN_DEFINE_NS( p9_mca, CommonPlugins, ClearServiceCallFlag ); -PRDF_PLUGIN_DEFINE_NS( p9_capp, CommonPlugins, ClearServiceCallFlag ); -PRDF_PLUGIN_DEFINE_NS( p9_phb, CommonPlugins, ClearServiceCallFlag ); -PRDF_PLUGIN_DEFINE_NS( p9_mcs, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_xbus, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_obus, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_ex, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_ec, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_eq, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_pec, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_mcbist, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_mca, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_capp, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_phb, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_mcs, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_mc, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_mi, CommonPlugins, ClearServiceCallFlag ); +PRDF_PLUGIN_DEFINE_NS( p9_dmi, CommonPlugins, ClearServiceCallFlag ); /** * @brief Clear the service call flag (field and MNFG) so that thresholding @@ -94,8 +98,8 @@ int32_t ClearServiceCallFlag_mnfgInfo( ExtensibleChip * i_chip, return SUCCESS; } -PRDF_PLUGIN_DEFINE_NS(p9_nimbus, CommonPlugins, ClearServiceCallFlag_mnfgInfo); - +PRDF_PLUGIN_DEFINE_NS(p9_nimbus, CommonPlugins, ClearServiceCallFlag_mnfgInfo); +PRDF_PLUGIN_DEFINE_NS(p9_cumulus, CommonPlugins, ClearServiceCallFlag_mnfgInfo); /** * @brief PRD will perform error isolation for certain errors that may cause @@ -131,8 +135,9 @@ int32_t HwpErrorIsolation( ExtensibleChip * i_chip, return SUCCESS; } -PRDF_PLUGIN_DEFINE_NS(p9_nimbus, CommonPlugins, HwpErrorIsolation); -PRDF_PLUGIN_DEFINE_NS(p9_mca, CommonPlugins, HwpErrorIsolation); +PRDF_PLUGIN_DEFINE_NS(p9_nimbus, CommonPlugins, HwpErrorIsolation); +PRDF_PLUGIN_DEFINE_NS(p9_cumulus, CommonPlugins, HwpErrorIsolation); +PRDF_PLUGIN_DEFINE_NS(p9_mca, CommonPlugins, HwpErrorIsolation); } // namespace CommonPlugins ends diff --git a/src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C b/src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C index 6316694fc..758fc1af9 100755 --- a/src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C +++ b/src/usr/diag/prdf/common/plat/p9/prdfP9Configurator.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016 */ +/* Contributors Listed Below - COPYRIGHT 2016,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -234,7 +234,21 @@ errlHndl_t PlatConfigurator::addDomainChips( TARGETING::TYPE i_type, const char * fileName = ""; switch ( i_type ) { - case TYPE_PROC: fileName = p9_nimbus; break; + case TYPE_PROC: + { + // Get the PROC model. We don't support mixed PROC models so + // should be able to use the first PROC in the list. + TARGETING::MODEL model = getChipModel( trgtList[0] ); + + if ( MODEL_NIMBUS == model ) fileName = p9_nimbus; + else if ( MODEL_CUMULUS == model ) fileName = p9_cumulus; + else + // Print a trace statement, but do not fail the build. + PRDF_ERR( "[addDomainChips] Unsupported PROC model: %d", + model ); + break; + } + case TYPE_EQ: fileName = p9_eq; break; case TYPE_EX: fileName = p9_ex; break; case TYPE_CORE: fileName = p9_ec; break; @@ -246,6 +260,9 @@ errlHndl_t PlatConfigurator::addDomainChips( TARGETING::TYPE i_type, case TYPE_MCBIST: fileName = p9_mcbist; break; case TYPE_MCS: fileName = p9_mcs; break; case TYPE_MCA: fileName = p9_mca; break; + case TYPE_MC: fileName = p9_mc; break; + case TYPE_MI: fileName = p9_mi; break; + case TYPE_DMI: fileName = p9_dmi; break; default: // Print a trace statement, but do not fail the build. diff --git a/src/usr/diag/prdf/common/plat/p9/prdfP9Pll.C b/src/usr/diag/prdf/common/plat/p9/prdfP9Pll.C index 2f5994e2b..9f90c2927 100644 --- a/src/usr/diag/prdf/common/plat/p9/prdfP9Pll.C +++ b/src/usr/diag/prdf/common/plat/p9/prdfP9Pll.C @@ -325,7 +325,8 @@ int32_t CheckErrorType( ExtensibleChip * i_chip, uint32_t & o_errType ) #undef PRDF_FUNC } -PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, CheckErrorType ); +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, CheckErrorType ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, CheckErrorType ); /** * @brief Clear Chiplet PCB slave reg parity errors @@ -353,7 +354,8 @@ int32_t clearParityError( ExtensibleChip * i_chip, return rc; #undef PRDF_FUNC } -PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, clearParityError ); +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, clearParityError ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, clearParityError ); /** * @brief Query the PLL chip for a PLL error on P9 @@ -388,7 +390,8 @@ int32_t QueryPll( ExtensibleChip * i_chip, #undef PRDF_FUNC } -PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, QueryPll ); +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, QueryPll ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, QueryPll ); /** * @brief Clear the PLL error for P9 Plugin @@ -432,7 +435,8 @@ int32_t ClearPll( ExtensibleChip * i_chip, #undef PRDF_FUNC } -PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, ClearPll ); +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, ClearPll ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, ClearPll ); /** * @brief Mask the PLL error for P9 Plugin @@ -490,7 +494,8 @@ int32_t MaskPll( ExtensibleChip * i_chip, return rc; } -PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, MaskPll ); +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, MaskPll ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, MaskPll ); /** * @brief capture additional PLL FFDC @@ -524,8 +529,8 @@ int32_t capturePllFfdc( ExtensibleChip * i_chip, #undef PRDF_FUNC } -PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, capturePllFfdc ); - +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, capturePllFfdc ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, capturePllFfdc ); } // end namespace Proc diff --git a/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C b/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C index ab0476f98..2593492d9 100644 --- a/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C +++ b/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C @@ -85,7 +85,8 @@ int32_t CheckForRecovered( ExtensibleChip * i_chip, return SUCCESS; } -PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, CheckForRecovered ); +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, CheckForRecovered ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, CheckForRecovered ); //------------------------------------------------------------------------------ /** @@ -165,7 +166,8 @@ int32_t CheckForRecoveredSev(ExtensibleChip * i_chip, uint32_t & o_sev) return SUCCESS; } -PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, CheckForRecoveredSev ); +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, CheckForRecoveredSev ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, CheckForRecoveredSev ); /** @func GetCheckstopInfo * To be called from the fabric domain to gather Checkstop information. This @@ -261,7 +263,8 @@ int32_t GetCheckstopInfo( ExtensibleChip * i_chip, return SUCCESS; } -PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, GetCheckstopInfo ); +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, GetCheckstopInfo ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, GetCheckstopInfo ); //------------------------------------------------------------------------------ @@ -312,7 +315,8 @@ int32_t isHostAttnFirAccessible(ExtensibleChip * i_chip, bool & o_isOkToAccess) return SUCCESS; } -PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, isHostAttnFirAccessible ); +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, isHostAttnFirAccessible ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, isHostAttnFirAccessible ); //------------------------------------------------------------------------------ @@ -326,7 +330,8 @@ int32_t isUcsFirAccessible(ExtensibleChip * i_chip, bool & o_isOkToAccess) return SUCCESS; } -PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, isUcsFirAccessible ); +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, isUcsFirAccessible ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, isUcsFirAccessible ); //------------------------------------------------------------------------------ @@ -343,9 +348,10 @@ int32_t handleDeadmanTimer( ExtensibleChip * i_chip, return SUCCESS; } -PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, handleDeadmanTimer ); -//------------------------------------------------------------------------------ +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, handleDeadmanTimer ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, handleDeadmanTimer ); +//------------------------------------------------------------------------------ } // end namespace Proc diff --git a/src/usr/diag/prdf/common/rule/prdfRuleFiles.C b/src/usr/diag/prdf/common/rule/prdfRuleFiles.C index c0360beec..e43b28160 100755 --- a/src/usr/diag/prdf/common/rule/prdfRuleFiles.C +++ b/src/usr/diag/prdf/common/rule/prdfRuleFiles.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016 */ +/* Contributors Listed Below - COPYRIGHT 2016,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -35,6 +35,7 @@ namespace PRDF { // P9 Chip const char * p9_nimbus = "p9_nimbus"; + const char * p9_cumulus = "p9_cumulus"; const char * p9_eq = "p9_eq"; const char * p9_ex = "p9_ex"; const char * p9_ec = "p9_ec"; @@ -46,6 +47,9 @@ namespace PRDF const char * p9_mcbist = "p9_mcbist"; const char * p9_mcs = "p9_mcs"; const char * p9_mca = "p9_mca"; + const char * p9_mc = "p9_mc"; + const char * p9_mi = "p9_mi"; + const char * p9_dmi = "p9_dmi"; // Pegasus Centaur Chip // const char * Membuf = "Membuf"; diff --git a/src/usr/diag/prdf/common/rule/prdfRuleFiles.H b/src/usr/diag/prdf/common/rule/prdfRuleFiles.H index 73ffbbcb0..e2bd96c82 100755 --- a/src/usr/diag/prdf/common/rule/prdfRuleFiles.H +++ b/src/usr/diag/prdf/common/rule/prdfRuleFiles.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016 */ +/* Contributors Listed Below - COPYRIGHT 2016,2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -36,6 +36,7 @@ namespace PRDF // P9 Chip extern const char * p9_nimbus; + extern const char * p9_cumulus; extern const char * p9_eq; extern const char * p9_ex; extern const char * p9_ec; @@ -47,6 +48,9 @@ namespace PRDF extern const char * p9_mcbist; extern const char * p9_mcs; extern const char * p9_mca; + extern const char * p9_mc; + extern const char * p9_mi; + extern const char * p9_dmi; // Centaur Chip // extern const char * Membuf; diff --git a/src/usr/diag/prdf/common/rule/prdf_rule.mk b/src/usr/diag/prdf/common/rule/prdf_rule.mk index 1a4665696..5209b7bdf 100644 --- a/src/usr/diag/prdf/common/rule/prdf_rule.mk +++ b/src/usr/diag/prdf/common/rule/prdf_rule.mk @@ -25,6 +25,7 @@ # Add Rule tables here: PRDR_RULE_TABLES += p9_nimbus.prf +PRDR_RULE_TABLES += p9_cumulus.prf PRDR_RULE_TABLES += p9_eq.prf PRDR_RULE_TABLES += p9_ex.prf PRDR_RULE_TABLES += p9_ec.prf @@ -36,6 +37,9 @@ PRDR_RULE_TABLES += p9_xbus.prf PRDR_RULE_TABLES += p9_mcbist.prf PRDR_RULE_TABLES += p9_mcs.prf PRDR_RULE_TABLES += p9_mca.prf +PRDR_RULE_TABLES += p9_mc.prf +PRDR_RULE_TABLES += p9_mi.prf +PRDR_RULE_TABLES += p9_dmi.prf prd_rule_prf_targets = ${PRDR_RULE_TABLES} prd_rule_err_targets = ${PRDR_RULE_TABLES:.prf=.prf.err.C} |