summaryrefslogtreecommitdiffstats
path: root/src/usr/diag
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2015-09-17 15:27:41 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-09-22 11:07:39 -0500
commit22cc0426d2e2507908a74bd31a4e05584aa1c4a8 (patch)
tree787c695b6805ff1ab127b28f2039e179fe6cb8bc /src/usr/diag
parent3ca8532849d8d9349355e08e20f45575755f709c (diff)
downloadtalos-hostboot-22cc0426d2e2507908a74bd31a4e05584aa1c4a8.tar.gz
talos-hostboot-22cc0426d2e2507908a74bd31a4e05584aa1c4a8.zip
PRD: Mask side-effects of RCD Parity Error
Change-Id: I886347b979cc6f000f81c7108d4ebf8f3897c95c CQ: SW322138 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/20594 Reviewed-by: Brian J. Stegmiller <bjs@us.ibm.com> Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Reviewed-by: BENJAMIN J. WEISENBECK <bweisenb@us.ibm.com> Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/20633 Tested-by: Jenkins OP Build CI Tested-by: FSP CI Jenkins Tested-by: Jenkins OP HW Reviewed-by: Zane Shelley <zshelle@us.ibm.com>
Diffstat (limited to 'src/usr/diag')
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/Mba.rule26
-rwxr-xr-xsrc/usr/diag/prdf/common/plat/pegasus/prdfCenMba.C55
2 files changed, 79 insertions, 2 deletions
diff --git a/src/usr/diag/prdf/common/plat/pegasus/Mba.rule b/src/usr/diag/prdf/common/plat/pegasus/Mba.rule
index 3666142aa..87d9b4c85 100755
--- a/src/usr/diag/prdf/common/plat/pegasus/Mba.rule
+++ b/src/usr/diag/prdf/common/plat/pegasus/Mba.rule
@@ -81,6 +81,14 @@ chip Mba
capture group MemChipletRegs;
};
+ register MBAFIR_MASK_OR
+ {
+ name "MBU.MBA_MCBIST.SCOMFIR.MBAFIRMASK OR";
+ scomaddr 0x03010605;
+ capture group never;
+ access write_only;
+ };
+
register MBAFIR_ACT0
{
name "MBU.MBA_MCBIST.SCOMFIR.MBAFIRACT0";
@@ -693,7 +701,7 @@ group gMbaCalFir filter priority( 4, 7 ),
/** MBACALFIR[4]
* MBACALFIRQ_RCD_PARITY_ERROR_0
*/
- (MbaCalFir, bit(4)) ? CalloutMbaAndDimmOnPort0;
+ (MbaCalFir, bit(4)) ? RcdParityError0;
/** MBACALFIR[5]
* MBACALFIRQ_DDR0_CAL_TIMEOUT_ERR
@@ -708,7 +716,7 @@ group gMbaCalFir filter priority( 4, 7 ),
/** MBACALFIR[7]
* MBACALFIRQ_RCD_PARITY_ERROR_1
*/
- (MbaCalFir, bit(7)) ? CalloutMbaAndDimmOnPort1;
+ (MbaCalFir, bit(7)) ? RcdParityError1;
/** MBACALFIR[8]
* MBACALFIRQ_MBX_TO_MBA_PAR_ERROR
@@ -916,6 +924,20 @@ actionclass CalloutMbaAndDimmOnPort1
threshold1;
};
+/** Handle RCD Parity Error 0 */
+actionclass RcdParityError0
+{
+ funccall("maskRcdParitySideEffects");
+ CalloutMbaAndDimmOnPort0;
+};
+
+/** Handle RCD Parity Error 1 */
+actionclass RcdParityError1
+{
+ funccall("maskRcdParitySideEffects");
+ CalloutMbaAndDimmOnPort1;
+};
+
/** Callouts specific to MBASECUREFIR attentions. */
actionclass secureFirCallout
{
diff --git a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMba.C b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMba.C
index d8ad78bd3..2a701d3bd 100755
--- a/src/usr/diag/prdf/common/plat/pegasus/prdfCenMba.C
+++ b/src/usr/diag/prdf/common/plat/pegasus/prdfCenMba.C
@@ -164,6 +164,61 @@ int32_t CalloutMbaAndDimm( ExtensibleChip * i_chip,
return o_rc;
}
+/**
+ * @brief Plugin to mask the side effects of an RCD parity error
+ * @param i_mbaChip A Centaur MBA chip.
+ * @param i_sc The step code data struct.
+ * @return SUCCESS
+ */
+int32_t maskRcdParitySideEffects( ExtensibleChip * i_mbaChip,
+ STEP_CODE_DATA_STRUCT & i_sc )
+{
+ #define PRDF_FUNC "[maskRcdParitySideEffects] "
+
+ int32_t l_rc = SUCCESS;
+
+ do
+ {
+ //use a data bundle to get the membuf chip
+ CenMbaDataBundle * mbadb = getMbaDataBundle( i_mbaChip );
+ ExtensibleChip * membChip = mbadb->getMembChip();
+ if (NULL == membChip)
+ {
+ PRDF_ERR(PRDF_FUNC "getMembChip() failed");
+ break;
+ }
+
+ //get the masks for each FIR
+ SCAN_COMM_REGISTER_CLASS * mbsFirMaskOr =
+ membChip->getRegister("MBSFIR_MASK_OR");
+ SCAN_COMM_REGISTER_CLASS * mbaCalMaskOr =
+ i_mbaChip->getRegister("MBACALFIR_MASK_OR");
+ SCAN_COMM_REGISTER_CLASS * mbaFirMaskOr =
+ i_mbaChip->getRegister("MBAFIR_MASK_OR");
+
+ mbaFirMaskOr->SetBit(2);
+ mbaCalMaskOr->SetBit(2);
+ mbaCalMaskOr->SetBit(17);
+ mbsFirMaskOr->SetBit(4);
+
+ l_rc = mbaFirMaskOr->Write();
+ l_rc |= mbaCalMaskOr->Write();
+ l_rc |= mbsFirMaskOr->Write();
+
+ if (SUCCESS != l_rc)
+ {
+ PRDF_ERR(PRDF_FUNC "MBAFIR_MASK_OR/MBACALFIR_MASK_OR/MBSFIR_MASK_OR"
+ " write failed for 0x%08x", i_mbaChip->GetId());
+ break;
+ }
+ }while(0);
+
+ return SUCCESS;
+ #undef PRDF_FUNC
+}
+PRDF_PLUGIN_DEFINE( Mba, maskRcdParitySideEffects );
+
+
//------------------------------------------------------------------------------
/**
OpenPOWER on IntegriCloud