Skip to content

Commit

Permalink
Zero out Cumulus related virtual address attribute during MPIPL
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
crgeddes authored and dcrowell77 committed Jan 31, 2018
1 parent 8443a65 commit ae1ac07
Showing 1 changed file with 23 additions and 4 deletions.
27 changes: 23 additions & 4 deletions src/usr/targeting/targetservicestart.C
Expand Up @@ -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;
Expand All @@ -431,25 +434,41 @@ 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);
auto tpmMutex=tpm->getHbMutexAttr<ATTR_HB_TPM_MUTEX>();
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();

Expand Down

0 comments on commit ae1ac07

Please sign in to comment.