summaryrefslogtreecommitdiffstats
path: root/src/usr/hwas/common/deconfigGard.C
diff options
context:
space:
mode:
authorDhruvaraj S <dhruvaraj@in.ibm.com>2014-12-17 04:00:42 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-01-09 14:49:39 -0600
commit3f6be5b4c621d2762bd3ddd457c082fbc12f93b5 (patch)
tree9f13a2beae9f1932fb2593eedde283ff9983ff50 /src/usr/hwas/common/deconfigGard.C
parent81acddb9a897637467bcb7a4a85096e91d4e0874 (diff)
downloadtalos-hostboot-3f6be5b4c621d2762bd3ddd457c082fbc12f93b5.tar.gz
talos-hostboot-3f6be5b4c621d2762bd3ddd457c082fbc12f93b5.zip
Clear FCO Based deconfigure before applying FCO
All Field Core Override deconfigure need to be cleared before applying FCO again in a reconfigure loop. Change-Id: I86ac001dfdbe2ab6af95850570eb8007554b23ac CQ: SW288436 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/14940 Tested-by: Jenkins Server Reviewed-by: Brian H. Horton <brianh@linux.ibm.com> Reviewed-by: Andrew J. Geissler <andrewg@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwas/common/deconfigGard.C')
-rw-r--r--src/usr/hwas/common/deconfigGard.C31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/usr/hwas/common/deconfigGard.C b/src/usr/hwas/common/deconfigGard.C
index 519f89df6..bf26fedd2 100644
--- a/src/usr/hwas/common/deconfigGard.C
+++ b/src/usr/hwas/common/deconfigGard.C
@@ -428,6 +428,9 @@ errlHndl_t DeconfigGard::processFieldCoreOverride()
{
const TargetHandle_t pNode = *pNode_it;
+ //Clear all FCO based deconfigure before
+ //re-calculating FCO.
+ _clearFCODeconfigure(pNode);
// Get FCO value
uint32_t l_fco = 0;
l_pErr = platGetFCO(pNode, l_fco);
@@ -2079,5 +2082,33 @@ void DeconfigGard::setXABusEndpointDeconfigured(bool deconfig)
iv_XABusEndpointDeconfigured = deconfig;
}
+//*****************************************************************************
+
+void DeconfigGard::_clearFCODeconfigure(ConstTargetHandle_t i_nodeTarget)
+{
+ HWAS_DBG("Clear all FCO deconfigure");
+
+ //Get all targets in the node present and non-functional.
+ PredicateHwas predNonFunctional;
+ predNonFunctional.present(true).functional(false);
+ TargetHandleList l_targetList;
+ targetService().getAssociated(l_targetList,i_nodeTarget,
+ TargetService::CHILD, TargetService::ALL,
+ &predNonFunctional);
+ for (TargetHandleList::const_iterator
+ l_target_it = l_targetList.begin();
+ l_target_it != l_targetList.end();
+ l_target_it++)
+ {
+ TargetHandle_t l_pTarget = *l_target_it;
+ HwasState l_state = l_pTarget->getAttr<ATTR_HWAS_STATE>();
+ if(l_state.deconfiguredByEid == DECONFIGURED_BY_FIELD_CORE_OVERRIDE)
+ {
+ l_state.functional = 1;
+ l_state.deconfiguredByEid = 0;
+ l_pTarget->setAttr<ATTR_HWAS_STATE>(l_state);
+ }
+ }
+}
} // namespce HWAS
OpenPOWER on IntegriCloud