Skip to content

Commit

Permalink
Set attribute PROC_MASTER_TYPE during MPIPL
Browse files Browse the repository at this point in the history
  - During an MPIPL it is possible for the current
    master processor to switch (failover scenario).
    The PROC_MASTER_TYPE attribute needs to be updated
    so after an attribute sync the FSP still has the
    correct attribute data

Change-Id: I9738c4e829a3d73672c7dab0d9483a7856116aa0
RTC: 182718
CQ: SW430670
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59612
Reviewed-by: Dean Sanner <dsanner@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: Christian R. Geddes <crgeddes@us.ibm.com>
Reviewed-by: Prachi Gupta <pragupta@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
  • Loading branch information
wghoffa authored and dcrowell77 committed May 31, 2018
1 parent 0ae044a commit 3ee0baf
Showing 1 changed file with 20 additions and 4 deletions.
24 changes: 20 additions & 4 deletions src/usr/targeting/targetservicestart.C
Original file line number Diff line number Diff line change
Expand Up @@ -473,11 +473,27 @@ static void initializeAttributes(TargetService& i_targetService,
{
l_chip->setAttr<ATTR_XSCOM_VIRTUAL_ADDR>(0);
l_chip->setAttr<ATTR_HOMER_VIRT_ADDR>(0);
//In certain IPL Scenarios this attribute may not get
// cleared properly, so clearing it for all proc chip
// targets that are not the master proc chip
if (l_chip != l_pMasterProcChip)
if (l_chip == l_pMasterProcChip)
{
// Need to set PROC_MASTER_TYPE to reflect the
// current acting master
l_chip->setAttr<ATTR_PROC_MASTER_TYPE>(PROC_MASTER_TYPE_ACTING_MASTER);
}
else
{
// If an different proc chip was previously the master
// (we assume this because the PROC_MASTER_TYPE
// attribute says so) we should change the attribute
// to indicate it could be the master again in the future
if (l_chip->getAttr<ATTR_PROC_MASTER_TYPE>()
== PROC_MASTER_TYPE_ACTING_MASTER)
{
l_chip->setAttr<ATTR_PROC_MASTER_TYPE>(PROC_MASTER_TYPE_MASTER_CANDIDATE);
}

//In certain IPL Scenarios this attribute may not get
// cleared properly, so clearing it for all proc chip
// targets that are not the master proc chip
l_chip->setAttr<ATTR_PROC_SBE_MASTER_CHIP>(0);
}
}
Expand Down

0 comments on commit 3ee0baf

Please sign in to comment.