summaryrefslogtreecommitdiffstats
path: root/src/usr/hwas/hwasPlatDeconfigGard.C
diff options
context:
space:
mode:
authorBrian Horton <brianh@linux.ibm.com>2013-11-05 11:53:07 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-11-07 14:59:47 -0600
commit288892a74556c285f8ec6b823dd8929fed1b4ac2 (patch)
treea1db6f5bb2d7f7ac0e5b45c281c35627ca9e4e04 /src/usr/hwas/hwasPlatDeconfigGard.C
parent503a82e95be52cfbf4f67dbb6270f4dff27e3ae6 (diff)
downloadtalos-hostboot-288892a74556c285f8ec6b823dd8929fed1b4ac2.tar.gz
talos-hostboot-288892a74556c285f8ec6b823dd8929fed1b4ac2.zip
Remove unused createGardRecord() function
hwas common createGardRecord() function is not used by FSP and so doesn't need to be in the common section. move functionality to the hostboot platCreateGardRecord() and delete the common function. Change-Id: Ie8245d6a52ea3acf75966f97740af9c24dc97913 RTC: 90404 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7064 Tested-by: Jenkins Server Reviewed-by: SHELDON R. BAILEY <baileysh@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwas/hwasPlatDeconfigGard.C')
-rw-r--r--src/usr/hwas/hwasPlatDeconfigGard.C72
1 files changed, 59 insertions, 13 deletions
diff --git a/src/usr/hwas/hwasPlatDeconfigGard.C b/src/usr/hwas/hwasPlatDeconfigGard.C
index 71ffb2d78..5f658235b 100644
--- a/src/usr/hwas/hwasPlatDeconfigGard.C
+++ b/src/usr/hwas/hwasPlatDeconfigGard.C
@@ -56,12 +56,7 @@ errlHndl_t DeconfigGard::platClearGardRecords(
errlHndl_t l_pErr = NULL;
EntityPath l_targetId;
- if (i_pTarget)
- {
- HWAS_INF("Clear GARD Records for %.8X", get_huid(i_pTarget));
- l_targetId = i_pTarget->getAttr<ATTR_PHYS_PATH>();
- }
- else
+ if (!i_pTarget)
{
HWAS_INF("Clear all GARD Records");
}
@@ -103,7 +98,7 @@ errlHndl_t DeconfigGard::platClearGardRecords(
}
} // for
- HWAS_INF("GARD Records to Cleared: %d", l_gardRecordsCleared);
+ HWAS_INF("GARD Records Cleared: %d", l_gardRecordsCleared);
}
else
{
@@ -122,12 +117,7 @@ errlHndl_t DeconfigGard::platGetGardRecords(
o_records.clear();
EntityPath l_targetId;
- if (i_pTarget)
- {
- HWAS_INF("Get GARD Record for %.8X", get_huid(i_pTarget));
- l_targetId = i_pTarget->getAttr<ATTR_PHYS_PATH>();
- }
- else
+ if (!i_pTarget)
{
HWAS_INF("Get all GARD Records");
}
@@ -188,6 +178,62 @@ errlHndl_t DeconfigGard::platCreateGardRecord(
do
{
+ const uint8_t lDeconfigGardable =
+ i_pTarget->getAttr<ATTR_DECONFIG_GARDABLE>();
+ const uint8_t lPresent =
+ i_pTarget->getAttr<ATTR_HWAS_STATE>().present;
+ if (!lDeconfigGardable || !lPresent)
+ {
+ // Target is not GARDable. Commit an error
+ HWAS_ERR("Target not GARDable");
+
+ /*@
+ * @errortype
+ * @moduleid HWAS::MOD_DECONFIG_GARD
+ * @reasoncode HWAS::RC_TARGET_NOT_GARDABLE
+ * @devdesc Attempt to create a GARD Record for a target that
+ * is not GARDable
+ * (not DECONFIG_GARDABLE or not present)
+ * @userdata1 HUID of input target // GARD errlog EID
+ * @userdata2 ATTR_DECONFIG_GARDABLE // ATTR_HWAS_STATE.present
+ */
+ const uint64_t userdata1 =
+ (static_cast<uint64_t>(get_huid(i_pTarget)) << 32) | i_errlEid;
+ const uint64_t userdata2 =
+ (static_cast<uint64_t>(lDeconfigGardable) << 32) | lPresent;
+ l_pErr = hwasError(
+ ERRL_SEV_UNRECOVERABLE,
+ HWAS::MOD_DECONFIG_GARD,
+ HWAS::RC_TARGET_NOT_GARDABLE,
+ userdata1,
+ userdata2);
+ break;
+ }
+
+ Target* pSys;
+ targetService().getTopLevelTarget(pSys);
+ HWAS_ASSERT(pSys, "HWAS platCreateGardRecord: no TopLevelTarget");
+
+ // check for system CDM Policy
+ const ATTR_CDM_POLICIES_type l_sys_policy =
+ pSys->getAttr<ATTR_CDM_POLICIES>();
+ if (l_sys_policy & CDM_POLICIES_MANUFACTURING_DISABLED)
+ {
+ // manufacturing records are disabled
+ // - don't process
+ HWAS_INF("Manufacturing policy: disabled - skipping GARD Record create");
+ break;
+ }
+
+ if ((l_sys_policy & CDM_POLICIES_PREDICTIVE_DISABLED) &&
+ (i_errorType == GARD_Predictive))
+ {
+ // predictive records are disabled AND gard record is predictive
+ // - don't process
+ HWAS_INF("Predictive policy: disabled - skipping GARD Record create");
+ break;
+ }
+
l_pErr = _GardRecordIdSetup(iv_platDeconfigGard);
if (l_pErr)
{
OpenPOWER on IntegriCloud