summaryrefslogtreecommitdiffstats
path: root/src/usr/hwas/common/deconfigGard.C
diff options
context:
space:
mode:
authorMatt Derksen <mderkse1@us.ibm.com>2019-02-14 14:54:18 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2019-02-15 13:38:25 -0600
commit6c2654db4623093da3917aa90cf46df71d88b8a5 (patch)
tree405317ec839499ab1cd3d65a2388f95278237a00 /src/usr/hwas/common/deconfigGard.C
parent9825db50591c9579511fabb677a742a5bbe5a074 (diff)
downloadtalos-hostboot-6c2654db4623093da3917aa90cf46df71d88b8a5.tar.gz
talos-hostboot-6c2654db4623093da3917aa90cf46df71d88b8a5.zip
Manually garded targets incorrectly being resource recovered
Garded targets were not always setting GARD_APPLIED bit in ATTR_HWAS_STATE_CHANGED which was causing ATTR_BLOCK_SPEC_DECONFIG to always be set after a resource recovery. To recreate failure: 1) gard a critical target (gard --md 0x50000) 2) IPL 3) verify resource recoverd (gard --gc fabric) 4) verify ATTR_BLOCK_SPEC_DECONFIG set to 1 (hwsvCmd -y) 5) power down 6) clear previous gard (gard --clr all) 7) gard all XBUSes (gard --md 0xE0000 .. gard --md 0xE0005) 8) IPL 9) verify XBUSes were incorrectly resource recovered (gard --gc fabric) This SPEC_DECONFIG code was added in fips920. We don't believe the fix needs to go back because it requires a double failure and manual garding. The first failure must be a gard of a critical resource, which forces a reconfig. In the field, the failed parts would be replaced and rely on a different bit (RESRC_RECOV) and code path. Also, if this isn't fixed the targets will just be garded again later. This also only applies to Predictive garded parts. Change-Id: I183b74ef200a5034e5dba20c0f64ad8f75763167 CQ:SW454599 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/71929 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Roland Veloz <rveloz@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/hwas/common/deconfigGard.C')
-rw-r--r--src/usr/hwas/common/deconfigGard.C10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/usr/hwas/common/deconfigGard.C b/src/usr/hwas/common/deconfigGard.C
index 8fab07013..bdbda740d 100644
--- a/src/usr/hwas/common/deconfigGard.C
+++ b/src/usr/hwas/common/deconfigGard.C
@@ -148,7 +148,7 @@ errlHndl_t DeconfigGard::applyGardRecord(Target *i_pTarget,
GardRecord &i_gardRecord,
const DeconfigureFlags i_deconfigRule)
{
- HWAS_INF("Apply gard record for a target");
+ HWAS_INF("Apply gard record for target %.8X", get_huid(i_pTarget));
errlHndl_t l_pErr = NULL;
do
{
@@ -183,12 +183,16 @@ errlHndl_t DeconfigGard::applyGardRecord(Target *i_pTarget,
HWAS_MUTEX_UNLOCK(iv_mutex);
+ // Need to set GARD_APPLIED bit for all garded targets
+ update_hwas_changed_mask(i_pTarget, HWAS_CHANGED_BIT_GARD_APPLIED);
+
if(i_deconfigRule == SPEC_DECONFIG)
{
+ HWAS_INF(
+ "Skip platLogEvent(GARD_APPLIED) for spec_deconfig target %.8X",
+ get_huid(i_pTarget));
break;
}
-
- update_hwas_changed_mask(i_pTarget, HWAS_CHANGED_BIT_GARD_APPLIED);
l_pErr = platLogEvent(i_pTarget, GARD_APPLIED);
if (l_pErr)
{
OpenPOWER on IntegriCloud