diff options
-rwxr-xr-x | src/usr/hdat/hdatmsvpd.C | 2 | ||||
-rwxr-xr-x | src/usr/targeting/targetservicestart.C | 14 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/usr/hdat/hdatmsvpd.C b/src/usr/hdat/hdatmsvpd.C index fb86e10bd..def8a37e8 100755 --- a/src/usr/hdat/hdatmsvpd.C +++ b/src/usr/hdat/hdatmsvpd.C @@ -926,6 +926,8 @@ void HdatMsVpd::prt() iv_mover.hdatMoverAddr.lo); HDAT_INF(" hdatBSRAddr = 0X %08X %08X ", iv_mover.hdatBSRAddr.hi, iv_mover.hdatBSRAddr.lo); + HDAT_INF(" hdatXSCOMAddr = 0X %08X %08X", iv_mover.hdatXSCOMAddr.hi, + iv_mover.hdatXSCOMAddr.lo); HDAT_INF(" **hdatMsVpdImtAddrRange_t**"); hdatPrintHdrs(NULL, NULL, &iv_IMTaddrRngArrayHdr, NULL); 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); + } } |