summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBill Hoffa <wghoffa@us.ibm.com>2018-05-30 20:36:44 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-05-31 13:34:21 -0400
commit3ee0baff08c230c2db5430eb624e670206532116 (patch)
tree37aa1cbad58e9a7a5f81ad14d7f34ed130adf06b /src
parent0ae044ac29cf9eca0d2c7a7c0cb3eec00a0a5f6b (diff)
downloadtalos-hostboot-3ee0baff08c230c2db5430eb624e670206532116.tar.gz
talos-hostboot-3ee0baff08c230c2db5430eb624e670206532116.zip
Set attribute PROC_MASTER_TYPE during MPIPL
- 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>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/usr/targeting/targetservicestart.C24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/usr/targeting/targetservicestart.C b/src/usr/targeting/targetservicestart.C
index d655ede7d..00393b017 100755
--- a/src/usr/targeting/targetservicestart.C
+++ b/src/usr/targeting/targetservicestart.C
@@ -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);
}
}
OpenPOWER on IntegriCloud