summaryrefslogtreecommitdiffstats
path: root/src/usr/targeting
diff options
context:
space:
mode:
authorIlya Smirnov <ismirno@us.ibm.com>2019-08-29 09:59:10 -0500
committerChristian R Geddes <crgeddes@us.ibm.com>2019-09-03 13:41:22 -0500
commitb9cb9f77195cac23421069936d31903043d10d13 (patch)
treec453b8536582edba71a27de1e5dd892ed61e7ea3 /src/usr/targeting
parentc3d8cfd066998862656706bb00d15ad986470fe5 (diff)
downloadtalos-hostboot-b9cb9f77195cac23421069936d31903043d10d13.tar.gz
talos-hostboot-b9cb9f77195cac23421069936d31903043d10d13.zip
Update SYS's ATTR_XSCOM_BASE_ADDRESS in SMF Paths
The correct value of ATTR_XSCOM_BASE_ADDRESS was not being propagated to HDAT when SMF is enabled. The problem is that the system target has a copy of said attribute that needs to be updated with the SMF bit (bit 15) to reflect the fact that XSCOM BAR is in SMF memory. The attribute under the system target was not being updated accordingly (only those attributes under proc targets were). This commit adds a fix to update ATTR_XSCOM_BASE_ADDRESS under the system target in SMF mode. Change-Id: Icac5bb7023ac0ecc521a961681420bfc21a46eac Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/83057 Reviewed-by: Nicholas E Bofferding <bofferdn@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> 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> Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com> Reviewed-by: Christian R Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src/usr/targeting')
-rwxr-xr-xsrc/usr/targeting/targetservicestart.C14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/usr/targeting/targetservicestart.C b/src/usr/targeting/targetservicestart.C
index d16d8b75c..8fe580763 100755
--- a/src/usr/targeting/targetservicestart.C
+++ b/src/usr/targeting/targetservicestart.C
@@ -847,6 +847,10 @@ static void adjustMemoryMap( TargetService& i_targetService )
ATTR_LPC_BUS_ADDR_type l_lpcBase =
l_pTopLevel->getAttr<ATTR_LPC_BUS_ADDR>();
+ // Whether to update the SYS's ATTR_XSCOM_BASE_ADDRESS with a new
+ // BAR before returning from this function
+ bool l_updateSysXscomBar = false;
+
// Loop through all the procs to recompute all the BARs
// also find the victim to swap with
Target* l_swapVictim = nullptr;
@@ -874,11 +878,13 @@ static void adjustMemoryMap( TargetService& i_targetService )
if(l_curXscomBAR & IS_SMF_ADDR_BIT)
{
l_xscomBAR |= IS_SMF_ADDR_BIT;
+ l_updateSysXscomBar = true;
}
TARG_INF( " XSCOM=%.16llX", l_xscomBAR );
l_procChip->setAttr<ATTR_XSCOM_BASE_ADDRESS>(l_xscomBAR);
+
// See if this chip's space now belongs to the master
if( l_xscomBAR == l_curXscomBAR )
{
@@ -1073,6 +1079,14 @@ static void adjustMemoryMap( TargetService& i_targetService )
XSCOM::get_master_bar() );
TARG_ASSERT( false, "XSCOM BARs are inconsistent" );
}
+
+ if(l_updateSysXscomBar)
+ {
+ l_pTopLevel->setAttr<ATTR_XSCOM_BASE_ADDRESS>(
+ l_xscomBase |= IS_SMF_ADDR_BIT);
+ TARG_INF("Updating the SYS XSCOM BAR to 0x%.16llX",
+ l_xscomBase |= IS_SMF_ADDR_BIT);
+ }
}
OpenPOWER on IntegriCloud