diff options
Diffstat (limited to 'src/usr/diag/prdf/common')
6 files changed, 62 insertions, 54 deletions
diff --git a/src/usr/diag/prdf/common/plat/pegasus/Mba.rule b/src/usr/diag/prdf/common/plat/pegasus/Mba.rule index e8d454fbc..e6593d656 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Mba.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Mba.rule @@ -69,6 +69,7 @@ chip Mba reset (&, 0x03010601); mask (|, 0x03010605); capture group FirRegs; + capture group MemChipletRegs; }; register MBAFIR_MASK @@ -76,6 +77,7 @@ chip Mba name "MBU.MBA01.MBA_MCBIST.SCOMFIR.MBAFIRMASK"; scomaddr 0x03010603; capture group FirRegs; + capture group MemChipletRegs; }; register MBAFIR_ACT0 @@ -83,6 +85,7 @@ chip Mba name "MBU.MBA01.MBA_MCBIST.SCOMFIR.MBAFIRACT0"; scomaddr 0x03010606; capture group FirRegs; + capture group MemChipletRegs; capture req nonzero("MBAFIR"); }; @@ -91,6 +94,7 @@ chip Mba name "MBU.MBA01.MBA_MCBIST.SCOMFIR.MBAFIRACT1"; scomaddr 0x03010607; capture group FirRegs; + capture group MemChipletRegs; capture req nonzero("MBAFIR"); }; @@ -106,6 +110,7 @@ chip Mba scomaddr 0x0301041b; reset (&, 0x0301041c); capture group FirRegs; + capture group MemChipletRegs; }; ############################################################################ @@ -119,6 +124,7 @@ chip Mba reset (&, 0x800200910301143F); mask (|, 0x800200950301143F); capture group FirRegs; + capture group MemChipletRegs; }; register MBADDRPHYFIR_AND @@ -134,6 +140,7 @@ chip Mba name "DPHY01.PHY01_DDRPHY_FIR_MASK_REG"; scomaddr 0x800200930301143F; capture group FirRegs; + capture group MemChipletRegs; }; register MBADDRPHYFIR_ACT0 @@ -141,6 +148,7 @@ chip Mba name "DPHY01.PHY01_DDRPHY_FIR_ACTION0_REG"; scomaddr 0x800200960301143F; capture group FirRegs; + capture group MemChipletRegs; capture req nonzero("MBADDRPHYFIR"); }; @@ -149,6 +157,7 @@ chip Mba name "DPHY01.PHY01_DDRPHY_FIR_ACTION1_REG"; scomaddr 0x800200970301143F; capture group FirRegs; + capture group MemChipletRegs; capture req nonzero("MBADDRPHYFIR"); }; @@ -163,6 +172,7 @@ chip Mba reset (&, 0x03010401); mask (|, 0x03010405); capture group FirRegs; + capture group MemChipletRegs; }; register MBACALFIR_AND @@ -178,6 +188,7 @@ chip Mba name "MBU.MBA01.MBA_SRQ.MBACALFIR_MASK"; scomaddr 0x03010403; capture group FirRegs; + capture group MemChipletRegs; }; register MBACALFIR_ACT0 @@ -185,6 +196,7 @@ chip Mba name "MBU.MBA01.MBA_SRQ.MBACALFIR_ACTION0"; scomaddr 0x03010406; capture group FirRegs; + capture group MemChipletRegs; capture req nonzero("MBACALFIR"); }; @@ -193,6 +205,7 @@ chip Mba name "MBU.MBA01.MBA_SRQ.MBACALFIR_ACTION1"; scomaddr 0x03010407; capture group FirRegs; + capture group MemChipletRegs; capture req nonzero("MBACALFIR"); }; @@ -207,6 +220,7 @@ chip Mba reset (&, 0x03010612); mask (|, 0x03010614); capture group FirRegs; + capture group MemChipletRegs; }; register MBASPA_AND @@ -222,6 +236,7 @@ chip Mba name "MBU.MBA01.MBA_MCBIST.SCOMFIR.MBSPAMSKQ"; scomaddr 0x03010614; capture group FirRegs; + capture group MemChipletRegs; }; ############################################################################ @@ -233,6 +248,7 @@ chip Mba name "MBU.MBA01.MBA_SRQ.MBA_ERR_REPORTQ"; scomaddr 0x0301041A; capture group CerrRegs; + capture group MemChipletRegs; }; register MBA_MCBERRPTQ @@ -240,6 +256,7 @@ chip Mba name "MBU.MBA01.MBA_MCBIST.SCOMFIR.MBA_MCBERRPTQ"; scomaddr 0x030106E7; capture group CerrRegs; + capture group MemChipletRegs; }; register DDRPHY_APB_FIR_ERR0_P0 @@ -247,6 +264,7 @@ chip Mba name "DPHY01.DDRPHY_APB_FIR_ERR0_P0"; scomaddr 0x8000D0060301143F; capture group CerrRegs; + capture group MemChipletRegs; }; register DDRPHY_APB_FIR_ERR1_P0 @@ -254,6 +272,7 @@ chip Mba name "DPHY01.DDRPHY_APB_FIR_ERR1_P0"; scomaddr 0x8000D0070301143F; capture group CerrRegs; + capture group MemChipletRegs; }; register DDRPHY_APB_FIR_ERR0_P1 @@ -261,6 +280,7 @@ chip Mba name "DPHY01.DDRPHY_APB_FIR_ERR0_P1"; scomaddr 0x8001D0060301143F; capture group CerrRegs; + capture group MemChipletRegs; }; register DDRPHY_APB_FIR_ERR1_P1 @@ -268,6 +288,7 @@ chip Mba name "DPHY01.DDRPHY_APB_FIR_ERR1_P1"; scomaddr 0x8001D0070301143F; capture group CerrRegs; + capture group MemChipletRegs; }; ############################################################################ diff --git a/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_MEM.rule b/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_MEM.rule index 63016200b..f2da800dc 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_MEM.rule +++ b/src/usr/diag/prdf/common/plat/pegasus/Membuf_regs_MEM.rule @@ -29,40 +29,40 @@ { name "TCM.XFIR"; scomaddr 0x03040000; - capture group default; capture group FirRegs; + capture group MemChipletRegs; }; register MEM_CHIPLET_RE_FIR { name "TCM.RFIR"; scomaddr 0x03040001; - capture group default; capture group FirRegs; + capture group MemChipletRegs; }; register MEM_CHIPLET_FIR_MASK { name "TCM.FIR_MASK"; scomaddr 0x03040002; - capture group default; capture group FirRegs; + capture group MemChipletRegs; }; register MEM_CHIPLET_SPA { name "TCM.EPS.FIR.SPATTN"; scomaddr 0x03040004; - capture group default; capture group FirRegs; + capture group MemChipletRegs; }; register MEM_CHIPLET_SPA_MASK { name "TCM.EPS.FIR.SPA_MASK"; scomaddr 0x03040007; - capture group default; capture group FirRegs; + capture group MemChipletRegs; }; ############################################################################ @@ -75,16 +75,16 @@ scomaddr 0x0304000a; reset (&, 0x0304000b); mask (|, 0x0304000f); - capture group default; capture group FirRegs; + capture group MemChipletRegs; }; register MEM_LFIR_MASK { name "TCM.EPS.FIR.LOCAL_FIR_MASK"; scomaddr 0x0304000d; - capture group default; capture group FirRegs; + capture group MemChipletRegs; }; register MEM_LFIR_ACT0 @@ -92,8 +92,8 @@ name "TCM.EPS.FIR.LOCAL_FIR_ACTION0"; scomaddr 0x03040010; capture type secondary; - capture group default; capture group FirRegs; + capture group MemChipletRegs; capture req nonzero("MEM_LFIR"); }; @@ -102,8 +102,8 @@ name "TCM.EPS.FIR.LOCAL_FIR_ACTION1"; scomaddr 0x03040011; capture type secondary; - capture group default; capture group FirRegs; + capture group MemChipletRegs; capture req nonzero("MEM_LFIR"); }; @@ -117,8 +117,8 @@ { name "FBIST.FBM.FBM_FIR_REG"; scomaddr 0x03010480; - capture group default; capture group FirRegs; + capture group MemChipletRegs; }; ############################################################################ @@ -129,7 +129,7 @@ { name "TCM.ERROR_STATUS"; scomaddr 0x03030009; - capture group default; capture group CerrRegs; + capture group MemChipletRegs; }; diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.C index f0d3c6bd3..beeebf421 100644 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.C @@ -54,9 +54,9 @@ namespace CenMbaCaptureData //------------------------------------------------------------------------------ -void addMbaFirRegs( ExtensibleChip * i_membChip, CaptureData & io_cd ) +void addMemChipletFirRegs( ExtensibleChip * i_membChip, CaptureData & io_cd ) { - #define PRDF_FUNC "[CenMbaCaptureData::addMbaFirRegs] " + #define PRDF_FUNC "[CenMbaCaptureData::addMemChipletFirRegs] " int32_t l_rc = SUCCESS; @@ -75,57 +75,44 @@ void addMbaFirRegs( ExtensibleChip * i_membChip, CaptureData & io_cd ) break; } - SCAN_COMM_REGISTER_CLASS * cs_reg, * re_reg, * firmsk_reg; - cs_reg = i_membChip->getRegister("MEM_CHIPLET_CS_FIR"); - re_reg = i_membChip->getRegister("MEM_CHIPLET_RE_FIR"); - firmsk_reg = i_membChip->getRegister("MEM_CHIPLET_FIR_MASK"); - - SCAN_COMM_REGISTER_CLASS * spa_reg, * spamsk_reg; - spa_reg = i_membChip->getRegister("MEM_CHIPLET_SPA"); - spamsk_reg = i_membChip->getRegister("MEM_CHIPLET_SPA_MASK"); - - l_rc = cs_reg->Read() | re_reg->Read() | firmsk_reg->Read(); - l_rc |= spa_reg->Read() | spamsk_reg->Read(); + SCAN_COMM_REGISTER_CLASS * cs_global, * re_global, * spa_global; + cs_global = i_membChip->getRegister("GLOBAL_CS_FIR"); + re_global = i_membChip->getRegister("GLOBAL_RE_FIR"); + spa_global = i_membChip->getRegister("GLOBAL_SPA"); + l_rc = cs_global->Read() | re_global->Read() | spa_global->Read(); if ( SUCCESS != l_rc ) { - PRDF_ERR( PRDF_FUNC"Failed to read a MEM_CHIPLET register on " + PRDF_ERR( PRDF_FUNC"Failed to read a GLOBAL register on " "0x%08x", i_membChip->GetId() ); break; } - uint16_t cs_tmp = cs_reg->GetBitFieldJustified(0,16); - uint16_t re_tmp = re_reg->GetBitFieldJustified(0,16) >> 2; - uint16_t msk_tmp = firmsk_reg->GetBitFieldJustified(0,16); - - uint16_t csre_attns = (cs_tmp | re_tmp) & ~msk_tmp; - - uint16_t spa_attns = spa_reg->GetBitFieldJustified(0,16) & - ~spamsk_reg->GetBitFieldJustified(0,16); + // If global bit 3 is not on, can't scom mem chiplets or mba's + if( ! (cs_global->IsBitSet(3) || + re_global->IsBitSet(3) || + spa_global->IsBitSet(3)) ) + { + break; + } - uint16_t mba_csre_msk[] = { 0x0648, // bits 5, 6, 9, 12 - 0x01a4 }; // bits 7, 8, 10, 13 - uint16_t mba_spa_msk[] = { 0x8000, // bit 0 - 0x4000 }; // bit 1 + i_membChip->CaptureErrorData(io_cd, + Util::hashString("MemChipletRegs")); CenMembufDataBundle * membdb = getMembufDataBundle( i_membChip ); for ( uint32_t i = 0; i < MAX_MBA_PER_MEMBUF; i++ ) { - if ( (0 != (csre_attns & mba_csre_msk[i])) || - (0 != (spa_attns & mba_spa_msk[i] )) ) + ExtensibleChip * mbaChip = membdb->getMbaChip(i); + if ( NULL == mbaChip ) { - ExtensibleChip * mbaChip = membdb->getMbaChip(i); - if ( NULL == mbaChip ) - { - PRDF_ERR( PRDF_FUNC"MEM_CHIPLET registers indicated an " - "attention but no chip found: i_membChip=0x%08x " - "i=%d", i_membChip->GetId(), i ); - continue; - } - - mbaChip->CaptureErrorData(io_cd, Util::hashString("FirRegs") ); - mbaChip->CaptureErrorData(io_cd, Util::hashString("CerrRegs")); + PRDF_ERR( PRDF_FUNC"MEM_CHIPLET registers indicated an " + "attention but no chip found: i_membChip=0x%08x " + "i=%d", i_membChip->GetId(), i ); + continue; } + + mbaChip->CaptureErrorData(io_cd, + Util::hashString("MemChipletRegs") ); } } while (0); diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.H b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.H index 4185dc2f3..b586ce9f1 100644 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.H +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMbaCaptureData.H @@ -43,7 +43,7 @@ namespace CenMbaCaptureData { /** - * @brief Adds all MBA FirRegs and CerrRegs to the capture data for any MBA + * @brief Adds all Mem chiplet and MBA regs to the capture data for any MBA * reporting an active attention via the MEM_CHIPLET_FIRs. * @note This is only intended to be called in the MCS or MEMBUF PreAnalysis() * plugins to capture the required FIR registers for FFDC. @@ -53,7 +53,7 @@ namespace CenMbaCaptureData * @param i_membChip A MEMBUF chip. * @param io_cd Capture data struct. */ -void addMbaFirRegs( ExtensibleChip * i_membChip, CaptureData & io_cd ); +void addMemChipletFirRegs( ExtensibleChip * i_membChip, CaptureData & io_cd ); /** * @brief Adds Memory ECC FFDC to an error log. diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C index 7ae2e4d22..18011256c 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C @@ -222,7 +222,7 @@ int32_t PreAnalysis( ExtensibleChip * i_mbChip, STEP_CODE_DATA_STRUCT & i_sc, mcsChip->CaptureErrorData( cd, Util::hashString("FirRegs") ); mcsChip->CaptureErrorData( cd, Util::hashString("CerrRegs") ); - CenMbaCaptureData::addMbaFirRegs( i_mbChip, cd ); + CenMbaCaptureData::addMemChipletFirRegs( i_mbChip, cd ); } // Check for a Centaur Checkstop diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C index 5fa8f905c..399fd6ed1 100755 --- a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C +++ b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C @@ -126,7 +126,7 @@ int32_t PreAnalysis( ExtensibleChip * i_mcsChip, STEP_CODE_DATA_STRUCT & i_sc, membChip->CaptureErrorData( cd, Util::hashString("FirRegs") ); membChip->CaptureErrorData( cd, Util::hashString("CerrRegs") ); - CenMbaCaptureData::addMbaFirRegs( membChip, cd ); + CenMbaCaptureData::addMemChipletFirRegs( membChip, cd ); } // Check for a Centaur Checkstop |