From 5b7c6b466357df2b7dd356977dae5e0003fbebdd Mon Sep 17 00:00:00 2001 From: Christian Geddes Date: Thu, 20 Sep 2018 13:50:21 -0500 Subject: Reset ATTR_SPCWKUP_COUNT to 0 at start of MPIPL We were seeing issues in the newly added PM_RESET call in istep 21. This was happening because if the SKIP_WAKEUP attribute is not set then PM_RESET will attempt to enable special_wakeup on all of the EX targets before enabling auto-special wakeup. We are then expecting special wakeup done bit to be set on all of th EX targets prior to enabling auto-special wakeup on the target. IF SPCWKUP_COUNT is still set to a non-zero value from the previous IPL the call to enable special_wakeup will result in a no-op so the special wkup done bit will never be set in the GPMMR. This causes to call to enable auto-special wakeup to fail Change-Id: Iabdb5099ea9d6eb195003697de8ca074804d2d98 CQ: SW446135 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/66430 Reviewed-by: Matt Derksen Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell --- src/usr/targeting/targetservicestart.C | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src') diff --git a/src/usr/targeting/targetservicestart.C b/src/usr/targeting/targetservicestart.C index 9346d38cf..429ec1728 100755 --- a/src/usr/targeting/targetservicestart.C +++ b/src/usr/targeting/targetservicestart.C @@ -568,6 +568,22 @@ static void initializeAttributes(TargetService& i_targetService, membuf->setAttr(0); } + TARGETING::PredicateCTM l_eqFilter(CLASS_UNIT, TYPE_EQ); + TARGETING::PredicateCTM l_exFilter(CLASS_UNIT, TYPE_EX); + TARGETING::PredicateCTM l_ecFilter(CLASS_UNIT, TYPE_CORE); + TARGETING::PredicatePostfixExpr l_wakeupTargFilter; + l_wakeupTargFilter.push(&l_eqFilter).push(&l_exFilter).Or().push(&l_ecFilter).Or(); + TargetHandleList l_wakeupTargs; + i_targetService.getAssociated( l_wakeupTargs, + l_pTopLevel, + TargetService::CHILD_BY_AFFINITY, + TARGETING::TargetService::ALL, + &l_wakeupTargFilter); + for (auto & l_targ : l_wakeupTargs) + { + l_targ->setAttr(0); + } + // HYPCOMM section is only present for master node if ( TARGETING::UTIL::isCurrentMasterNode() ) { -- cgit v1.2.1