summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2019-10-08 14:56:50 -0500
committerZane C Shelley <zshelle@us.ibm.com>2019-10-14 09:58:01 -0500
commite3407c1b48ade6408ff444dd0c8d94a005a9d94c (patch)
treebcb71d1f64ed5c6b1890b7a493c220261ae6c33a
parenta3a3923859c8a336727043cd02c9dc8a45d2722b (diff)
downloadtalos-hostboot-e3407c1b48ade6408ff444dd0c8d94a005a9d94c.tar.gz
talos-hostboot-e3407c1b48ade6408ff444dd0c8d94a005a9d94c.zip
PRD: OCMB handling for checkstop analysis path
Change-Id: I708d59f8bbf732edac4ee77e9885bf287cdf03d8 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/85020 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Benjamen G Tyner <ben.tyner@ibm.com> Reviewed-by: Brian J Stegmiller <bjs@us.ibm.com> Reviewed-by: Paul Greenwood <paul.greenwood@ibm.com> Reviewed-by: Zane C Shelley <zshelle@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/85204 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
-rw-r--r--src/usr/diag/prdf/common/plat/axone/axone_mcc_actions.rule4
-rw-r--r--src/usr/diag/prdf/common/plat/axone/prdfMccPlugins.C52
-rw-r--r--src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C33
3 files changed, 54 insertions, 35 deletions
diff --git a/src/usr/diag/prdf/common/plat/axone/axone_mcc_actions.rule b/src/usr/diag/prdf/common/plat/axone/axone_mcc_actions.rule
index 5081420f8..e34035165 100644
--- a/src/usr/diag/prdf/common/plat/axone/axone_mcc_actions.rule
+++ b/src/usr/diag/prdf/common/plat/axone/axone_mcc_actions.rule
@@ -164,12 +164,12 @@ actionclass analyzeUSTLFIR { analyze(gUSTLFIR); };
actionclass analyze_ocmb_chnl0
{
- analyze(connected(TYPE_OCMB_CHIP, 0));
+ try( funccall("checkOcmb_0"), analyze(connected(TYPE_OCMB_CHIP, 0)) );
};
actionclass analyze_ocmb_chnl1
{
- analyze(connected(TYPE_OCMB_CHIP, 1));
+ try( funccall("checkOcmb_1"), analyze(connected(TYPE_OCMB_CHIP, 1)) );
};
actionclass analyze_ocmb_chnl0_UERE
diff --git a/src/usr/diag/prdf/common/plat/axone/prdfMccPlugins.C b/src/usr/diag/prdf/common/plat/axone/prdfMccPlugins.C
index cb0a2a290..804418717 100644
--- a/src/usr/diag/prdf/common/plat/axone/prdfMccPlugins.C
+++ b/src/usr/diag/prdf/common/plat/axone/prdfMccPlugins.C
@@ -31,6 +31,7 @@
// Platform includes
#include <prdfMemUtils.H>
#include <prdfPlatServices.H>
+#include <prdfMemExtraSig.H>
using namespace TARGETING;
@@ -84,6 +85,57 @@ int32_t PostAnalysis( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & io_sc )
}
PRDF_PLUGIN_DEFINE( axone_mcc, PostAnalysis );
+//##############################################################################
+//
+// DSTLFIR
+//
+//##############################################################################
+
+/**
+ * @brief Plugin function called to avoid analyzing to a checkstop on an OCMB.
+ * @param i_chip A MCC chip.
+ * @param io_sc The step code data struct.
+ * @param i_pos Position of the OMI/OCMB relative to the MCC.
+ * @return SUCCESS if the primary attn is CS, else PRD_SCAN_COMM_REGISTER_ZERO.
+ */
+int32_t checkOcmb( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & io_sc,
+ uint8_t i_pos )
+{
+ int32_t rc = PRD_SCAN_COMM_REGISTER_ZERO;
+
+ #ifdef CONFIG_ENABLE_CHECKSTOP_ANALYSIS
+ // We do not have support for the OCMB in the checkstop analysis path.
+ // As such, we will simply indicate there is an attention from the OCMB and
+ // add second level support and both sides of the bus as callouts.
+ if ( CHECK_STOP == io_sc.service_data->getPrimaryAttnType() )
+ {
+ TargetHandle_t omi = getConnectedChild( i_chip->getTrgt(), TYPE_OMI,
+ i_pos );
+ ExtensibleChip * ocmb = getConnectedChild( i_chip, TYPE_OCMB_CHIP,
+ i_pos );
+
+ io_sc.service_data->SetCallout( LEVEL2_SUPPORT, MRU_MED, NO_GARD );
+ io_sc.service_data->SetCallout( omi, MRU_LOW, NO_GARD );
+ io_sc.service_data->SetCallout( ocmb->getTrgt(), MRU_LOW, NO_GARD );
+
+ rc = SUCCESS;
+ }
+ #endif
+
+ return rc;
+}
+
+#define CHECK_OCMB_PLUGIN( POS ) \
+int32_t checkOcmb_##POS( ExtensibleChip * i_chip, \
+ STEP_CODE_DATA_STRUCT & io_sc ) \
+{ \
+ return checkOcmb( i_chip, io_sc, POS ); \
+} \
+PRDF_PLUGIN_DEFINE( axone_mcc, checkOcmb_##POS );
+
+CHECK_OCMB_PLUGIN( 0 );
+CHECK_OCMB_PLUGIN( 1 );
+
} // end namespace axone_mcc
} // end namespace PRDF
diff --git a/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C b/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C
index f5b5899ae..2e9b6f963 100644
--- a/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C
+++ b/src/usr/diag/prdf/occ_firdata/prdfWriteHomerFirData.C
@@ -628,39 +628,6 @@ void getAddresses( TrgtMap_t & io_targMap )
0x07013373, // DL2_ERROR_HOLD
};
- io_targMap[TRGT_OCMB][REG_GLBL] =
- {
- 0x08040000, // MB_CHIPLET_CS_FIR
- 0x08040001, // MB_CHIPLET_RE_FIR
- 0x08040004, // MB_CHIPLET_SPA_FIR
- };
-
- io_targMap[TRGT_OCMB][REG_FIR] =
- {
- 0x0804000a, // MB_LFIR
- 0x08010870, // MMIOFIR
- 0x08011400, // SRQFIR
- 0x08011800, // MCBISTFIR
- 0x08011c00, // RDFFIR
- 0x08012400, // TLXFIR
- 0x08012800, // OMIDLFIR
- };
-
- io_targMap[TRGT_OCMB][REG_REG] =
- {
- 0x08040002, // MB_CHIPLET_FIR_MASK
- 0x08040007, // MB_CHIPLET_SPA_FIR_MASK
- 0x08012813, // DL0_ERROR_HOLD
- 0x0801241D, // TLX_ERR1_REPORT
-
- // AUE/IAUE analysis
- 0x080118D7, // MCBMCAT
-
- // AUE/IAUE analysis
- 0x0801186D, // MBUER
- 0x0801186E, // MBAUER
- };
-
// EC level handling will be done with a
// structure and separate register count field.
OpenPOWER on IntegriCloud