summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2018-04-24 20:52:07 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2018-04-27 21:30:43 -0400
commitcda40fd41b6921d307a384c600098d3ef395e01c (patch)
tree0f78ae458c5ac6f57085077103d629ab7eec1c7a /src/usr
parent11c79b261c9e99c227137a494bba3d3a816deb08 (diff)
downloadtalos-hostboot-cda40fd41b6921d307a384c600098d3ef395e01c.tar.gz
talos-hostboot-cda40fd41b6921d307a384c600098d3ef395e01c.zip
PRD: additional MBSFIR and MBIFIR rule code changes
Change-Id: Iaf9eb18a00299e0c2edbd8af76e75877001ae662 RTC: 187481 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57785 Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Tested-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57931 CI-Ready: Zane C. Shelley <zshelle@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/diag/prdf/common/plat/cen/cen_centaur.rule13
-rw-r--r--src/usr/diag/prdf/common/plat/cen/cen_centaur_actions.rule28
-rw-r--r--src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C117
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Mcs.rule11
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Membuf.rule11
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule30
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C246
-rw-r--r--src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C59
-rw-r--r--src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.H13
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C28
10 files changed, 165 insertions, 391 deletions
diff --git a/src/usr/diag/prdf/common/plat/cen/cen_centaur.rule b/src/usr/diag/prdf/common/plat/cen/cen_centaur.rule
index d2e2b28fa..ea4724c10 100644
--- a/src/usr/diag/prdf/common/plat/cen/cen_centaur.rule
+++ b/src/usr/diag/prdf/common/plat/cen/cen_centaur.rule
@@ -1054,7 +1054,7 @@ group gMBIFIR filter priority( 8, 9, 19, 20, 6, 0, 16, 5, 10 ),
/** MBIFIR[0]
* Replay Timeout
*/
- (rMBIFIR, bit(0)) ? TBDDefaultCallout;
+ (rMBIFIR, bit(0)) ? replay_timeout_UERE;
/** MBIFIR[1]
* Channel Fail
@@ -1154,7 +1154,7 @@ group gMBIFIR filter priority( 8, 9, 19, 20, 6, 0, 16, 5, 10 ),
/** MBIFIR[20]
* Replay Buffer Overrun
*/
- (rMBIFIR, bit(20)) ? TBDDefaultCallout;
+ (rMBIFIR, bit(20)) ? calloutBusInterface_dmibus_th1_UERE;
/** MBIFIR[21]
* WAT error
@@ -1205,7 +1205,7 @@ group gMBSFIR filter singlebit, cs_root_cause( 0, 1, 2, 4, 6, 8, 10, 13, 16, 18,
/** MBSFIR[2]
* INVALID_ADDRESS_ERROR
*/
- (rMBSFIR, bit(2)) ? level2_th_1_UERE;
+ (rMBSFIR, bit(2)) ? calloutBusInterface_dmibus_th1;
/** MBSFIR[3]
* EXTERNAL_TIMEOUT
@@ -1215,7 +1215,12 @@ group gMBSFIR filter singlebit, cs_root_cause( 0, 1, 2, 4, 6, 8, 10, 13, 16, 18,
/** MBSFIR[4]
* INTERNAL_TIMEOUT
*/
- (rMBSFIR, bit(4)) ? TBDDefaultCallout;
+ (rMBSFIR, bit(4)) ? mbs_internal_timeout;
+
+ /** MBSFIR[3,4]
+ * EXTERNAL_TIMEOUT
+ */
+ (rMBSFIR, bit(3,4)) ? mbs_int_ext_timeout;
/** MBSFIR[5]
* INT_BUFFER_CE
diff --git a/src/usr/diag/prdf/common/plat/cen/cen_centaur_actions.rule b/src/usr/diag/prdf/common/plat/cen/cen_centaur_actions.rule
index da827cec8..f60f534e7 100644
--- a/src/usr/diag/prdf/common/plat/cen/cen_centaur_actions.rule
+++ b/src/usr/diag/prdf/common/plat/cen/cen_centaur_actions.rule
@@ -115,6 +115,34 @@ actionclass tooManyBusErrors_dmibus
# funccall("tooManyBusErrors");
};
+/** Callout the DMI bus, threshold 1. Also, clear secondary MBSFIR bits. */
+actionclass replayTimeoutCleanup
+{
+ calloutBusInterface_dmibus_th1_UERE;
+ funccall("ClearMbsSecondaryBits");
+};
+
+/** Handles channel failures on the DMI side of the bus, if present. Otherwise,
+ * calls out self (TH 1). */
+actionclass replay_timeout_UERE
+{
+ try ( funccall("analyzeDmiChnlFail"), replayTimeoutCleanup );
+};
+
+/** Handles RCD parity errors, if present. Otherwise, calls out self (TH 1). */
+actionclass mbs_internal_timeout
+{
+ try ( funccall("analyzeMbaRcdParityError0"),
+ try ( funccall("analyzeMbaRcdParityError1"), self_th_1 ) );
+};
+
+/** Handles RCD parity errors, if present. Otherwise, calls out lvl 2 (TH 1). */
+actionclass mbs_int_ext_timeout
+{
+ try ( funccall("analyzeMbaRcdParityError0"),
+ try ( funccall("analyzeMbaRcdParityError1"), level2_th_1 ) );
+};
+
/** L4 cache SRW CE */
actionclass l4_cache_srw_ce
{
diff --git a/src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C b/src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C
index 102967617..af1b22761 100644
--- a/src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C
+++ b/src/usr/diag/prdf/common/plat/cen/prdfCenMembuf_common.C
@@ -77,6 +77,123 @@ int32_t PostAnalysis( ExtensibleChip * i_mbChip, STEP_CODE_DATA_STRUCT & io_sc )
}
PRDF_PLUGIN_DEFINE( cen_centaur, PostAnalysis );
+//##############################################################################
+//
+// MBSFIR
+//
+//##############################################################################
+
+/**
+ * @brief Calls analyze() on the connected DMI target if there is an active
+ * channel fail attention on the DMI side of the bus.
+ * @param i_mbChip MEMBUF chip.
+ * @param io_sc Step code data struct
+ * @return SUCCESS if the channel fail error was present and analyzed properly.
+ * Non-SUCCESS otherwise.
+ */
+int32_t analyzeDmiChnlFail( ExtensibleChip * i_mbChip,
+ STEP_CODE_DATA_STRUCT & io_sc )
+{
+ #define PRDF_FUNC "[analyzeDmiChnlFail] "
+
+ int32_t o_rc = PRD_SCAN_COMM_REGISTER_ZERO; // default, nothing found
+
+ do
+ {
+ ExtensibleChip * dmiChip = getConnectedParent( i_mbChip, TYPE_DMI );
+
+ // TODO: RTC 136123 Need to call new interface that queries if there was
+ // a channel fail attention on the other side of the interface.
+ bool dmiChnlFail = false;
+
+ // If there is a channel fail attention on the other side of the bus,
+ // analyze the DMI target.
+ if ( dmiChnlFail )
+ {
+ o_rc = dmiChip->Analyze( io_sc,
+ io_sc.service_data->getSecondaryAttnType() );
+ }
+
+ } while (0);
+
+ return o_rc;
+
+ #undef PRDF_FUNC
+}
+PRDF_PLUGIN_DEFINE( cen_centaur, analyzeDmiChnlFail );
+
+//------------------------------------------------------------------------------
+
+/**
+ * @brief Calls analyze() on the target MBA if there is an active RCD parity
+ * error.
+ * @param i_mbChip MEMBUF chip.
+ * @param io_sc Step code data struct
+ * @param i_mbaPos The MBA position relative to the MEMBUF.
+ * @return SUCCESS if the RCD parity error was present and analyzed properly.
+ * Non-SUCCESS otherwise.
+ */
+int32_t analyzeMbaRcdParityError( ExtensibleChip * i_mbChip,
+ STEP_CODE_DATA_STRUCT & io_sc,
+ uint32_t i_mbaPos )
+{
+ #define PRDF_FUNC "[analyzeMbaRcdParityError] "
+
+ int32_t o_rc = PRD_SCAN_COMM_REGISTER_ZERO; // default, nothing found
+
+ do
+ {
+ ExtensibleChip * mbaChip = getConnectedChild( i_mbChip, TYPE_MBA,
+ i_mbaPos );
+ if ( nullptr == mbaChip )
+ {
+ o_rc = PRD_UNRESOLVED_CHIP_CONNECTION; // no chip
+ break;
+ }
+
+ SCAN_COMM_REGISTER_CLASS * fir = mbaChip->getRegister("MBACALFIR");
+ SCAN_COMM_REGISTER_CLASS * msk = mbaChip->getRegister("MBACALFIR_MASK");
+
+ int32_t l_rc = fir->Read() | msk->Read();
+
+ if ( SUCCESS != l_rc )
+ {
+ PRDF_ERR( PRDF_FUNC "register read failed on 0x%08x",
+ mbaChip->getHuid() );
+ o_rc = l_rc; // proper return code from SCOM error.
+ break;
+ }
+
+ // If any of the MBACALFIR parity error bits are set, analyze the MBA.
+ if ( ( fir->IsBitSet(4) && !msk->IsBitSet(4) ) ||
+ ( fir->IsBitSet(7) && !msk->IsBitSet(7) ) )
+ {
+ o_rc = mbaChip->Analyze( io_sc,
+ io_sc.service_data->getSecondaryAttnType() );
+ }
+
+ } while (0);
+
+ return o_rc;
+
+ #undef PRDF_FUNC
+}
+PRDF_PLUGIN_DEFINE( cen_centaur, analyzeMbaRcdParityError );
+
+// Define the plugins for RCD parity error memory UE side-effects
+#define PLUGIN_RCD_PARITY_UE_SIDEEFFECTS( MBA ) \
+int32_t analyzeMbaRcdParityError##MBA( ExtensibleChip * i_mbChip, \
+ STEP_CODE_DATA_STRUCT & io_sc) \
+{ \
+ return analyzeMbaRcdParityError( i_mbChip, io_sc, MBA ); \
+} \
+PRDF_PLUGIN_DEFINE( cen_centaur, analyzeMbaRcdParityError##MBA );
+
+PLUGIN_RCD_PARITY_UE_SIDEEFFECTS( 0 )
+PLUGIN_RCD_PARITY_UE_SIDEEFFECTS( 1 )
+
+#undef PLUGIN_RCD_PARITY_UE_SIDEEFFECTS
+
//------------------------------------------------------------------------------
} // end namespace cen_centaur
diff --git a/src/usr/diag/prdf/common/plat/pegasus/Mcs.rule b/src/usr/diag/prdf/common/plat/pegasus/Mcs.rule
index f56bb9c60..3e8cced5f 100755
--- a/src/usr/diag/prdf/common/plat/pegasus/Mcs.rule
+++ b/src/usr/diag/prdf/common/plat/pegasus/Mcs.rule
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2012,2016
+# Contributors Listed Below - COPYRIGHT 2012,2018
# [+] International Business Machines Corp.
#
#
@@ -256,7 +256,7 @@ group gMciFir attntype CHECK_STOP, RECOVERABLE, SPECIAL, UNIT_CS
/** MCIFIR[10]
* MCIFIRQ_CRC_PERFORMANCE_DEGRADATION
*/
- (MciFir, bit(10)) ? analyzeSpareBitAndThr;
+ (MciFir, bit(10)) ? defaultMaskedError;
/** MCIFIR[11]
* MCIFIRQ_CHANNEL_INTERLOCK_FAIL
@@ -549,13 +549,6 @@ actionclass CalloutDmiBusAndThr2pd
threshold2pday;
};
-/** If there is a lane repair attention, do nothing. Otherwise, callout DMI bus
- with threshold of 2/day. */
-actionclass analyzeSpareBitAndThr
-{
- try( funccall("checkSpareBit"), CalloutDmiBusAndThr2pd );
-};
-
/** The plugin checks if the Proc is either Murano DD2 or Venice DD1.
If neither, then callout thresholdAndMask_self and change signature to
DD1: MCIFIRQ_INTERNAL_SCOM_ERROR. */
diff --git a/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule b/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule
index b499a2981..61dd6bfba 100755
--- a/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule
+++ b/src/usr/diag/prdf/common/plat/pegasus/Membuf.rule
@@ -1146,7 +1146,7 @@ group gMBIFIR filter priority( 8, 9, 19, 20, 6, 0, 16, 5, 10 ),
/** MBIFIR[0]
* Replay Timeout
*/
- (rMBIFIR, bit(0)) ? replayTimeOutError;
+ (rMBIFIR, bit(0)) ? replay_timeout_UERE;
/** MBIFIR[1]
* Channel Fail
@@ -1196,7 +1196,7 @@ group gMBIFIR filter priority( 8, 9, 19, 20, 6, 0, 16, 5, 10 ),
/** MBIFIR[10]
* CRC Performance Degradation
*/
- (rMBIFIR, bit(10)) ? analyzeSpareBitAndThr;
+ (rMBIFIR, bit(10)) ? defaultMaskedError;
/** MBIFIR[11]
* Global Host MC Checkstop
@@ -1307,15 +1307,12 @@ group gMBSFIR filter singlebit, cs_root_cause( 0, 1, 2, 4, 6, 8, 10, 13, 16, 18,
/** MBSFIR[4]
* INTERNAL_TIMEOUT
*/
- (rMBSFIR, bit(4)) ? internalTimeout;
+ (rMBSFIR, bit(4)) ? mbs_internal_timeout;
/** MBSFIR[3,4]
* EXTERNAL_TIMEOUT
*/
- # NOTE: The signature will match the external timeout, but we will still
- # call the internalTimeout plugin because there is extra processing
- # done to handle parity errors and such.
- (rMBSFIR, bit(3,4)) ? internalTimeout;
+ (rMBSFIR, bit(3,4)) ? mbs_int_ext_timeout;
/** MBSFIR[5]
* INT_BUFFER_CE
diff --git a/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule b/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule
index 5f9c522e7..8a4869233 100755
--- a/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule
+++ b/src/usr/diag/prdf/common/plat/pegasus/Membuf_acts_NEST.rule
@@ -35,36 +35,16 @@ actionclass calloutDmiBus
funccall("calloutInterface_dmi");
};
-/** Handles MCS Chnl XSTOP if present otherwise handles MBIFIR Replay Timeout */
-actionclass replayTimeOutError
-{
- try( funccall("handleMcsChnlCs"), clearSecMbsBitsCalloutDmiBusTh1UE );
-};
-
-/** Handles MBACAL parity err if present, else handles MBS Internal Timeout */
-actionclass internalTimeout
-{
- threshold1;
- funccall("internalTimeout"); # must be called last so rc is passed on
-};
-
/** Handles MBACAL parity err if present, else handles MBA0 MBSECC Memory UE */
actionclass mba0MemoryUe
{
- try ( funccall("handleSingleMbaCalParityErr0"), analyzeFetchUe0 );
+ try ( funccall("analyzeMbaRcdParityError0"), analyzeFetchUe0 );
};
/** Handles MBACAL parity err if present, else handles MBA1 MBSECC Memory UE */
actionclass mba1MemoryUe
{
- try ( funccall("handleSingleMbaCalParityErr1"), analyzeFetchUe1 );
-};
-
-/** Clear MBS SecondaryBits and calloutBusInterface_dmibus_th1_UERE */
-actionclass clearSecMbsBitsCalloutDmiBusTh1UE
-{
- funccall("ClearMbsSecondaryBits");
- calloutBusInterface_dmibus_th1_UERE;
+ try ( funccall("analyzeMbaRcdParityError1"), analyzeFetchUe1 );
};
/** Callout the DMI bus, threshold 1 */
@@ -73,12 +53,6 @@ actionclass calloutDmiBusTh1 { calloutDmiBus; threshold1; };
/** Callout the DMI bus, threshold 2 per day */
actionclass calloutDmiBusTh2pday { calloutDmiBus; threshold2pday; };
-/** If no sparebit is set, execute calloutDmiBusTh2pday*/
-actionclass analyzeSpareBitAndThr
-{
- try( funccall("checkSpareBit"), calloutDmiBusTh2pday );
-};
-
/** Analyze a fetch MPE on MBA0 rank 0 */
actionclass analyzeFetchMpe0_0 { funccall("AnalyzeFetchMpe0_0"); };
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C
index 4053a5414..0ff352b44 100755
--- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C
+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMembuf.C
@@ -264,29 +264,6 @@ int32_t maxSparesExceeded( ExtensibleChip * i_membChip,
}
PRDF_PLUGIN_DEFINE( Membuf, maxSparesExceeded );
-/**
- * @brief Checks if spare deployed bit for DMI bus is set.
- * @param i_mbChip Membuf chip
- * @param i_sc The step code data struct.
- * @return SUCCESS if bit is on, FAIL otherwise.
- */
-int32_t checkSpareBit( ExtensibleChip * i_mbChip,
- STEP_CODE_DATA_STRUCT & i_sc )
-{
- using namespace LaneRepair;
- int32_t l_rc = FAIL;
-
- ExtensibleChip * mcsChip = getMembufDataBundle( i_mbChip )->getMcsChip();
-
- if ( true == isSpareBitOnDMIBus( mcsChip, i_mbChip ))
- {
- l_rc = SUCCESS;
- }
-
- return l_rc;
-}
-PRDF_PLUGIN_DEFINE( Membuf, checkSpareBit );
-
//##############################################################################
//
// MBSECCFIRs
@@ -647,217 +624,6 @@ PLUGIN_FETCH_UE_ERROR( 1 )
//------------------------------------------------------------------------------
-/**
- * @brief Handles MCS Channel fail bits, if they exist.
- *
- * @param i_membChip The Centaur chip.
- * @param i_sc ServiceDataColector.
- *
- * @return SUCCESS if MCS channel fail is present and properly
- * handled, FAIL otherwise.
- */
-int32_t handleMcsChnlCs( ExtensibleChip * i_membChip,
- STEP_CODE_DATA_STRUCT & i_sc )
-{
- #define PRDF_FUNC "[handleMcsChnlCs] "
-
- // We will return FAIL from this function if MCS channel fail bits
- // are not set. If MCS channel fail bits are set, we will try to analyze
- // Mcs. If MCS is not analyzed properly, we will return FAIL.
- // This will trigger rule code to execute alternate resolution.
-
- int32_t l_rc = SUCCESS;
- do
- {
- CenMembufDataBundle * mbdb = getMembufDataBundle( i_membChip );
- ExtensibleChip * mcsChip = mbdb->getMcsChip();
- if( NULL == mcsChip )
- {
- l_rc = FAIL;
- break;
- }
-
- SCAN_COMM_REGISTER_CLASS * mciFir = mcsChip->getRegister("MCIFIR");
- SCAN_COMM_REGISTER_CLASS * mciFirMask =
- mcsChip->getRegister("MCIFIR_MASK");
-
- l_rc = mciFir->Read();
- l_rc |= mciFirMask->Read();
-
- if ( SUCCESS != l_rc )
- {
- PRDF_ERR( PRDF_FUNC "MCIFIR/MCIFIR_MASK read failed for 0x%08x",
- mcsChip->GetId());
- break;
- }
-
- // If any of MCS channel fail bit is set, we will analyze
- // MCS. It is safe to do hard coded check as channel fail
- // bits are hard wired and and they can not change without HW
- // change.
- // bits 0,1, 6, 8, 9, 22, 23, 40 are channel fail bits.
- uint64_t chnlCsBitsMask = 0xC2C0030000800000ull;
- uint64_t mciFirBits = mciFir->GetBitFieldJustified(0, 64);
- uint64_t mciFirMaskBits = mciFirMask->GetBitFieldJustified(0, 64);
-
- if ( mciFirBits & ~mciFirMaskBits & chnlCsBitsMask )
- {
- l_rc = mcsChip->Analyze( i_sc,
- i_sc.service_data->getSecondaryAttnType() );
-
- if( SUCCESS == l_rc ) break;
- }
-
- l_rc = FAIL;
-
- }while( 0 );
-
- return l_rc;
- #undef PRDF_FUNC
-
-} PRDF_PLUGIN_DEFINE( Membuf, handleMcsChnlCs );
-
-//------------------------------------------------------------------------------
-
-/**
- * @brief Handles MBACALFIR RCD Parity error bits, if they exist on a single mba
- *
- * @param i_membChip The Centaur chip.
- * @param i_sc ServiceDataCollector.
- * @param i_mbaPos The MBA position.
- *
- * @return SUCCESS if MBACALFIR Parity error is present and properly
- * handled, FAIL otherwise.
- */
-int32_t handleSingleMbaCalParityErr( ExtensibleChip * i_membChip,
- STEP_CODE_DATA_STRUCT & i_sc,
- uint32_t i_mbaPos)
-{
- #define PRDF_FUNC "[handleSingleMbaCalParityErr] "
-
- int32_t l_rc = SUCCESS;
-
- CenMembufDataBundle * mbdb = getMembufDataBundle( i_membChip );
-
- do
- {
- ExtensibleChip * mbaChip = mbdb->getMbaChip(i_mbaPos);
- if ( NULL == mbaChip )
- {
- l_rc = FAIL;
- break;
- }
-
- SCAN_COMM_REGISTER_CLASS * mbaCalFir =
- mbaChip->getRegister("MBACALFIR");
- SCAN_COMM_REGISTER_CLASS * mbaCalMask =
- mbaChip->getRegister("MBACALFIR_MASK");
-
- l_rc = mbaCalFir->Read();
- l_rc |= mbaCalMask->Read();
-
- if ( SUCCESS != l_rc )
- {
- PRDF_ERR( PRDF_FUNC "MBACALFIR/MBACALFIR_MASK read failed for"
- "0x%08x", mbaChip->GetId());
- break;
- }
-
- // If any of the MBACALFIR parity error bits are set, we will
- // analyze the MBA.
- // bits 4 and 7 are parity error bits
- bool bit4 = mbaCalFir->IsBitSet(4);
- bool mask4 = mbaCalMask->IsBitSet(4);
-
- bool bit7 = mbaCalFir->IsBitSet(7);
- bool mask7 = mbaCalMask->IsBitSet(7);
-
- if ( ( bit4 && !mask4 ) || ( bit7 && !mask7 ) )
- {
- l_rc = mbaChip->Analyze( i_sc,
- i_sc.service_data->getSecondaryAttnType() );
- if ( SUCCESS == l_rc ) break;
- }
-
- l_rc = FAIL;
-
- }while(0);
-
- return l_rc;
- #undef PRDF_FUNC
-
-} PRDF_PLUGIN_DEFINE( Membuf, handleSingleMbaCalParityErr );
-
-//------------------------------------------------------------------------------
-
-/**
- * @brief MBSFIR[4] - Internal Timeout error.
- * @param i_mbChip The Centaur chip
- * @param i_sc Step code data struct
- * @return Non-SUCCESS if analysis fails. SUCCESS otherwise.
- */
-int32_t internalTimeout( ExtensibleChip * i_mbChip,
- STEP_CODE_DATA_STRUCT & i_sc )
-{
- #define PRDF_FUNC "[internalTimeout] "
-
- int32_t o_rc = SUCCESS;
-
- do
- {
- // First, check if there are any MBACALFIR parity errors.
- for ( uint32_t i = 0; i < MAX_MBA_PER_MEMBUF; i++)
- {
- o_rc = handleSingleMbaCalParityErr( i_mbChip, i_sc, i );
-
- // If SUCCESS is returned, then there was a parity error and
- // analysis was successful.
- if ( SUCCESS == o_rc ) break;
- }
- if ( SUCCESS == o_rc ) break; // nothing more to do.
-
- // Next, check if there was an MBSFIR external timeout.
- SCAN_COMM_REGISTER_CLASS * fir = i_mbChip->getRegister("MBSFIR");
- o_rc = fir->Read();
- if ( SUCCESS != o_rc )
- {
- PRDF_ERR( PRDF_FUNC "failed to read MBSFIR on 0x%08x",
- i_mbChip->GetId() );
- break;
- }
-
- if ( fir->IsBitSet(3) )
- {
- if ( CHECK_STOP == i_sc.service_data->getPrimaryAttnType() )
- {
- // In this case, we do not want the internal timeout to be
- // blamed as the root cause of the checkstop. So move onto the
- // next FIR bit.
- o_rc = PRD_SCAN_COMM_REGISTER_ZERO;
- }
- else
- {
- // Make the callout of the external timeout error.
- i_sc.service_data->SetCallout( LEVEL2_SUPPORT,
- MRU_MED, NO_GARD );
- }
- }
- else
- {
- // The internal timeout error is on by itself.
- i_sc.service_data->SetCallout( i_mbChip->GetChipHandle(), MRU_MED );
- }
-
- } while (0);
-
- return o_rc;
-
- #undef PRDF_FUNC
-
-} PRDF_PLUGIN_DEFINE( Membuf, internalTimeout );
-
-//------------------------------------------------------------------------------
-
// Define the plugins for memory ECC errors.
#define PLUGIN_FETCH_ECC_ERROR( TYPE, MBA ) \
int32_t AnalyzeFetch##TYPE##MBA( ExtensibleChip * i_membChip, \
@@ -892,18 +658,6 @@ PLUGIN_FETCH_RCE_PREUE_ERROR( PreUe, 1, false )
#undef PLUGIN_FETCH_RCE_PREUE_ERROR
-// Define the plugins for RCD parity error memory UE side-effects
-#define PLUGIN_RCD_PARITY_UE_SIDEEFFECTS( MBA ) \
-int32_t handleSingleMbaCalParityErr##MBA( ExtensibleChip * i_membChip, \
- STEP_CODE_DATA_STRUCT & i_sc) \
-{ \
- return handleSingleMbaCalParityErr( i_membChip, i_sc, MBA ); \
-} \
-PRDF_PLUGIN_DEFINE( Membuf, handleSingleMbaCalParityErr##MBA );
-
-PLUGIN_RCD_PARITY_UE_SIDEEFFECTS ( 0 )
-PLUGIN_RCD_PARITY_UE_SIDEEFFECTS ( 1 )
-
//------------------------------------------------------------------------------
int32_t calloutInterface_dmi( ExtensibleChip * i_membChip,
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C b/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C
index 1d9ff4822..8be057233 100644
--- a/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C
+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2013,2017 */
+/* Contributors Listed Below - COPYRIGHT 2013,2018 */
/* [+] Google Inc. */
/* [+] International Business Machines Corp. */
/* */
@@ -255,63 +255,6 @@ int32_t handleLaneRepairEvent( ExtensibleChip * i_chip,
//-----------------------------------------------------------------------------
-bool isSpareBitOnDMIBus( ExtensibleChip * i_mcsChip, ExtensibleChip * i_mbChip )
-{
- bool bitOn = false;
-
- do
- {
- // If any of these object is NULL, spare bit should not be on.
- if ( ( NULL == i_mcsChip ) || ( NULL == i_mbChip ))
- break;
-
- // check spare deployed bit on Centaur side
- SCAN_COMM_REGISTER_CLASS * dmiFir = i_mbChip->getRegister( "DMIFIR" );
- int32_t rc = dmiFir->Read();
- if ( SUCCESS != rc )
- {
- PRDF_ERR("isSpareBitOnDMIBus() : Failed to read DMIFIR."
- "MEMBUF: 0x%08X", getHuid( i_mbChip->GetChipHandle()) );
- break;
- }
- if ( dmiFir->IsBitSet( 9 ))
- {
- bitOn = true;
- break;
- }
-
- // check spare deployed bit on Proc side
- TargetHandle_t mcsTgt = i_mcsChip->GetChipHandle();
- TargetHandle_t procTgt = getConnectedParent( mcsTgt, TYPE_PROC );
- ExtensibleChip * procChip =
- ( ExtensibleChip * )systemPtr->GetChip( procTgt );
-
- uint32_t mcsPos = getTargetPosition( mcsTgt );
-
- const char * regStr = ( 4 > mcsPos) ? "IOMCFIR_0" : "IOMCFIR_1";
- SCAN_COMM_REGISTER_CLASS * iomcFir = procChip->getRegister( regStr );
- rc = iomcFir->Read();
- if ( SUCCESS != rc )
- {
- PRDF_ERR("isSpareBitOnDMIBus() : Failed to read %s."
- "MCS: 0x%08X", regStr, getHuid(mcsTgt) );
- break;
- }
- // Bit 9, 17, 25 and 33 are for spare deployed.
- // Check bit corrosponding to MCS position
- uint8_t bitPos = 9 + ( mcsPos % 4 ) *8;
- if ( iomcFir->IsBitSet(bitPos))
- {
- bitOn = true;
- }
-
- }while(0);
-
- return bitOn;
-}
-
-//-----------------------------------------------------------------------------
-
int32_t cleanupSecondaryFirBits( ExtensibleChip * i_chip,
TYPE i_busType,
uint32_t i_busPos )
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.H b/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.H
index 8c04e6135..cdae757ce 100644
--- a/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.H
+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfLaneRepair.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2013,2015 */
+/* Contributors Listed Below - COPYRIGHT 2013,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -73,17 +73,6 @@ namespace LaneRepair
TARGETING::TYPE i_busType,
uint32_t i_busPos );
- /**
- * @brief Checks if spare bit is set for DMI Bus.
- * @param i_mcsChip MCS chip.
- * @param i_mbChip Membuf chip.
- * @return True if spare bit is set false otherwise.
- * @note This function will check both ends of DMI bus to check
- * if spare deployed attention is raised on any side.
- */
- bool isSpareBitOnDMIBus( ExtensibleChip * i_mcsChip,
- ExtensibleChip * i_mbChip );
-
} // end namespace LaneRepair
} // end namespace PRDF
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C
index 52020a1f8..02f021e76 100755
--- a/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C
+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfP8Mcs.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2012,2015 */
+/* Contributors Listed Below - COPYRIGHT 2012,2018 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -140,32 +140,6 @@ int32_t PostAnalysis( ExtensibleChip * i_mcsChip,
PRDF_PLUGIN_DEFINE( Mcs, PostAnalysis );
/**
- * @brief Checks if spare deployed bit for DMI bus for this MCS is set.
- * @param i_mcsChip MCS chip
- * @param i_sc The step code data struct.
- * @return SUCCESS if bit is on, FAIL otherwise.
- */
-int32_t checkSpareBit( ExtensibleChip * i_mcsChip,
- STEP_CODE_DATA_STRUCT & i_sc )
-{
- using namespace LaneRepair;
-
- int32_t l_rc = FAIL; // Default is to handle the attention (via rule code).
-
- ExtensibleChip * mbChip = getMcsDataBundle( i_mcsChip )->getMembChip();
-
- if ( isSpareBitOnDMIBus(i_mcsChip, mbChip) )
- {
- // Ignore attention and do not commit the error log.
- i_sc.service_data->setDontCommitErrl();
- l_rc = SUCCESS;
- }
-
- return l_rc;
-}
-PRDF_PLUGIN_DEFINE( Mcs, checkSpareBit );
-
-/**
* @fn ClearMbsSecondaryBits
* @brief Clears MBS secondary Fir bits which may come up because of MCIFIR
* @param i_chip The Mcs chip.
OpenPOWER on IntegriCloud