summaryrefslogtreecommitdiffstats
path: root/src/usr/hwas/common/deconfigGard.C
diff options
context:
space:
mode:
authorRoland Veloz <rveloz@us.ibm.com>2018-07-26 12:22:43 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-08-30 11:00:31 -0500
commitc8448c3a09aef319e9669fc1003b9fa6f79ebe5d (patch)
tree35cf80a64e7e952ffed23d179bf079fc5de8bbcc /src/usr/hwas/common/deconfigGard.C
parent1dd6d76477460e2045ba71145e51f9880d946d0e (diff)
downloadtalos-hostboot-c8448c3a09aef319e9669fc1003b9fa6f79ebe5d.tar.gz
talos-hostboot-c8448c3a09aef319e9669fc1003b9fa6f79ebe5d.zip
Deconfig EC/EX/EQ at runtime
Applied the normal parent/child rules for EC/EX/EQ logic to be done in the runtime deconfig logic. After applying the deconfig logic, then reset the PM for the parent proc of the EX/EX/EQ. To facilitate the code changes, modified the return value of the TARGETING::getParent(...) call. It no longer returns a const * Target, considering 5 times out of 7 of it's usage, users were just staic_cast(ing) away the const. Clear out the HB reset attribute in the mpipl path. Modify PRD logic to use runtime deconfig call in malfunction alert path. CMVC-Prereq: 1066157 Change-Id: If81f2f15c6e84bf2adb6fd66c1321b8f1ddf1a86 CQ: SW443157 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/64873 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: Roland Veloz <rveloz@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/hwas/common/deconfigGard.C')
-rw-r--r--src/usr/hwas/common/deconfigGard.C17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/usr/hwas/common/deconfigGard.C b/src/usr/hwas/common/deconfigGard.C
index 75554cf9b..f844ec912 100644
--- a/src/usr/hwas/common/deconfigGard.C
+++ b/src/usr/hwas/common/deconfigGard.C
@@ -1640,8 +1640,14 @@ void DeconfigGard::_deconfigureByAssoc(
_deconfigureByAssoc(*pChild, i_errlEid, i_deconfigRule);
} // for CHILD
- if ((i_deconfigRule == NOT_AT_RUNTIME)||
- (i_deconfigRule == SPEC_DECONFIG))
+ // Retrieve the target type from the given target
+ TYPE l_targetType = i_target.getAttr<ATTR_TYPE>();
+
+ if ((i_deconfigRule == NOT_AT_RUNTIME) ||
+ (i_deconfigRule == SPEC_DECONFIG) ||
+ (l_targetType == TYPE_EQ) ||
+ (l_targetType == TYPE_EX) ||
+ (l_targetType == TYPE_CORE))
{
// if the rule is NOT_AT_RUNTIME and we got here, then we are
// not at runtime.
@@ -1649,6 +1655,9 @@ void DeconfigGard::_deconfigureByAssoc(
// reason is, we're not really deconfigureing anything, we're just
// marking them as non-functional. we only want to do that for the
// desired target and it's CHILD
+ // Except for target EQ, EX, CORE. Deconfigure these regardless of the
+ // runtime status
+
// find all CHILD_BY_AFFINITY targets and deconfigure them
targetService().getAssociated(pChildList, &i_target,
@@ -1673,7 +1682,7 @@ void DeconfigGard::_deconfigureByAssoc(
// chip (TYPE_EQ, TYPE_EX, TYPE_CORE)
// deconfigureByAssociation rules
- switch (i_target.getAttr<ATTR_TYPE>())
+ switch (l_targetType)
{
case TYPE_CORE:
{
@@ -3069,7 +3078,7 @@ bool DeconfigGard::anyChildFCO (Target & i_parent)
// deconfigureTargetAtRuntime
/******************************************************************************/
errlHndl_t DeconfigGard::deconfigureTargetAtRuntime(
- TARGETING::ConstTargetHandle_t const i_pTarget,
+ TARGETING::TargetHandle_t i_pTarget,
const DeconfigGard::DeconfigureFlags i_deconfigureAction,
const errlHndl_t i_deconfigErrl)
OpenPOWER on IntegriCloud