diff options
author | Brian Horton <brianh@linux.ibm.com> | 2014-06-20 16:42:24 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2014-06-30 09:30:59 -0500 |
commit | f555d057b419d1c6708b01437564ea4ab31ef4ce (patch) | |
tree | ea05a3c39ec8b98fdd9af96212a6d0ccf025190b /src | |
parent | 9c4aa90f178a4f9ed68bdb0d17eec52785c5ea47 (diff) | |
download | blackbird-hostboot-f555d057b419d1c6708b01437564ea4ab31ef4ce.tar.gz blackbird-hostboot-f555d057b419d1c6708b01437564ea4ab31ef4ce.zip |
add 'did we really deconfigure the target' parameter
Change-Id: Id1e1639f49223d4fc25493453a9897d0ce7adb90
CQ: SW259741
Co-req: 925271
Backport: release-fips811
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/11736
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/include/usr/hwas/common/deconfigGard.H | 12 | ||||
-rw-r--r-- | src/usr/hwas/common/deconfigGard.C | 33 | ||||
-rw-r--r-- | src/usr/hwas/test/hwasGardTest.H | 8 |
3 files changed, 38 insertions, 15 deletions
diff --git a/src/include/usr/hwas/common/deconfigGard.H b/src/include/usr/hwas/common/deconfigGard.H index 971fb5973..e32170e20 100644 --- a/src/include/usr/hwas/common/deconfigGard.H +++ b/src/include/usr/hwas/common/deconfigGard.H @@ -239,14 +239,17 @@ public: * and the function continues. The only errors returned are usage errors. * By default, targets are NOT deconfigured if the system is at Runtime. * - * @param[in] i_target Reference to Target to deconfigure. - * @param[in] i_errlEid Error log EID to store in Deconfigure Record. - * @param[in] i_runTimeDeconfigRule Deconfigure Runtime options - + * @param[in] i_target Reference to Target to deconfigure. + * @param[in] i_errlEid Error log EID to store in Deconfigure Record. + * @param[out] o_targetDeconfigured - if pointer is valid, bool is set + * to true if target was deconfigured; NOT SET OTHERWISE + * @param[in] i_runTimeDeconfigRule Deconfigure Runtime options - * default not at runtime * @return errlHndl_t. Error log handle. */ errlHndl_t deconfigureTarget(TARGETING::Target & i_target, const uint32_t i_errlEid, + bool *o_targetDeconfigured = NULL, const DeconfigureRuntime i_runTimeDeconfigRule = NOT_AT_RUNTIME); @@ -425,11 +428,14 @@ private: * * @param[in] i_target Reference to Target to deconfigure. * @param[in] i_errlEid Error log EID to store in Deconfigure Record. + * @param[out] o_targetDeconfigured - if pointer is valid, bool is set + * to true if target was deconfigured; NOT SET OTHERWISE * @param[in] i_runTimeDeconfigRule Deconfigure Runtime options - * default not at runtime */ void _deconfigureTarget(TARGETING::Target & i_target, const uint32_t i_errlEid, + bool *o_targetDeconfigured = NULL, const DeconfigureRuntime i_runTimeDeconfigRule = NOT_AT_RUNTIME); diff --git a/src/usr/hwas/common/deconfigGard.C b/src/usr/hwas/common/deconfigGard.C index 7aeb4b177..485cb3d31 100644 --- a/src/usr/hwas/common/deconfigGard.C +++ b/src/usr/hwas/common/deconfigGard.C @@ -489,6 +489,7 @@ errlHndl_t DeconfigGard::getGardRecords( errlHndl_t DeconfigGard::deconfigureTarget( Target & i_target, const uint32_t i_errlEid, + bool *o_targetDeconfigured, const DeconfigureRuntime i_runTimeDeconfigRule) { HWAS_DBG("Deconfigure Target"); @@ -562,7 +563,8 @@ errlHndl_t DeconfigGard::deconfigureTarget( HWAS_MUTEX_LOCK(iv_mutex); // Deconfigure the Target - _deconfigureTarget(i_target, i_errlEid, i_runTimeDeconfigRule); + _deconfigureTarget(i_target, i_errlEid, o_targetDeconfigured, + i_runTimeDeconfigRule); // Deconfigure other Targets by association _deconfigureByAssoc(i_target, i_errlEid, i_runTimeDeconfigRule); @@ -986,7 +988,8 @@ void DeconfigGard::_deconfigureByAssoc( TargetHandle_t pChild = *pChild_it; HWAS_INF("_deconfigureByAssoc CHILD: %.8X", get_huid(pChild)); - _deconfigureTarget(*pChild, i_errlEid, i_runTimeDeconfigRule); + _deconfigureTarget(*pChild, i_errlEid, NULL, + i_runTimeDeconfigRule); // Deconfigure other Targets by association _deconfigureByAssoc(*pChild, i_errlEid, i_runTimeDeconfigRule); } // for CHILD @@ -1012,7 +1015,8 @@ void DeconfigGard::_deconfigureByAssoc( HWAS_INF("_deconfigureByAssoc CHILD_BY_AFFINITY: %.8X", get_huid(pChild)); - _deconfigureTarget(*pChild, i_errlEid, i_runTimeDeconfigRule); + _deconfigureTarget(*pChild, i_errlEid, NULL, + i_runTimeDeconfigRule); // Deconfigure other Targets by association _deconfigureByAssoc(*pChild, i_errlEid, i_runTimeDeconfigRule); } // for CHILD_BY_AFFINITY @@ -1039,7 +1043,7 @@ void DeconfigGard::_deconfigureByAssoc( HWAS_INF("_deconfigureByAssoc MEMBUF parent MCS: %.8X", get_huid(l_parentMcs)); _deconfigureTarget(const_cast<Target &> (*l_parentMcs), - i_errlEid, i_runTimeDeconfigRule); + i_errlEid, NULL, i_runTimeDeconfigRule); _deconfigureByAssoc(const_cast<Target &> (*l_parentMcs), i_errlEid, i_runTimeDeconfigRule); } @@ -1065,7 +1069,7 @@ void DeconfigGard::_deconfigureByAssoc( HWAS_INF("_deconfigureByAssoc MCS (& MEMBUF) paired: %.8X", get_huid(l_partnerMcs)); _deconfigureTarget(const_cast<Target &> (*l_partnerMcs), - i_errlEid,i_runTimeDeconfigRule); + i_errlEid, NULL,i_runTimeDeconfigRule); _deconfigureByAssoc(const_cast<Target &> (*l_partnerMcs), i_errlEid,i_runTimeDeconfigRule); } @@ -1091,7 +1095,7 @@ void DeconfigGard::_deconfigureByAssoc( HWAS_INF("_deconfigureByAssoc MEMBUF parent with no memory: %.8X", get_huid(l_parentMembuf)); _deconfigureTarget(const_cast<Target &> (*l_parentMembuf), - i_errlEid, i_runTimeDeconfigRule); + i_errlEid, NULL, i_runTimeDeconfigRule); _deconfigureByAssoc(const_cast<Target &> (*l_parentMembuf), i_errlEid, i_runTimeDeconfigRule); @@ -1196,7 +1200,7 @@ void DeconfigGard::_deconfigureByAssoc( HWAS_INF("_deconfigureByAssoc MBA matched: %.8X", get_huid(pMba)); _deconfigureTarget(*pMba, i_errlEid, - i_runTimeDeconfigRule); + NULL, i_runTimeDeconfigRule); l_deconfigList.push_back(pMba); break; // only need to do 1 MBA - we're done. } @@ -1226,7 +1230,7 @@ void DeconfigGard::_deconfigureByAssoc( HWAS_INF("_deconfigureByAssoc MBA matched: %.8X", get_huid(pMba)); _deconfigureTarget(*pMba, i_errlEid, - i_runTimeDeconfigRule); + NULL, i_runTimeDeconfigRule); l_deconfigList.push_back(pMba); break; // only need to do 1 MBA - we're done. } @@ -1267,7 +1271,7 @@ void DeconfigGard::_deconfigureByAssoc( HWAS_INF("_deconfigureByAssoc DIMM parent MBA: %.8X", get_huid(l_parentMba)); _deconfigureTarget(const_cast<Target &> (*l_parentMba), - i_errlEid, i_runTimeDeconfigRule); + i_errlEid, NULL, i_runTimeDeconfigRule); _deconfigureByAssoc(const_cast<Target &> (*l_parentMba), i_errlEid, i_runTimeDeconfigRule); } @@ -1288,7 +1292,8 @@ void DeconfigGard::_deconfigureByAssoc( HWAS_INF("_deconfigureByAssoc BUS Peer: %.8X", get_huid(l_pDstTarget)); _deconfigureTarget(const_cast<Target &> (*l_pDstTarget), - i_errlEid, i_runTimeDeconfigRule); + i_errlEid, NULL, + i_runTimeDeconfigRule); } break; } // TYPE_XBUS, TYPE_ABUS @@ -1300,7 +1305,8 @@ void DeconfigGard::_deconfigureByAssoc( HWAS_INF("deconfigByAssoc parent proc: %.8X", get_huid(l_pParentProc)); _deconfigureTarget(const_cast<Target &> (*l_pParentProc), - i_errlEid, i_runTimeDeconfigRule); + i_errlEid, NULL, + i_runTimeDeconfigRule); _deconfigureByAssoc(const_cast<Target &> (*l_pParentProc), i_errlEid, i_runTimeDeconfigRule); break; @@ -1318,6 +1324,7 @@ void DeconfigGard::_deconfigureByAssoc( void DeconfigGard::_deconfigureTarget( Target & i_target, const uint32_t i_errlEid, + bool *o_targetDeconfigured, const DeconfigureRuntime i_runTimeDeconfigRule) { HWAS_INF("Deconfiguring Target %.8X, errlEid 0x%X", @@ -1353,6 +1360,10 @@ void DeconfigGard::_deconfigureTarget( l_state.deconfiguredByEid = i_errlEid; i_target.setAttr<ATTR_HWAS_STATE>(l_state); + if (o_targetDeconfigured) + { + *o_targetDeconfigured = true; + } // if this is a real error, deconfigure if (i_errlEid & DECONFIGURED_BY_PLID_MASK) diff --git a/src/usr/hwas/test/hwasGardTest.H b/src/usr/hwas/test/hwasGardTest.H index 2446c92c7..3abb7a005 100644 --- a/src/usr/hwas/test/hwasGardTest.H +++ b/src/usr/hwas/test/hwasGardTest.H @@ -190,13 +190,19 @@ public: HwasState l_origState = l_pTarget->getAttr<ATTR_HWAS_STATE>(); // Deconfigure the target. + bool l_targetDeconfigured = false; l_pErr = theDeconfigGard(). - deconfigureTarget(*l_pTarget, 0x12); + deconfigureTarget(*l_pTarget, 0x12, &l_targetDeconfigured); if (l_pErr) { TS_FAIL("testDeconfigure3: Error from deconfigureTarget"); break; } + if (l_targetDeconfigured == false) + { + TS_FAIL("testDeconfigure3: deconfigureTarget didn't set targetDeconfigured correctly"); + break; + } // Get the new HWAS_STATE of the target HwasState l_state = l_pTarget->getAttr<ATTR_HWAS_STATE>(); |