From 3ee0baff08c230c2db5430eb624e670206532116 Mon Sep 17 00:00:00 2001 From: Bill Hoffa Date: Wed, 30 May 2018 20:36:44 -0500 Subject: 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 Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins Reviewed-by: Christian R. Geddes Reviewed-by: Prachi Gupta Reviewed-by: Daniel M. Crowell --- src/usr/targeting/targetservicestart.C | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'src') 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(0); l_chip->setAttr(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(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() + == PROC_MASTER_TYPE_ACTING_MASTER) + { + l_chip->setAttr(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(0); } } -- cgit v1.2.1