summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBrian Horton <brianh@linux.ibm.com>2014-06-20 16:42:24 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-06-30 09:30:59 -0500
commitf555d057b419d1c6708b01437564ea4ab31ef4ce (patch)
treeea05a3c39ec8b98fdd9af96212a6d0ccf025190b /src
parent9c4aa90f178a4f9ed68bdb0d17eec52785c5ea47 (diff)
downloadblackbird-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.H12
-rw-r--r--src/usr/hwas/common/deconfigGard.C33
-rw-r--r--src/usr/hwas/test/hwasGardTest.H8
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>();
OpenPOWER on IntegriCloud