summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaleb Palmer <cnpalmer@us.ibm.com>2019-09-11 16:01:10 -0500
committerZane C Shelley <zshelle@us.ibm.com>2019-09-19 20:29:42 -0500
commitd0f0ff1e58757c833149b4e5ee6dc597a5028372 (patch)
treedec7202bb6ae45addaf0ca1b991eda914c1b98cf
parentd9057b40ab8fb478d0cc64c586fb23ef4ba2379a (diff)
downloadtalos-hostboot-d0f0ff1e58757c833149b4e5ee6dc597a5028372.tar.gz
talos-hostboot-d0f0ff1e58757c833149b4e5ee6dc597a5028372.zip
PRD: Lane repair OMI bus callout changes
Change-Id: I6c282e0d3db63df2bb9badbf717f75aff16e6c4e Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/83666 Reviewed-by: Benjamen G Tyner <ben.tyner@ibm.com> Reviewed-by: Paul Greenwood <paul.greenwood@ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Zane C Shelley <zshelle@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/84008 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/p9/prdfLaneRepair.C35
-rw-r--r--src/usr/diag/prdf/common/plat/p9/prdfLaneRepair.H8
2 files changed, 26 insertions, 17 deletions
diff --git a/src/usr/diag/prdf/common/plat/p9/prdfLaneRepair.C b/src/usr/diag/prdf/common/plat/p9/prdfLaneRepair.C
index d9cb5e471..6ad889fd5 100644
--- a/src/usr/diag/prdf/common/plat/p9/prdfLaneRepair.C
+++ b/src/usr/diag/prdf/common/plat/p9/prdfLaneRepair.C
@@ -75,6 +75,16 @@ TargetHandle_t getTxBusEndPt( TargetHandle_t i_rxTrgt)
// grab connected DMI parent
o_txTrgt = getConnectedParent( i_rxTrgt, TYPE_DMI );
}
+ else if ( TYPE_OMI == busType )
+ {
+ // Get connected child OCMB (one OCMB per OMI)
+ o_txTrgt = getConnectedChild( i_rxTrgt, TYPE_OCMB_CHIP, 0 );
+ }
+ else if ( TYPE_OCMB_CHIP == busType )
+ {
+ // Get connected parent OMI
+ o_txTrgt = getConnectedParent( i_rxTrgt, TYPE_OMI );
+ }
PRDF_ASSERT(nullptr != o_txTrgt);
return o_txTrgt;
@@ -892,7 +902,7 @@ PRDF_PLUGIN_DEFINE_NS( cumulus_proc, LaneRepair, captureSmpObus3 );
PRDF_PLUGIN_DEFINE_NS( nimbus_proc, LaneRepair, captureSmpObus3 );
PRDF_PLUGIN_DEFINE_NS( axone_proc, LaneRepair, captureSmpObus3 );
-int32_t calloutBusInterface( ExtensibleChip * i_chip,
+int32_t calloutBusInterface( TargetHandle_t i_rxTrgt,
STEP_CODE_DATA_STRUCT & i_sc,
PRDpriority i_priority )
{
@@ -902,10 +912,9 @@ int32_t calloutBusInterface( ExtensibleChip * i_chip,
do {
// Get both endpoints
- TargetHandle_t rxTrgt = i_chip->getTrgt();
- TYPE rxType = getTargetType(rxTrgt);
+ TYPE rxType = getTargetType(i_rxTrgt);
- if ( rxType == TYPE_OBUS && !obusInSmpMode( rxTrgt ) )
+ if ( rxType == TYPE_OBUS && !obusInSmpMode( i_rxTrgt ) )
{
// There is no support in hostboot for calling out the other end of
// an NV or openCAPI bus. By design, any FIR bits associated with
@@ -913,7 +922,7 @@ int32_t calloutBusInterface( ExtensibleChip * i_chip,
// action. So if we hit this case, just make a default callout.
PRDF_ERR( PRDF_FUNC "Lane repair only supported in SMP mode "
- "obus: 0x%08x", getHuid(rxTrgt) );
+ "obus: 0x%08x", getHuid(i_rxTrgt) );
i_sc.service_data->SetCallout( LEVEL2_SUPPORT, MRU_MED, NO_GARD );
i_sc.service_data->SetCallout( SP_CODE, MRU_MED, NO_GARD );
@@ -921,11 +930,11 @@ int32_t calloutBusInterface( ExtensibleChip * i_chip,
break;
}
- TargetHandle_t txTrgt = getTxBusEndPt(rxTrgt);
+ TargetHandle_t txTrgt = getTxBusEndPt(i_rxTrgt);
TYPE txType = getTargetType(txTrgt);
// Add the endpoint target callouts
- i_sc.service_data->SetCallout( rxTrgt, MRU_MEDA );
+ i_sc.service_data->SetCallout( i_rxTrgt, MRU_MEDA );
i_sc.service_data->SetCallout( txTrgt, MRU_MEDA);
// Get the HWAS bus type.
@@ -963,7 +972,7 @@ int32_t calloutBusInterface( ExtensibleChip * i_chip,
}
// Callout this bus interface.
- PRDF_ADD_BUS_CALLOUT( errl, rxTrgt, txTrgt, hwasType, i_priority );
+ PRDF_ADD_BUS_CALLOUT( errl, i_rxTrgt, txTrgt, hwasType, i_priority );
} while(0);
@@ -1042,7 +1051,7 @@ PRDF_PLUGIN_DEFINE_NS( centaur_membuf, LaneRepair, tooManyBusErrors );
int32_t calloutBusInterfacePlugin( ExtensibleChip * i_chip,
STEP_CODE_DATA_STRUCT & io_sc )
{
- calloutBusInterface(i_chip, io_sc, MRU_LOW);
+ calloutBusInterface(i_chip->getTrgt(), io_sc, MRU_LOW);
return SUCCESS;
}
PRDF_PLUGIN_DEFINE_NS( nimbus_xbus, LaneRepair, calloutBusInterfacePlugin );
@@ -1064,12 +1073,12 @@ int32_t omiParentCalloutBusInterfacePlugin( ExtensibleChip * i_chip,
STEP_CODE_DATA_STRUCT & io_sc,
uint8_t i_pos )
{
- ExtensibleChip * omi = getConnectedChild( i_chip, TYPE_OMI, i_pos );
- ExtensibleChip * ocmb = getConnectedChild( omi, TYPE_OCMB_CHIP, 0 );
+ TargetHandle_t omi = getConnectedChild(i_chip->getTrgt(), TYPE_OMI, i_pos);
+ TargetHandle_t ocmb = getConnectedChild( omi, TYPE_OCMB_CHIP, 0 );
// Callout both ends of the bus as well (OMI and OCMB)
- io_sc.service_data->SetCallout( omi->getTrgt(), MRU_MEDA );
- io_sc.service_data->SetCallout( ocmb->getTrgt(), MRU_MEDA );
+ io_sc.service_data->SetCallout( omi, MRU_MEDA );
+ io_sc.service_data->SetCallout( ocmb, MRU_MEDA );
calloutBusInterface(omi, io_sc, MRU_LOW);
return SUCCESS;
diff --git a/src/usr/diag/prdf/common/plat/p9/prdfLaneRepair.H b/src/usr/diag/prdf/common/plat/p9/prdfLaneRepair.H
index afc834e29..3f5a3f33c 100644
--- a/src/usr/diag/prdf/common/plat/p9/prdfLaneRepair.H
+++ b/src/usr/diag/prdf/common/plat/p9/prdfLaneRepair.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2017 */
+/* Contributors Listed Below - COPYRIGHT 2017,2019 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -56,12 +56,12 @@ int32_t handleLaneRepairEvent (ExtensibleChip * i_chip,
/**
* @brief Will add target bus interface endpoints and all parts in between the
* endpoints to the global error log in RasServices.
- * @param i_chip RX-side chip of bus interface
- * @param i_sc The step code data struct.
+ * @param i_rxTrgt RX-side target of bus interface
+ * @param i_sc The step code data struct.
* @param i_priority Callout priority (default MRU_LOW).
* @return Non-SUCCESS if an internal function fails. SUCCESS otherwise.
*/
-int32_t calloutBusInterface( ExtensibleChip * i_chip,
+int32_t calloutBusInterface( TARGETING::TargetHandle_t i_rxTrgt,
STEP_CODE_DATA_STRUCT & i_sc,
PRDpriority i_priority = MRU_LOW );
OpenPOWER on IntegriCloud