summaryrefslogtreecommitdiffstats
path: root/src/usr/hwas/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/hwas/common')
-rw-r--r--src/usr/hwas/common/deconfigGard.C17
-rw-r--r--src/usr/hwas/common/hwas.C9
2 files changed, 16 insertions, 10 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)
diff --git a/src/usr/hwas/common/hwas.C b/src/usr/hwas/common/hwas.C
index 1333be066..0f5a20f1d 100644
--- a/src/usr/hwas/common/hwas.C
+++ b/src/usr/hwas/common/hwas.C
@@ -1500,8 +1500,7 @@ bool isDescFunctional(const TARGETING::TargetHandle_t &i_desc,
if (i_desc->getAttr<ATTR_TYPE>() == TYPE_OBUS_BRICK)
{
auto obusType = TARGETING::TYPE_OBUS;
- TARGETING::Target* l_obus_ptr = const_cast<TARGETING::Target*>(
- getParent(i_desc, obusType));
+ TARGETING::Target* l_obus_ptr = getParent(i_desc, obusType);
//If NPU is bad and OBUS is non-SMP, then mark them bad
// Bit does not matter unless not in SMP mode
@@ -1590,8 +1589,7 @@ void forceEcExEqDeconfig(const TARGETING::TargetHandle_t i_core,
auto exType = TARGETING::TYPE_EX;
auto eqType = TARGETING::TYPE_EQ;
- TARGETING::Target* l_ex = const_cast<TARGETING::Target*>(
- getParent(i_core, exType));
+ TARGETING::Target* l_ex = getParent(i_core, exType);
getChildChiplets(pECList, l_ex, TYPE_CORE, true);
if(pECList.size() == 0)
{
@@ -1600,8 +1598,7 @@ void forceEcExEqDeconfig(const TARGETING::TargetHandle_t i_core,
l_ex->getAttr<ATTR_HUID>(), i_present ? "" : "NOT ");
//Now get the parent EQ and check to see if it should be deconfigured
- TARGETING::Target* l_eq = const_cast<TARGETING::Target*>(
- getParent(l_ex, eqType));
+ TARGETING::Target* l_eq = getParent(l_ex, eqType);
getChildChiplets(pEXList, l_eq, TYPE_EX, true);
if(pEXList.size() == 0)
{
OpenPOWER on IntegriCloud