summaryrefslogtreecommitdiffstats
path: root/src/usr/diag/prdf/common/plat/cen
diff options
context:
space:
mode:
authorZane Shelley <zshelle@us.ibm.com>2018-04-20 15:26:25 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2018-04-27 12:14:37 -0400
commitab3cba6aa16d2c55296d8f1debcd0f732f85c498 (patch)
tree54ce53a69cda4639d5e9069e3a062fb26cfef017 /src/usr/diag/prdf/common/plat/cen
parent5170952d14e34b287fdf78d8a28f811ae4582f3d (diff)
downloadtalos-hostboot-ab3cba6aa16d2c55296d8f1debcd0f732f85c498.tar.gz
talos-hostboot-ab3cba6aa16d2c55296d8f1debcd0f732f85c498.zip
PRD: single bit analysis support for MBA target
Change-Id: I1991f107f6b56a168656cacc216217b87d117810 RTC: 187481 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57527 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Matt Derksen <mderkse1@us.ibm.com> Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-by: Benjamin J. Weisenbeck <bweisenb@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/57881 CI-Ready: Zane C. Shelley <zshelle@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/usr/diag/prdf/common/plat/cen')
-rw-r--r--src/usr/diag/prdf/common/plat/cen/cen_centaur_regs.rule30
-rw-r--r--src/usr/diag/prdf/common/plat/cen/cen_common_actions.rule1
-rw-r--r--src/usr/diag/prdf/common/plat/cen/cen_mba.rule45
-rw-r--r--src/usr/diag/prdf/common/plat/cen/cen_mba_actions.rule27
-rw-r--r--src/usr/diag/prdf/common/plat/cen/cen_mba_regs.rule61
-rw-r--r--src/usr/diag/prdf/common/plat/cen/prdfCenMba_common.C197
-rw-r--r--src/usr/diag/prdf/common/plat/cen/prdf_plat_cen.mk7
7 files changed, 326 insertions, 42 deletions
diff --git a/src/usr/diag/prdf/common/plat/cen/cen_centaur_regs.rule b/src/usr/diag/prdf/common/plat/cen/cen_centaur_regs.rule
index bef16d5a2..0fa0f5557 100644
--- a/src/usr/diag/prdf/common/plat/cen/cen_centaur_regs.rule
+++ b/src/usr/diag/prdf/common/plat/cen/cen_centaur_regs.rule
@@ -36,12 +36,24 @@
};
############################################################################
- # Additional regs for CEN target MBSECCFIR
+ # Centaur chip MBSFIR
+ ############################################################################
+
+ register MBSFIR_MASK_OR
+ {
+ name "Centaur chip MBSFIR MASK atomic OR";
+ scomaddr 0x02011405;
+ capture group never;
+ access write_only;
+ };
+
+ ############################################################################
+ # Centaur chip MBSECCFIR 0
############################################################################
register MBSECCFIR_0_AND
{
- name "Centaur chip MBSECCFIR_0 atomic AND";
+ name "Centaur chip MBSECCFIR 0 atomic AND";
scomaddr 0x02011441;
capture group never;
access write_only;
@@ -49,7 +61,7 @@
register MBSECCFIR_0_MASK_AND
{
- name "MBU.MBS.ECC01.MBECCFIR_MASK_AND";
+ name "Centaur chip MBSECCFIR 0 MASK atomic AND";
scomaddr 0x02011444;
capture group never;
access write_only;
@@ -57,15 +69,19 @@
register MBSECCFIR_0_MASK_OR
{
- name "MBU.MBS.ECC01.MBECCFIR_MASK_OR";
+ name "Centaur chip MBSECCFIR 0 MASK atomic OR";
scomaddr 0x02011445;
capture group never;
access write_only;
};
+ ############################################################################
+ # Centaur chip MBSECCFIR 0
+ ############################################################################
+
register MBSECCFIR_1_AND
{
- name "Centaur chip MBSECCFIR_1 atomic AND";
+ name "Centaur chip MBSECCFIR 1 atomic AND";
scomaddr 0x02011481;
capture group never;
access write_only;
@@ -73,7 +89,7 @@
register MBSECCFIR_1_MASK_AND
{
- name "MBU.MBS.ECC23.MBECCFIR_MASK_AND";
+ name "Centaur chip MBSECCFIR 1 MASK atomic AND";
scomaddr 0x02011484;
capture group never;
access write_only;
@@ -81,7 +97,7 @@
register MBSECCFIR_1_MASK_OR
{
- name "MBU.MBS.ECC23.MBECCFIR_MASK_OR";
+ name "Centaur chip MBSECCFIR 1 MASK atomic OR";
scomaddr 0x02011485;
capture group never;
access write_only;
diff --git a/src/usr/diag/prdf/common/plat/cen/cen_common_actions.rule b/src/usr/diag/prdf/common/plat/cen/cen_common_actions.rule
index e9f2e9b3b..366e7353f 100644
--- a/src/usr/diag/prdf/common/plat/cen/cen_common_actions.rule
+++ b/src/usr/diag/prdf/common/plat/cen/cen_common_actions.rule
@@ -149,6 +149,7 @@ actionclass level2_th_1
# Callouts with flags #
################################################################################
+actionclass self_th_1_UERE { self_th_1; SueSource; };
actionclass level2_th_1_UERE { level2_th_1; SueSource; };
################################################################################
diff --git a/src/usr/diag/prdf/common/plat/cen/cen_mba.rule b/src/usr/diag/prdf/common/plat/cen/cen_mba.rule
index 23b6f4f3e..19dfe0c8c 100644
--- a/src/usr/diag/prdf/common/plat/cen/cen_mba.rule
+++ b/src/usr/diag/prdf/common/plat/cen/cen_mba.rule
@@ -244,7 +244,10 @@ rule rMBACALFIR
MBACALFIR & ~MBACALFIR_MASK & ~MBACALFIR_ACT0 & MBACALFIR_ACT1;
};
-group gMBACALFIR filter singlebit, cs_root_cause
+# RCD parity errors (bits 4 and 7) given priority over potential side effects
+# bits 2 and 17.
+group gMBACALFIR filter priority( 4, 7 ),
+ cs_root_cause( 0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 13, 15, 17, 18 )
{
/** MBACALFIR[0]
* MBA_RECOVERABLE_ERROR
@@ -254,12 +257,12 @@ group gMBACALFIR filter singlebit, cs_root_cause
/** MBACALFIR[1]
* MBA_NONRECOVERABLE_ERROR
*/
- (rMBACALFIR, bit(1)) ? self_th_1;
+ (rMBACALFIR, bit(1)) ? self_th_1_UERE;
/** MBACALFIR[2]
* REFRESH_OVERRUN
*/
- (rMBACALFIR, bit(2)) ? self_th_1;
+ (rMBACALFIR, bit(2)) ? self_th_32perDay;
/** MBACALFIR[3]
* WAT_ERROR
@@ -269,7 +272,7 @@ group gMBACALFIR filter singlebit, cs_root_cause
/** MBACALFIR[4]
* RCD parity error on port 0
*/
- (rMBACALFIR, bit(4)) ? TBDDefaultCallout;
+ (rMBACALFIR, bit(4)) ? rcd_parity_error_port0_UERE;
/** MBACALFIR[5]
* DDR0_CAL_TIMEOUT_ERR
@@ -284,7 +287,7 @@ group gMBACALFIR filter singlebit, cs_root_cause
/** MBACALFIR[7]
* RCD parity error on port 1
*/
- (rMBACALFIR, bit(7)) ? TBDDefaultCallout;
+ (rMBACALFIR, bit(7)) ? rcd_parity_error_port1_UERE;
/** MBACALFIR[8]
* MBX_TO_MBA_PAR_ERROR
@@ -294,7 +297,7 @@ group gMBACALFIR filter singlebit, cs_root_cause
/** MBACALFIR[9]
* MBA_WRD_UE
*/
- (rMBACALFIR, bit(9)) ? self_th_1;
+ (rMBACALFIR, bit(9)) ? self_th_1_UERE;
/** MBACALFIR[10]
* MBA_WRD_CE
@@ -304,7 +307,7 @@ group gMBACALFIR filter singlebit, cs_root_cause
/** MBACALFIR[11]
* MBA_MAINT_UE
*/
- (rMBACALFIR, bit(11)) ? self_th_1;
+ (rMBACALFIR, bit(11)) ? self_th_1_UERE;
/** MBACALFIR[12]
* MBA_MAINT_CE
@@ -314,7 +317,7 @@ group gMBACALFIR filter singlebit, cs_root_cause
/** MBACALFIR[13]
* DDR_CAL_RESET_TIMEOUT
*/
- (rMBACALFIR, bit(13)) ? self_th_1;
+ (rMBACALFIR, bit(13)) ? self_th_1_UERE;
/** MBACALFIR[14]
* WRQ_DATA_CE
@@ -324,7 +327,7 @@ group gMBACALFIR filter singlebit, cs_root_cause
/** MBACALFIR[15]
* WRQ_DATA_UE
*/
- (rMBACALFIR, bit(15)) ? self_th_1;
+ (rMBACALFIR, bit(15)) ? self_th_1_UERE;
/** MBACALFIR[16]
* WRQ_DATA_SUE
@@ -339,7 +342,7 @@ group gMBACALFIR filter singlebit, cs_root_cause
/** MBACALFIR[18]
* SM_1HOT_ERR
*/
- (rMBACALFIR, bit(18)) ? self_th_1;
+ (rMBACALFIR, bit(18)) ? self_th_1_UERE;
/** MBACALFIR[19]
* WRD_SCOM_ERROR
@@ -454,7 +457,7 @@ group gMBAFIR filter singlebit, cs_root_cause( 3, 5, 6, 7, 8 )
/** MBAFIR[3]
* Internal FSM parity error
*/
- (rMBAFIR, bit(3)) ? self_th_1;
+ (rMBAFIR, bit(3)) ? self_th_1_UERE;
/** MBAFIR[4]
* MCBIST error
@@ -464,22 +467,22 @@ group gMBAFIR filter singlebit, cs_root_cause( 3, 5, 6, 7, 8 )
/** MBAFIR[5]
* SCOM command register parity error
*/
- (rMBAFIR, bit(5)) ? self_th_1;
+ (rMBAFIR, bit(5)) ? self_th_1_UERE;
/** MBAFIR[6]
* Unrecoverable channel error
*/
- (rMBAFIR, bit(6)) ? self_th_1;
+ (rMBAFIR, bit(6)) ? self_th_1_UERE;
/** MBAFIR[7]
* UE or CE Error in WRD caw2 data latches
*/
- (rMBAFIR, bit(7)) ? self_th_1;
+ (rMBAFIR, bit(7)) ? self_th_1_UERE;
/** MBAFIR[8]
* Illegal transition maint state machine
*/
- (rMBAFIR, bit(8)) ? self_th_1;
+ (rMBAFIR, bit(8)) ? self_th_1_UERE;
/** MBAFIR[9:14]
* RESERVED
@@ -513,7 +516,7 @@ group gMBASPA filter singlebit, cs_root_cause
/** MBASPA[0]
* Maintenance command complete
*/
- (rMBASPA, bit(0)) ? maintenance_command_complete; # DD2+ only
+ (rMBASPA, bit(0)) ? maint_cmd_complete;
/** MBASPA[1]
* Hard NCE ETE
@@ -579,17 +582,17 @@ rule rMBADDRPHYFIR
MBADDRPHYFIR & ~MBADDRPHYFIR_MASK & ~MBADDRPHYFIR_ACT0 & MBADDRPHYFIR_ACT1;
};
-group gMBADDRPHYFIR filter singlebit, cs_root_cause
+group gMBADDRPHYFIR filter singlebit, cs_root_cause( 48, 49, 51, 52, 56, 57, 59, 60 )
{
/** MBADDRPHYFIR[48]
* FSM Error Checkstop
*/
- (rMBADDRPHYFIR, bit(48)) ? self_th_1;
+ (rMBADDRPHYFIR, bit(48)) ? self_th_1_UERE;
/** MBADDRPHYFIR[49]
* Parity Error Checkstop
*/
- (rMBADDRPHYFIR, bit(49)) ? self_th_1;
+ (rMBADDRPHYFIR, bit(49)) ? self_th_1_UERE;
/** MBADDRPHYFIR[50]
* Calibration Error RE
@@ -619,12 +622,12 @@ group gMBADDRPHYFIR filter singlebit, cs_root_cause
/** MBADDRPHYFIR[56]
* FSM Error Checkstop
*/
- (rMBADDRPHYFIR, bit(56)) ? self_th_1;
+ (rMBADDRPHYFIR, bit(56)) ? self_th_1_UERE;
/** MBADDRPHYFIR[57]
* Parity Error Checkstop
*/
- (rMBADDRPHYFIR, bit(57)) ? self_th_1;
+ (rMBADDRPHYFIR, bit(57)) ? self_th_1_UERE;
/** MBADDRPHYFIR[58]
* Calibration Error RE
diff --git a/src/usr/diag/prdf/common/plat/cen/cen_mba_actions.rule b/src/usr/diag/prdf/common/plat/cen/cen_mba_actions.rule
index 05773a326..21b881dfd 100644
--- a/src/usr/diag/prdf/common/plat/cen/cen_mba_actions.rule
+++ b/src/usr/diag/prdf/common/plat/cen/cen_mba_actions.rule
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2017
+# Contributors Listed Below - COPYRIGHT 2017,2018
# [+] International Business Machines Corp.
#
#
@@ -24,8 +24,31 @@
# IBM_PROLOG_END_TAG
/** Analyze maintenance command complete */
-actionclass maintenance_command_complete
+actionclass maint_cmd_complete
{
funccall("MaintCmdComplete");
};
+/** Analyze RCD parity error */
+actionclass rcd_parity_error_UERE
+{
+ funccall("MaskRcdParitySideEffects");
+ calloutSelfLow;
+ threshold1;
+ SueSource;
+};
+
+/** Analyze RCD parity error on port 0 */
+actionclass rcd_parity_error_port0_UERE
+{
+ funccall("CalloutDimmsOnPort0");
+ rcd_parity_error_UERE;
+};
+
+/** Analyze RCD parity error on port 0 */
+actionclass rcd_parity_error_port1_UERE
+{
+ funccall("CalloutDimmsOnPort1");
+ rcd_parity_error_UERE;
+};
+
diff --git a/src/usr/diag/prdf/common/plat/cen/cen_mba_regs.rule b/src/usr/diag/prdf/common/plat/cen/cen_mba_regs.rule
index f1c9d2712..a4b32d98c 100644
--- a/src/usr/diag/prdf/common/plat/cen/cen_mba_regs.rule
+++ b/src/usr/diag/prdf/common/plat/cen/cen_mba_regs.rule
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2017
+# Contributors Listed Below - COPYRIGHT 2017,2018
# [+] International Business Machines Corp.
#
#
@@ -23,31 +23,70 @@
#
# IBM_PROLOG_END_TAG
+ ############################################################################
+ # Centaur chip MBA target MBACALFIR
+ ############################################################################
- ###########################################################################
- # P9 MBASPA
- ###########################################################################
+ register MBACALFIR_AND
+ {
+ name "Centaur chip MBA target MBACALFIR atomic AND";
+ scomaddr 0x03010401;
+ capture group never;
+ access write_only;
+ };
- register MBASPA_OR
+ register MBACALFIR_MASK_OR
{
- name "Memory Buffer MBA SPA OR register";
- scomaddr 0x03010613;
+ name "Centaur chip MBA target MBACALFIR_MASK atomic OR";
+ scomaddr 0x03010405;
+ capture group never;
+ access write_only;
+ };
+
+ ############################################################################
+ # Centaur chip MBA target MBAFIR
+ ############################################################################
+
+ register MBAFIR_MASK_OR
+ {
+ name "Centaur chip MBA target MBAFIR_MASK atomic OR";
+ scomaddr 0x03010605;
capture group never;
access write_only;
};
############################################################################
- # Additional regs for CEN MBA target MBASPA
+ # Centaur chip MBA target MBASPA
############################################################################
register MBASPA_AND
{
- name "CEN MBA target MBASPA atomic AND";
+ name "Centaur chip MBA target MBASPA atomic AND";
scomaddr 0x03010612;
capture group never;
access write_only;
};
+ register MBASPA_OR
+ {
+ name "Centaur chip MBA target MBASPA atomic OR";
+ scomaddr 0x03010613;
+ capture group never;
+ access write_only;
+ };
+
+ ############################################################################
+ # Centaur chip MBA target MBADDRPHYFIR
+ ############################################################################
+
+ register MBADDRPHYFIR_AND
+ {
+ name "Centaur chip MBA target MBADDRPHYFIR atomic AND";
+ scomaddr 0x800200910301143F;
+ capture group never;
+ access write_only;
+ };
+
############################################################################
# Maintenance Command Registers
############################################################################
@@ -60,8 +99,8 @@
capture group MaintCmdRegs;
};
- # NOTE: PRD doesn't use MBMCC directly and the bits are cleared by HW so I
- # see no reason to add it here.
+ # NOTE: PRD doesn't use MBMCC directly and the bits are cleared by HW so no
+ # reason to add it here.
register MBMSR
{
diff --git a/src/usr/diag/prdf/common/plat/cen/prdfCenMba_common.C b/src/usr/diag/prdf/common/plat/cen/prdfCenMba_common.C
new file mode 100644
index 000000000..4e7411ea6
--- /dev/null
+++ b/src/usr/diag/prdf/common/plat/cen/prdfCenMba_common.C
@@ -0,0 +1,197 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/diag/prdf/common/plat/cen/prdfCenMba_common.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2017,2018 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+
+// Framework includes
+#include <iipServiceDataCollector.h>
+#include <prdfExtensibleChip.H>
+#include <prdfPluginDef.H>
+#include <prdfPluginMap.H>
+
+// Platform includes
+#include <prdfCenMbaDataBundle.H>
+
+using namespace TARGETING;
+
+namespace PRDF
+{
+
+using namespace PlatServices;
+
+namespace cen_mba
+{
+
+//##############################################################################
+//
+// Special plugins
+//
+//##############################################################################
+
+/**
+ * @brief Plugin that initializes the data bundle.
+ * @param i_mbaChip An MBA chip.
+ * @return SUCCESS
+ */
+int32_t Initialize( ExtensibleChip * i_mbaChip )
+{
+ i_mbaChip->getDataBundle() = new MbaDataBundle( i_mbaChip );
+ return SUCCESS;
+}
+PRDF_PLUGIN_DEFINE( cen_mba, Initialize );
+
+//##############################################################################
+//
+// MBACALFIR
+//
+//##############################################################################
+
+void __calloutDimmsOnPort( ExtensibleChip * i_chip, uint32_t i_port,
+ STEP_CODE_DATA_STRUCT & io_sc )
+{
+ for ( auto & dimm : getConnected(i_chip->getTrgt(), TYPE_DIMM) )
+ {
+ if ( getDimmPort<TYPE_MBA>(dimm) == i_port )
+ io_sc.service_data->SetCallout( dimm, MRU_MEDA );
+ }
+}
+
+/**
+ * @brief Adds all DIMMs connected to MBA port 0 to the callout list.
+ * @param i_chip MBA chip
+ * @param io_sc The step code data struct.
+ * @return SUCCESS
+ */
+int32_t CalloutDimmsOnPort0( ExtensibleChip * i_chip,
+ STEP_CODE_DATA_STRUCT & io_sc )
+{
+ __calloutDimmsOnPort( i_chip, 0, io_sc );
+ return SUCCESS;
+}
+PRDF_PLUGIN_DEFINE( cen_mba, CalloutDimmsOnPort0 );
+
+/**
+ * @brief Adds all DIMMs connected to MBA port 1 to the callout list.
+ * @param i_chip MBA chip
+ * @param io_sc The step code data struct.
+ * @return SUCCESS
+ */
+int32_t CalloutDimmsOnPort1( ExtensibleChip * i_chip,
+ STEP_CODE_DATA_STRUCT & io_sc )
+{
+ __calloutDimmsOnPort( i_chip, 1, io_sc );
+ return SUCCESS;
+}
+PRDF_PLUGIN_DEFINE( cen_mba, CalloutDimmsOnPort1 );
+
+/**
+ * @brief Masks the all side effect attentions of an RCD parity error.
+ * @param i_mbaChip MBA chip
+ * @param io_sc The step code data struct.
+ * @return SUCCESS
+ */
+int32_t MaskRcdParitySideEffects( ExtensibleChip * i_mbaChip,
+ STEP_CODE_DATA_STRUCT & io_sc )
+{
+ #define PRDF_FUNC "[cen_mba::MaskRcdParitySideEffects] "
+
+ uint32_t l_rc = SUCCESS;
+
+ do
+ {
+ // Don't do anything if this is a checkstop attention.
+ if ( CHECK_STOP == io_sc.service_data->getPrimaryAttnType() ) break;
+
+ ExtensibleChip * membChip = getConnectedParent(i_mbaChip, TYPE_MEMBUF);
+
+ SCAN_COMM_REGISTER_CLASS * mbsFir;
+ SCAN_COMM_REGISTER_CLASS * mbsFirMaskOr;
+ SCAN_COMM_REGISTER_CLASS * mbaCalFir;
+ SCAN_COMM_REGISTER_CLASS * mbaCalFirMaskOr;
+ SCAN_COMM_REGISTER_CLASS * mbaFir;
+ SCAN_COMM_REGISTER_CLASS * mbaFirMaskOr;
+
+ mbsFir = membChip->getRegister( "MBSFIR" );
+ mbsFirMaskOr = membChip->getRegister( "MBSFIR_MASK_OR" );
+ mbaCalFir = i_mbaChip->getRegister("MBACALFIR" );
+ mbaCalFirMaskOr = i_mbaChip->getRegister("MBACALFIR_MASK_OR");
+ mbaFir = i_mbaChip->getRegister("MBAFIR" );
+ mbaFirMaskOr = i_mbaChip->getRegister("MBAFIR_MASK_OR" );
+
+ l_rc |= mbsFir->Read();
+ l_rc |= mbaCalFir->Read();
+ l_rc |= mbaFir->Read();
+ if ( SUCCESS != l_rc )
+ {
+ PRDF_ERR( PRDF_FUNC "FIR read failed for MBA 0x%08x",
+ i_mbaChip->getHuid() );
+ break;
+ }
+
+ // Mask only if the side effect bit is set.
+
+ if ( mbsFir->IsBitSet(4) ) // internal timeout
+ {
+ mbsFirMaskOr->SetBit(4);
+ l_rc |= mbsFirMaskOr->Write();
+ }
+
+ if ( mbaCalFir->IsBitSet(2) ) // refresh overrun
+ {
+ mbaCalFirMaskOr->SetBit(2);
+ l_rc = mbaCalFirMaskOr->Write();
+ }
+
+ if ( mbaCalFir->IsBitSet(17) ) // WRQ RRQ hang error
+ {
+ mbaCalFirMaskOr->SetBit(17);
+ l_rc = mbaCalFirMaskOr->Write();
+ }
+
+ if ( mbaFir->IsBitSet(2) ) // multi-address maint cmd timeout
+ {
+ mbaFirMaskOr->SetBit(2);
+ l_rc = mbaFirMaskOr->Write();
+ }
+
+ if ( SUCCESS != l_rc )
+ {
+ PRDF_ERR( PRDF_FUNC "MASK_OR write failed for MBA 0x%08x",
+ i_mbaChip->getHuid() );
+ break;
+ }
+
+ } while (0);
+
+ return SUCCESS;
+
+ #undef PRDF_FUNC
+}
+PRDF_PLUGIN_DEFINE( cen_mba, MaskRcdParitySideEffects );
+
+//------------------------------------------------------------------------------
+
+} // end namespace cen_mba
+
+} // end namespace PRDF
+
diff --git a/src/usr/diag/prdf/common/plat/cen/prdf_plat_cen.mk b/src/usr/diag/prdf/common/plat/cen/prdf_plat_cen.mk
index 956ba6cf2..f9d2d62ba 100644
--- a/src/usr/diag/prdf/common/plat/cen/prdf_plat_cen.mk
+++ b/src/usr/diag/prdf/common/plat/cen/prdf_plat_cen.mk
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2016,2017
+# Contributors Listed Below - COPYRIGHT 2016,2018
# [+] International Business Machines Corp.
#
#
@@ -37,4 +37,9 @@ prd_incpath += ${PRD_SRC_PATH}/common/plat/cen
# Object files common to both FSP and Hostboot
################################################################################
+# plat/cen/ (non-rule plugin related)
prd_obj += prdfCenMbaDomain.o
+
+# plat/cen/ (rule plugin related)
+prd_rule_plugin += prdfCenMba_common.o
+
OpenPOWER on IntegriCloud