summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Stegmiller <bjs@us.ibm.com>2018-07-24 10:01:35 -0500
committerZane C. Shelley <zshelle@us.ibm.com>2018-07-26 21:13:17 -0500
commitf1ef5d3692e074c5157d40834f5bb40d042a5a9c (patch)
tree10af0c6613e0cf213f45f67f8b616b5d7bd6da7f
parent830b052cb619a1c3ab001113d92713d4d2936e9f (diff)
downloadtalos-hostboot-f1ef5d3692e074c5157d40834f5bb40d042a5a9c.tar.gz
talos-hostboot-f1ef5d3692e074c5157d40834f5bb40d042a5a9c.zip
PRDF: Use peer SMP target as ATTR on FSP only
Change-Id: If5007c8e1b0eb91ca2768b927eebdd46c151a54f CQ:SW439392 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/63213 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Caleb N. Palmer <cnpalmer@us.ibm.com> Reviewed-by: Zane C. Shelley <zshelle@us.ibm.com> Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/63362 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.C33
1 files changed, 20 insertions, 13 deletions
diff --git a/src/usr/diag/prdf/common/plat/p9/prdfLaneRepair.C b/src/usr/diag/prdf/common/plat/p9/prdfLaneRepair.C
index 99948b717..94947b037 100644
--- a/src/usr/diag/prdf/common/plat/p9/prdfLaneRepair.C
+++ b/src/usr/diag/prdf/common/plat/p9/prdfLaneRepair.C
@@ -371,8 +371,7 @@ int32_t handleLaneRepairEvent( ExtensibleChip * i_chip,
}
-void obus_smpCallout_link( TargetHandle_t &i_smpTgt,
- TargetHandle_t &i_smpPeerTgt )
+void obus_smpCallout_link( TargetHandle_t &i_smpTgt )
{
errlHndl_t l_mainElog = NULL;
l_mainElog = ServiceGeneratorClass::ThisServiceGenerator().getErrl();
@@ -393,8 +392,12 @@ void obus_smpCallout_link( TargetHandle_t &i_smpTgt,
#ifndef ESW_SIM_COMPILE
errlHndl_t l_err = NULL;
+ // get the peer SMGROUP target associated with input SMPGROUP
+ TargetHandle_t l_smpPeerTgt = i_smpTgt->getAttr<ATTR_PEER_TARGET>();
+ PRDF_ASSERT(nullptr != l_smpPeerTgt);
+
// Call SVPD routine to add callouts
- l_err = HWSV::SvrError::AddSMPCalloutAndFFDC(i_smpTgt, i_smpPeerTgt,
+ l_err = HWSV::SvrError::AddSMPCalloutAndFFDC(i_smpTgt, l_smpPeerTgt,
l_mainElog);
if (NULL != l_err)
@@ -448,6 +451,19 @@ void obus_getSmpTarget( TargetHandle_t &i_obusTgt,
{
l_smpNum = l_smp->getAttr<ATTR_CHIP_UNIT>();
+ // ==========================================
+ // Link numbering from hardware is just 0:1
+ // in OBUS related FIR.
+ // ==========================================
+ // SMPGROUP numbering is 0:7 (2 per OBUS chiplet)
+ //
+ // OBUS0 link 0:1 -> SMGROUP 0:1
+ // OBUS1 link 0:1 -> SMGROUP 2:3
+ // OBUS2 link 0:1 -> SMGROUP 4:5
+ // OBUS3 link 0:1 -> SMGROUP 6:7
+ // ==========================================
+ l_smpNum = l_smpNum % 2;
+
if (i_link == l_smpNum)
{
// We found the SMPGROUP
@@ -464,23 +480,14 @@ void obus_getSmpTarget( TargetHandle_t &i_obusTgt,
void obus_smpCallout_link( TargetHandle_t &i_obusTgt, uint32_t i_link )
{
TargetHandle_t l_smpTarg = nullptr;
- TargetHandle_t l_smpPeerTarg = nullptr;
// Get the associated SMP target for this OBUS target
obus_getSmpTarget( i_obusTgt, i_link, l_smpTarg );
PRDF_ASSERT(nullptr != l_smpTarg);
- // Need the other end of OBUS for the FSP callout
- TargetHandle_t peerObusTgt = getTxBusEndPt(i_obusTgt);
- PRDF_ASSERT(nullptr != peerObusTgt);
-
- // Get the SMP target on the other end
- obus_getSmpTarget( peerObusTgt, i_link, l_smpPeerTarg );
- PRDF_ASSERT(nullptr != l_smpPeerTarg);
-
// Callout both SMPGROUPS
- obus_smpCallout_link( l_smpTarg, l_smpPeerTarg );
+ obus_smpCallout_link( l_smpTarg );
return;
OpenPOWER on IntegriCloud