diff options
author | Dhruvaraj S <dhruvaraj@in.ibm.com> | 2014-12-17 04:00:42 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-01-09 14:49:39 -0600 |
commit | 3f6be5b4c621d2762bd3ddd457c082fbc12f93b5 (patch) | |
tree | 9f13a2beae9f1932fb2593eedde283ff9983ff50 /src/usr/hwas | |
parent | 81acddb9a897637467bcb7a4a85096e91d4e0874 (diff) | |
download | talos-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')
-rw-r--r-- | src/usr/hwas/common/deconfigGard.C | 31 |
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 |