diff options
author | Christian Geddes <crgeddes@us.ibm.com> | 2018-01-24 15:31:12 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-01-31 12:28:00 -0500 |
commit | ae1ac07ebcac5e7b650207fdda124e17bcb3be4f (patch) | |
tree | 7ba6ca9584192563cecbf1b0c4a915975c62a612 /src/usr | |
parent | 8443a65a3599f433bd47c2ea03e863240db28b89 (diff) | |
download | talos-hostboot-ae1ac07ebcac5e7b650207fdda124e17bcb3be4f.tar.gz talos-hostboot-ae1ac07ebcac5e7b650207fdda124e17bcb3be4f.zip |
Zero out Cumulus related virtual address attribute during MPIPL
During MPIPL we want to zero out virtual address attributes because
we want to insure they get recomputed on the MPIPL pass through
the isteps. These values can change between boots so its important
to recompute them on the MPIPL pass.
Change-Id: I58f810e70ed61d9acb04bd32c92fbed45f2b78a2
RTC: 172534
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52582
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: William G. Hoffa <wghoffa@us.ibm.com>
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr')
-rwxr-xr-x | src/usr/targeting/targetservicestart.C | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/usr/targeting/targetservicestart.C b/src/usr/targeting/targetservicestart.C index a5241025e..360df2b8e 100755 --- a/src/usr/targeting/targetservicestart.C +++ b/src/usr/targeting/targetservicestart.C @@ -416,6 +416,9 @@ static void initializeAttributes(TargetService& i_targetService, l_pTopLevel->setAttr<ATTR_PAYLOAD_BASE>(l_hyp_hrmor); } + + //Assemble list of functional procs and zero out virtual address values + //to ensure they get set again this IPL TARGETING::PredicateCTM l_chipFilter(CLASS_CHIP, TYPE_PROC); TARGETING::PredicateIsFunctional l_functional; TARGETING::PredicatePostfixExpr l_functionalChips; @@ -431,18 +434,19 @@ static void initializeAttributes(TargetService& i_targetService, { l_chip->setAttr<ATTR_XSCOM_VIRTUAL_ADDR>(0); l_chip->setAttr<ATTR_HOMER_VIRT_ADDR>(0); - //TODO RTC:172534 Need to clear volatile attributes during MPIPL for cumulus } - TargetHandleList tpms; + //Assemble list of tpms and zero out some values + //to ensure they get set again this IPL + TargetHandleList l_tpms; TARGETING::PredicateCTM tpmFilter(CLASS_CHIP, TYPE_TPM); i_targetService.getAssociated( - tpms, + l_tpms, l_pTopLevel, TargetService::CHILD, TARGETING::TargetService::ALL, &tpmFilter); - for (auto & tpm : tpms) + for (auto & tpm : l_tpms) { tpm->setAttr<ATTR_HB_TPM_INIT_ATTEMPTED>(0); tpm->setAttr<ATTR_HB_TPM_LOG_MGR_PTR>(0); @@ -450,6 +454,21 @@ static void initializeAttributes(TargetService& i_targetService, mutex_init(tpmMutex); } + //Assemble list of membuf and zero out some virtual address attributes + //to ensure they get set again this IPL + TargetHandleList l_membufs; + TARGETING::PredicateCTM membufFilter(CLASS_CHIP, TYPE_MEMBUF); + i_targetService.getAssociated( + l_membufs, + l_pTopLevel, + TargetService::CHILD, + TARGETING::TargetService::ALL, + &membufFilter); + for (auto & membuf : l_membufs) + { + membuf->setAttr<ATTR_IBSCOM_VIRTUAL_ADDR>(0); + } + // Setup physical TOC address uint64_t l_hbdTocAddr = AttrRP::getHbDataTocAddr(); |