diff options
author | Christian Geddes <crgeddes@us.ibm.com> | 2018-09-20 13:50:21 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2018-09-21 12:42:55 -0500 |
commit | 5b7c6b466357df2b7dd356977dae5e0003fbebdd (patch) | |
tree | 4230e7de8bfd1e35b6de9c3a0d3aecae34e7787d /src | |
parent | 739807847a95530dc42ee9a955b81ced4ffda142 (diff) | |
download | talos-hostboot-5b7c6b466357df2b7dd356977dae5e0003fbebdd.tar.gz talos-hostboot-5b7c6b466357df2b7dd356977dae5e0003fbebdd.zip |
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 <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>
Diffstat (limited to 'src')
-rwxr-xr-x | src/usr/targeting/targetservicestart.C | 16 |
1 files changed, 16 insertions, 0 deletions
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<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() ) { |