diff --git a/src/usr/targeting/targetservicestart.C b/src/usr/targeting/targetservicestart.C index a5241025eab..360df2b8e2a 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(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(0); l_chip->setAttr(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(0); tpm->setAttr(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(0); + } + // Setup physical TOC address uint64_t l_hbdTocAddr = AttrRP::getHbDataTocAddr();