Skip to content

Commit

Permalink
Reset ATTR_SPCWKUP_COUNT to 0 at start of MPIPL
Browse files Browse the repository at this point in the history
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 <mderkse1@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: Daniel M. Crowell <dcrowell@us.ibm.com>
  • Loading branch information
crgeddes authored and dcrowell77 committed Sep 21, 2018
1 parent 7398078 commit 5b7c6b4
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/usr/targeting/targetservicestart.C
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,22 @@ static void initializeAttributes(TargetService& i_targetService,
membuf->setAttr<ATTR_IBSCOM_VIRTUAL_ADDR>(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<ATTR_SPCWKUP_COUNT>(0);
}

// HYPCOMM section is only present for master node
if ( TARGETING::UTIL::isCurrentMasterNode() )
{
Expand Down

0 comments on commit 5b7c6b4

Please sign in to comment.