summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/include/usr/hwas/common/deconfigGard.H10
-rw-r--r--src/usr/hwas/common/deconfigGard.C283
-rw-r--r--src/usr/hwas/common/hwas.C8
-rw-r--r--src/usr/hwas/test/hwasGardTest.H452
-rw-r--r--src/usr/hwas/test/hwasSysAvailSvcTest.H142
-rw-r--r--src/usr/targeting/common/predicates/predicatehwaschanged.C7
-rw-r--r--src/usr/targeting/common/test/testcommontargeting.H3
-rwxr-xr-xsrc/usr/targeting/common/xmltohb/attribute_types.xml23
-rw-r--r--src/usr/targeting/common/xmltohb/simics_CUMULUS.system.xml134
-rw-r--r--src/usr/targeting/common/xmltohb/simics_CUMULUS_CDIMM.system.xml134
-rw-r--r--src/usr/targeting/common/xmltohb/target_types.xml67
-rw-r--r--src/usr/util/runtime/rt_cmds.C42
12 files changed, 916 insertions, 389 deletions
diff --git a/src/include/usr/hwas/common/deconfigGard.H b/src/include/usr/hwas/common/deconfigGard.H
index e27836522..90aa61822 100644
--- a/src/include/usr/hwas/common/deconfigGard.H
+++ b/src/include/usr/hwas/common/deconfigGard.H
@@ -513,6 +513,16 @@ public:
const errlHndl_t i_deconfigErrl);
#endif
+ /**
+ * @brief Clears attribute which blocks speculative deconfiguration
+ * (ATTR_BLOCK_SPEC_DECONFIG) so that resource recovery is allowed to
+ * apply speculative deconfigurations / predictive gards. Attribute
+ * is cleared only if a target has been replaced.
+ *
+ * @return ATTR_BLOCK_SPEC_DECONFIG.
+ */
+ uint8_t clearBlockSpecDeconfigForReplacedTargets();
+
protected:
/**
diff --git a/src/usr/hwas/common/deconfigGard.C b/src/usr/hwas/common/deconfigGard.C
index b070c03ec..a1ab9bfc2 100644
--- a/src/usr/hwas/common/deconfigGard.C
+++ b/src/usr/hwas/common/deconfigGard.C
@@ -234,8 +234,9 @@ errlHndl_t DeconfigGard::clearGardRecordsForReplacedTargets()
{
// could be a platform specific target for the other
// ie, we are hostboot and this is an FSP target, or vice-versa
- HWAS_INF("Could not find Target for %.8X",
- get_huid(l_pTarget));
+ HWAS_INF_BIN("Could not find Target for:",
+ &(l_gardRecord.iv_targetId),
+ sizeof(l_gardRecord.iv_targetId));
// we just skip this GARD record
continue;
@@ -329,8 +330,9 @@ errlHndl_t DeconfigGard::clearGardRecordsForReplacedTargets()
// could be a platform specific target for the other
// ie, we are hostboot and this is an FSP target,
// or vice-versa
- HWAS_INF("Could not find Target for %08X",
- get_huid(l_pTarget));
+ HWAS_INF_BIN("Could not find Target for:",
+ &(l_gardRecord.iv_targetId),
+ sizeof(l_gardRecord.iv_targetId));
// we just skip this GARD record
continue;
@@ -581,13 +583,29 @@ errlHndl_t DeconfigGard::deconfigureTargetsFromGardRecordsForIpl(
break;
}
- //Now loop through all gard records and apply recoverable
- //gard records(non Fatal and non Unrecoverable) check
- //whether system can be booted after applying each gard record
- //if system cant be booted after applying gard record that need
- //to be rolled back and try with next one.
+ // If any targets have been replaced, clear Block Spec Deconfig
+ TARGETING::ATTR_BLOCK_SPEC_DECONFIG_type l_block_spec_deconfig =
+ DeconfigGard::clearBlockSpecDeconfigForReplacedTargets();
+
+ if(l_block_spec_deconfig != 0)
+ {
+#if (!defined(CONFIG_CONSOLE_OUTPUT_TRACE) && defined(CONFIG_CONSOLE))
+ CONSOLE::displayf("HWAS", "Blocking Speculative Deconfig");
+#endif
+ HWAS_INF("Blocking Speculative Deconfig: "
+ "skipping Predictive GARD Records");
+ }
+
+ GardRecords_t l_specDeconfigVector;
+
+ //If allowed, that is if Block Spec Deconfig is cleared,
+ //loop through all gard records and apply recoverable
+ //gard records(non Fatal and non Unrecoverable). Check
+ //whether system can be booted after applying all gard
+ //records. If system can't be booted after applying gard
+ //records, then need to rolled them back.
for (GardRecordsCItr_t l_itr = l_gardRecords.begin();
- l_itr != l_gardRecords.end();
+ (l_block_spec_deconfig == 0) && (l_itr != l_gardRecords.end());
++l_itr)
{
GardRecord l_gardRecord = *l_itr;
@@ -640,73 +658,81 @@ errlHndl_t DeconfigGard::deconfigureTargetsFromGardRecordsForIpl(
}
continue;
}
- l_pErr = applyGardRecord(l_pTarget,l_gardRecord,SPEC_DECONFIG);
+
+ //Apply the gard record.
+ l_pErr = applyGardRecord(l_pTarget, l_gardRecord, SPEC_DECONFIG);
if (l_pErr)
{
HWAS_ERR("applyGardRecord returned an error");
break;
}
-
- l_pErr = checkMinimumHardware(pSys,&l_isSystemBootable);
- if (l_pErr)
+ else
{
- HWAS_ERR("checkMinimumHardware returned an error");
- break;
+ // Keep track of spec deconfig gard record
+ l_specDeconfigVector.push_back(l_gardRecord);
}
+ } // for
- if(!l_isSystemBootable)
+ if(l_pErr)
+ {
+ break;
+ }
+
+ l_pErr = checkMinimumHardware(pSys,&l_isSystemBootable);
+ if (l_pErr)
+ {
+ HWAS_ERR("checkMinimumHardware returned an error");
+ break;
+ }
+
+ if(!l_isSystemBootable)
+ {
+ HWAS_INF("System cannot ipl, rolling back the gard for "
+ "speculatively deconfigured targets");
+
+ const uint64_t userdata1 = l_specDeconfigVector.size();
+ const uint64_t userdata2 = 0;
+ /*@
+ * @errortype
+ * @severity ERRL_SEV_INFORMATIONAL
+ * @moduleid MOD_DECONFIG_TARGETS_FROM_GARD
+ * @reasoncode RC_RESOURCE_RECOVERED
+ * @devdesc Gard record(s) not applied due to a
+ * lack of resources.
+ * @custdesc A previously discovered hardware issue is
+ * being ignored to allow the system to boot.
+ * @userdata1 Number of gard records not applied
+ * @userdata2 0
+ */
+
+ l_pErr = hwasError(ERRL_SEV_INFORMATIONAL,
+ MOD_DECONFIG_TARGETS_FROM_GARD,
+ RC_RESOURCE_RECOVERED,
+ userdata1,
+ userdata2);
+ errlCommit(l_pErr, HWAS_COMP_ID);
+
+ //Now go through all targets which are speculatively
+ //deconfigured and roll back gard on them.
+ PredicateHwas predSpecDeconfig;
+ predSpecDeconfig.specdeconfig(true);
+ TargetHandleList l_specDeconfgList;
+ targetService().getAssociated(l_specDeconfgList, pSys,
+ TargetService::CHILD, TargetService::ALL,
+ &predSpecDeconfig);
+
+ //Loop through gard records where spec deconfig was applied
+ for (TargetHandleList::const_iterator
+ l_sdIter = l_specDeconfgList.begin();
+ l_sdIter != l_specDeconfgList.end();
+ ++l_sdIter)
{
- HWAS_INF("System cannot ipl, rolling back the gard Target 0x%08x",
- get_huid(l_pTarget));
- HwasState l_state = l_pTarget->getAttr<ATTR_HWAS_STATE>();
- l_state.deconfiguredByEid = CONFIGURED_BY_RESOURCE_RECOVERY;
+ HwasState l_state = (*l_sdIter)->getAttr<ATTR_HWAS_STATE>();
+ l_state.deconfiguredByEid = 0;
l_state.specdeconfig = 0;
- l_pTarget->setAttr<ATTR_HWAS_STATE>(l_state);
-
- //Now go through all other targets which are speculatively
- //deconfigured and roll back gard on that too.
- PredicateHwas predSpecDeconfig;
- predSpecDeconfig.specdeconfig(true);
- TargetHandleList l_specDeconfgList;
- targetService().getAssociated(l_specDeconfgList, pSys,
- TargetService::CHILD, TargetService::ALL,
- &predSpecDeconfig);
-
- for (TargetHandleList::const_iterator
- l_sdIter = l_specDeconfgList.begin();
- l_sdIter != l_specDeconfgList.end();
- ++l_sdIter)
- {
- l_state = (*l_sdIter)->getAttr<ATTR_HWAS_STATE>();
- l_state.deconfiguredByEid = 0;
- l_state.specdeconfig = 0;
- (*l_sdIter)->setAttr<ATTR_HWAS_STATE>(l_state);
- }
+ (*l_sdIter)->setAttr<ATTR_HWAS_STATE>(l_state);
- /*@
- * @errortype
- * @severity ERRL_SEV_INFORMATIONAL
- * @moduleid MOD_DECONFIG_TARGETS_FROM_GARD
- * @reasoncode RC_RESOURCE_RECOVERED
- * @devdesc A gard record was not applied due to a
- * lack of resources.
- * @custdesc A previously discovered hardware issue is
- * being ignored to allow the system to boot.
- * @userdata1[00:31] HUID the resource
- * @userdata2[00:31] EID from the gard record.
- */
- const uint64_t userdata1 =
- (static_cast<uint64_t>(get_huid(l_pTarget)) << 32);
- const uint64_t userdata2 =
- (static_cast<uint64_t>(l_gardRecord.iv_errlogEid) << 32);
-
- l_pErr = hwasError(ERRL_SEV_INFORMATIONAL,
- MOD_DECONFIG_TARGETS_FROM_GARD,
- RC_RESOURCE_RECOVERED,
- userdata1,
- userdata2);
- errlCommit(l_pErr, HWAS_COMP_ID);
- l_pErr = platLogEvent(l_pTarget, RESOURCE_RECOVERED);
+ l_pErr = platLogEvent(*l_sdIter, RESOURCE_RECOVERED);
if (l_pErr)
{
HWAS_ERR("platLogEvent returned an error");
@@ -721,7 +747,7 @@ errlHndl_t DeconfigGard::deconfigureTargetsFromGardRecordsForIpl(
nodeCheckExpr.push(&predNode).push(&predFunctional).And();
TargetHandleList pNodeList;
- targetService().getAssociated(pNodeList, l_pTarget,
+ targetService().getAssociated(pNodeList, *l_sdIter,
TargetService::PARENT, TargetService::ALL,
&nodeCheckExpr);
if(!pNodeList.empty())
@@ -732,45 +758,53 @@ errlHndl_t DeconfigGard::deconfigureTargetsFromGardRecordsForIpl(
CONFIGURED_BY_RESOURCE_RECOVERY;
pNodeList[0]->setAttr<ATTR_HWAS_STATE>(l_state);
}
- continue;
- }
-
- //The system can be booted even after garding this resource
- //Apply the gard record.
- l_pErr = applyGardRecord(l_pTarget, l_gardRecord);
- if (l_pErr)
- {
- HWAS_ERR("applyGardRecord returned an error");
- break;
- }
- uint32_t l_errlogEid = l_gardRecord.iv_errlogEid;
- //If the errlogEid is already in the errLogEidList, then
- //don't need to log it again as a single error log can
- //create multiple guard records and we only need to repost
- //it once.
- std::vector<uint32_t>::iterator low =
- std::lower_bound(errlLogEidList.begin(),
- errlLogEidList.end(), l_errlogEid);
- if((low == errlLogEidList.end()) || ((*low) != l_errlogEid))
+ } // for
+ }
+ else
+ {
+ //Loop through gard records where spec deconfig was applied
+ while(!l_specDeconfigVector.empty())
{
- errlLogEidList.insert(low, l_errlogEid);
- l_pErr = platReLogGardError(l_gardRecord);
+ // Get gard record and associated target
+ GardRecord l_gardRecord = l_specDeconfigVector.front();
+ Target * l_pTarget =
+ targetService().toTarget(l_gardRecord.iv_targetId);
+
+ //Apply the gard record.
+ l_pErr = applyGardRecord(l_pTarget, l_gardRecord);
if (l_pErr)
{
- HWAS_ERR("platReLogGardError returned an error");
+ HWAS_ERR("applyGardRecord returned an error");
break;
}
- }
+
+ uint32_t l_errlogEid = l_gardRecord.iv_errlogEid;
+ //If the errlogEid is already in the errLogEidList, then
+ //don't need to log it again as a single error log can
+ //create multiple guard records and we only need to repost
+ //it once.
+ std::vector<uint32_t>::iterator low =
+ std::lower_bound(errlLogEidList.begin(),
+ errlLogEidList.end(), l_errlogEid);
+ if((low == errlLogEidList.end()) || ((*low) != l_errlogEid))
+ {
+ errlLogEidList.insert(low, l_errlogEid);
+ l_pErr = platReLogGardError(l_gardRecord);
+ if (l_pErr)
+ {
+ HWAS_ERR("platReLogGardError returned an error");
+ break;
+ }
+ }
#if (!defined(CONFIG_CONSOLE_OUTPUT_TRACE) && defined(CONFIG_CONSOLE))
- CONSOLE::displayf("HWAS", "Deconfig HUID 0x%08X, %s",
+ CONSOLE::displayf("HWAS", "Deconfig HUID 0x%08X, %s",
get_huid(l_pTarget),
l_pTarget->getAttr<TARGETING::ATTR_PHYS_PATH>().toString());
#endif
- } // for
- if(l_pErr)
- {
- break;
+
+ l_specDeconfigVector.erase(l_specDeconfigVector.begin());
+ } // while
}
if (iv_XAOBusEndpointDeconfigured)
@@ -2936,5 +2970,62 @@ errlHndl_t DeconfigGard::deconfigureTargetAtRuntime(
return l_errl ;
}
#endif
+
+//******************************************************************************
+uint8_t DeconfigGard::clearBlockSpecDeconfigForReplacedTargets()
+{
+ HWAS_INF("Clear Block Spec Deconfig for replaced Targets");
+
+ // Get Block Spec Deconfig value
+ Target *pSys;
+ targetService().getTopLevelTarget(pSys);
+ ATTR_BLOCK_SPEC_DECONFIG_type l_block_spec_deconfig =
+ pSys->getAttr<ATTR_BLOCK_SPEC_DECONFIG>();
+
+ do
+ {
+ // Check Block Spec Deconfig value
+ if(l_block_spec_deconfig == 0)
+ {
+ // Block Spec Deconfig is already cleared
+ HWAS_INF("Block Spec Deconfig already cleared");
+ }
+
+ // Create the predicate with HWAS changed state and our RESRC_RECOV bit
+ PredicateHwasChanged l_predicateHwasChanged;
+ l_predicateHwasChanged.changedBit(HWAS_CHANGED_BIT_RESRC_RECOV, true);
+
+ // Go through all targets
+ for (TargetIterator t_iter = targetService().begin();
+ t_iter != targetService().end();
+ ++t_iter)
+ {
+ Target* l_pTarget = *t_iter;
+
+ // Check if target has changed
+ if (l_predicateHwasChanged(l_pTarget))
+ {
+ // Check if Block Spec Deconfig is set
+ if(l_block_spec_deconfig == 1)
+ {
+ l_block_spec_deconfig = 0;
+ pSys->setAttr
+ <ATTR_BLOCK_SPEC_DECONFIG>(l_block_spec_deconfig);
+ HWAS_INF("Block Spec Deconfig cleared due to HWAS state "
+ "change for 0x%.8x",
+ get_huid(l_pTarget));
+ }
+
+ // Clear RESRC_RECOV bit in changed flags for the target
+ HWAS_DBG("RESRC_RECOV bit cleared for 0x%.8x",
+ get_huid(l_pTarget));
+ clear_hwas_changed_bit(l_pTarget, HWAS_CHANGED_BIT_RESRC_RECOV);
+ }
+ } // for
+ } while (0);
+
+ return l_block_spec_deconfig;
+} // clearBlockSpecDeconfigForReplacedTargets
+
} // namespace HWAS
diff --git a/src/usr/hwas/common/hwas.C b/src/usr/hwas/common/hwas.C
index 3f242aefe..a6fa872b5 100644
--- a/src/usr/hwas/common/hwas.C
+++ b/src/usr/hwas/common/hwas.C
@@ -2200,6 +2200,14 @@ errlHndl_t checkMinimumHardware(const TARGETING::ConstTargetHandle_t i_nodeOrSys
HWAS_INF("checkMinimumHardware exit - minimum hardware %s",
((l_errl != NULL)||((o_bootable!=NULL)&&(!*o_bootable))) ?
"NOT available" : "available");
+ if((l_errl != NULL)||((o_bootable!=NULL)&&(!*o_bootable)))
+ {
+ // Minimum hardware not available, block speculative deconfigs
+ Target *pSys;
+ targetService().getTopLevelTarget(pSys);
+ pSys->setAttr<ATTR_BLOCK_SPEC_DECONFIG>(1);
+ }
+
return l_errl ;
} // checkMinimumHardware
diff --git a/src/usr/hwas/test/hwasGardTest.H b/src/usr/hwas/test/hwasGardTest.H
index 7d1fcc5fa..bc74bfca4 100644
--- a/src/usr/hwas/test/hwasGardTest.H
+++ b/src/usr/hwas/test/hwasGardTest.H
@@ -43,6 +43,13 @@
#include <hwas/common/deconfigGard.H>
#include <hwas/common/hwas_reasoncodes.H>
+// $$ make sure these are disabled before checking in!!
+#define DISABLE_UNIT_TESTS 1
+#define DISABLE_MBA_UNIT_TESTS 1
+#define DISABLE_MEM_UNIT_TESTS 1
+#define DISABLE_EX_UNIT_TESTS 1
+//$$#define DISABLE_UNIT_TESTS 0
+
using namespace HWAS;
using namespace TARGETING;
@@ -62,13 +69,14 @@ public:
void testDeconfigure2()
{
TS_TRACE(INFO_MRK "testDeconfigure2: Started");
+ HWAS_INF("testDeconfigure2: Started");
errlHndl_t l_pErr = NULL;
DeconfigGard::DeconfigureRecords_t l_records;
do
{
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -83,7 +91,7 @@ public:
if (pExList.empty())
{
- TS_FAIL("testDeconfigure3a: empty pExList");
+ TS_FAIL("testDeconfigure2: empty pExList");
break;
}
TargetHandle_t l_pTarget = *pExList.begin();
@@ -137,8 +145,8 @@ public:
void testDeconfigure3()
{
TS_TRACE(INFO_MRK "testDeconfigure3: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -147,13 +155,15 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testDeconfigure3: Skipped");
#else
+ HWAS_INF("testDeconfigure3: Started");
errlHndl_t l_pErr = NULL;
do
{
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -221,8 +231,8 @@ public:
void testDeconfigure4()
{
TS_TRACE(INFO_MRK "testDeconfigure4: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -231,13 +241,15 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testDeconfigure4: Skipped");
#else
+ HWAS_INF("testDeconfigure4: Started");
errlHndl_t l_pErr = NULL;
do
{
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -260,9 +272,6 @@ public:
// Get the current HWAS_STATE of the target
HwasState l_origState = l_pTarget->getAttr<ATTR_HWAS_STATE>();
- // get the current status/counter
- uint32_t l_origStatus = theDeconfigGard().getDeconfigureStatus();
-
// Deconfigure the target.
l_pErr = theDeconfigGard().
deconfigureTarget(*l_pTarget, 0xA);
@@ -272,12 +281,6 @@ public:
break;
}
- // confirm the counter changed
- if (l_origStatus == theDeconfigGard().getDeconfigureStatus())
- {
- TS_FAIL("testDeconfigure4: unchanged deconfigureStatus");
- }
-
// Deconfigure the target again
l_pErr = theDeconfigGard().
deconfigureTarget(*l_pTarget, 0xB);
@@ -319,8 +322,8 @@ public:
{
TS_TRACE(INFO_MRK "testDeconfigurePECTarget: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -329,8 +332,10 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
-
+ HWAS_INF("testDeconfigurePECTarget: Skipped");
#else
+ HWAS_INF("testDeconfigurePECTarget: Started");
+
errlHndl_t l_pErr = NULL;
do
@@ -449,8 +454,8 @@ public:
void testDeconfigurePECwithAllBadPHBs()
{
TS_TRACE(INFO_MRK "testDeconfigurePECwithAllBadPHBs: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -459,8 +464,10 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
-
+ HWAS_INF("testDeconfigurePECwithAllBadPHBs: Skipped");
#else
+ HWAS_INF("testDeconfigurePECwithAllBadPHBs: Started");
+
errlHndl_t l_pErr = NULL;
do
@@ -574,8 +581,8 @@ public:
void testDeconfigureEQTarget()
{
TS_TRACE(INFO_MRK "testDeconfigureEQTarget: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -584,7 +591,9 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testDeconfigureEQTarget: Skipped");
#else
+ HWAS_INF("testDeconfigureEQTarget: Started");
errlHndl_t l_pErr = NULL;
@@ -748,8 +757,8 @@ public:
void testDeconfigureAssoc1()
{
TS_TRACE(INFO_MRK "testDeconfigureAssoc1: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_MBA_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -758,7 +767,9 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testDeconfigureAssoc1: Skipped");
#else
+ HWAS_INF("testDeconfigureAssoc1: Started");
errlHndl_t l_pErr = NULL;
@@ -836,8 +847,8 @@ public:
void testDeconfigureAssoc2()
{
TS_TRACE(INFO_MRK "testDeconfigureAssoc2: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_MEM_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -846,7 +857,9 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testDeconfigureAssoc2: Skipped");
#else
+ HWAS_INF("testDeconfigureAssoc2: Started");
errlHndl_t l_pErr = NULL;
@@ -913,8 +926,8 @@ public:
void testDeconfigureAssoc3()
{
TS_TRACE(INFO_MRK "testDeconfigureAssoc3: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -923,7 +936,9 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testDeconfigureAssoc3: Skipped");
#else
+ HWAS_INF("testDeconfigureAssoc3: Started");
errlHndl_t l_pErr = NULL;
@@ -989,8 +1004,8 @@ public:
void testDeconfigureAssoc4()
{
TS_TRACE(INFO_MRK "testDeconfigureAssoc4: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -999,7 +1014,9 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testDeconfigureAssoc4: Skipped");
#else
+ HWAS_INF("testDeconfigureAssoc4: Started");
errlHndl_t l_pErr = NULL;
@@ -1066,7 +1083,7 @@ public:
void testDeconfigureAssoc5()
{
TS_TRACE(INFO_MRK "testDeconfigureAssoc5: Started");
-#if 1
+#if DISABLE_MBA_UNIT_TESTS
// these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
@@ -1076,7 +1093,9 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE(" - SKIPPING -- other tests could be adversely affected");
+ HWAS_INF("testDeconfigureAssoc5: Skipped");
#else
+ HWAS_INF("testDeconfigureAssoc5: Started");
errlHndl_t l_pErr = NULL;
@@ -1183,8 +1202,8 @@ public:
void testDeConfigEX2BadCores()
{
TS_TRACE(INFO_MRK "testDeConfigEX2BadCores: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -1193,13 +1212,15 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testDeConfigEX2BadCores: Skipped");
#else
+ HWAS_INF("testDeConfigEX2BadCores: Started");
errlHndl_t l_pErr = NULL;
do
{
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -1298,8 +1319,8 @@ public:
void testDeConfigEX1BadCore()
{
TS_TRACE(INFO_MRK "testDeConfigEX1BadCore: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -1308,13 +1329,15 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testDeConfigEX1BadCore: Skipped");
#else
+ HWAS_INF("testDeConfigEX1BadCore: Started");
errlHndl_t l_pErr = NULL;
do
{
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -1412,8 +1435,8 @@ public:
void testDeConfigEQ2BadEXs()
{
TS_TRACE(INFO_MRK "testDeConfigEQ2BadEXs: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -1422,7 +1445,9 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testDeConfigEQ2BadEXs: Skipped");
#else
+ HWAS_INF("testDeConfigEQ2BadEXs: Started");
errlHndl_t l_pErr = NULL;
@@ -1528,8 +1553,8 @@ public:
void testDeConfigEQ1BadEX()
{
TS_TRACE(INFO_MRK "testDeConfigEQ1BadEX: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -1538,7 +1563,9 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testDeConfigEQ1BadEX: Skipped");
#else
+ HWAS_INF("testDeConfigEQ1BadEX: Started");
errlHndl_t l_pErr = NULL;
do
@@ -1644,8 +1671,8 @@ public:
void testDeConfigEXInFusedCoreMode()
{
TS_TRACE(INFO_MRK "testDeConfigEXInFusedCoreMode: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -1654,13 +1681,15 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testDeConfigEXInFusedCoreMode: Skipped");
#else
+ HWAS_INF("testDeConfigEXInFusedCoreMode: Started");
errlHndl_t l_pErr = NULL;
do
{
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -1771,8 +1800,8 @@ public:
void testDefDeconfig1()
{
TS_TRACE(INFO_MRK "testDefDeconfig1: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -1780,14 +1809,16 @@ public:
// tests are left in the code so that a developer can enable them
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
+ HWAS_INF("testDefDeconfig1: Skipped");
#else
+ HWAS_INF("testDefDeconfig1: Started");
errlHndl_t l_pErr = NULL;
DeconfigGard::DeconfigureRecords_t l_records;
do
{
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -1825,27 +1856,12 @@ public:
// Get the original HWAS_STATE of the target
HwasState l_origState = l_pTarget->getAttr<ATTR_HWAS_STATE>();
- // get the current status/counter
- uint32_t l_origStatus = theDeconfigGard().getDeconfigureStatus();
-
// create a deconfigure record
theDeconfigGard().
registerDeferredDeconfigure(*l_pTarget, 0x12);
- // confirm the counter changed
- if (l_origStatus == theDeconfigGard().getDeconfigureStatus())
- {
- TS_FAIL("testDefDeconfig1: unchanged deconfigureStatus");
- }
-
// call function to process deferred deconfigure records
- bool l_processed = processDeferredDeconfig();
-
- if (!l_processed)
- {
- TS_FAIL("testDefDeconfig1: processDeferredDeconfig found no work");
- break;
- }
+ theDeconfigGard().processDeferredDeconfig();
// Get the new HWAS_STATE of the target
HwasState l_state = l_pTarget->getAttr<ATTR_HWAS_STATE>();
@@ -1893,6 +1909,7 @@ public:
void testGard1()
{
TS_TRACE(INFO_MRK "testGard1: Started");
+ HWAS_INF("testGard1: Started");
errlHndl_t l_pErr = NULL;
DeconfigGard::GardRecords_t l_records;
@@ -1918,8 +1935,8 @@ public:
void testGard4()
{
TS_TRACE(INFO_MRK "testGard4: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -1928,14 +1945,16 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testGard4: Skipped");
#else
+ HWAS_INF("testGard4: Started");
errlHndl_t l_pErr = NULL;
DeconfigGard::GardRecords_t l_records;
do
{
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -2047,8 +2066,8 @@ public:
void testGard5()
{
TS_TRACE(INFO_MRK "testGard5: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -2057,14 +2076,16 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testGard5: Skipped");
#else
+ HWAS_INF("testGard5: Started");
errlHndl_t l_pErr = NULL;
DeconfigGard::GardRecords_t l_records;
do
{
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -2180,8 +2201,8 @@ public:
void testGard6()
{
TS_TRACE(INFO_MRK "testGard6: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -2190,14 +2211,16 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testGard6: Skipped");
#else
+ HWAS_INF("testGard6: Started");
errlHndl_t l_pErr = NULL;
DeconfigGard::GardRecords_t l_records;
do
{
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -2321,8 +2344,8 @@ public:
void testGard7()
{
TS_TRACE(INFO_MRK "testGard7: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -2331,14 +2354,16 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testGard7: Skipped");
#else
+ HWAS_INF("testGard7: Started");
errlHndl_t l_pErr = NULL;
DeconfigGard::GardRecords_t l_records;
do
{
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -2430,8 +2455,8 @@ public:
void testGard8()
{
TS_TRACE(INFO_MRK "testGard8: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -2440,7 +2465,10 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testGard8: Skipped");
#else
+ HWAS_INF("testGard8: Started");
+
errlHndl_t l_pErr = NULL;
DeconfigGard::GardRecords_t l_records;
@@ -2460,7 +2488,7 @@ public:
l_records.size());
break;
}
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -2486,7 +2514,7 @@ public:
// create GARD record, call 'doGard' step and confirm target is
// deconfigured
l_pErr = theDeconfigGard().
- platCreateGardRecord(l_target, 0x12, GARD_User_Manual);
+ platCreateGardRecord(l_target, 0x12, GARD_Void);
if (l_pErr)
{
TS_FAIL("testGard8: Error from platCreateGardRecord");
@@ -2568,13 +2596,13 @@ public:
}
/**
- * @brief Test CDM modes to restrict createing GARD records
+ * @brief Test CDM modes to restrict creating GARD records
*/
void testGard9()
{
TS_TRACE(INFO_MRK "testGard9: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -2583,14 +2611,16 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testGard9: Skipped");
#else
+ HWAS_INF("testGard9: Started");
errlHndl_t l_pErr = NULL;
DeconfigGard::GardRecords_t l_records;
do
{
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -2710,8 +2740,8 @@ public:
void testGard10()
{
TS_TRACE(INFO_MRK "testGard10: Started");
-#if 1
- // these tests deconfigure and gard targets. and even tho they
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
// restore their state after the tests, since the cxxtests are
// all run in parallel, during the time that a target is non-
// functional due to this test, another test may be running that
@@ -2720,7 +2750,10 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testGard10: Skipped");
#else
+ HWAS_INF("testGard10: Started");
+
errlHndl_t l_pErr = NULL;
DeconfigGard::GardRecords_t l_records;
@@ -2741,7 +2774,7 @@ public:
break;
}
- // find a ex unit that we can play with
+ // find an ex unit that we can play with
Target * pSys;
targetService().getTopLevelTarget(pSys);
@@ -2895,6 +2928,208 @@ public:
#endif
}
+ /**
+ * @brief Test create GARD record, call collect GARD to confirm targets
+ * are deconfigured, set changed bit ala HCDB, reprocess GARD to
+ * confirm GARD record is deleted.
+ */
+ void testGard11()
+ {
+ TS_TRACE(INFO_MRK "testGard11: Started");
+#if DISABLE_EX_UNIT_TESTS
+ // these tests deconfigure and gard targets. and even though they
+ // restore their state after the tests, since the cxxtests are
+ // all run in parallel, during the time that a target is non-
+ // functional due to this test, another test may be running that
+ // might be adversly affected.
+ // tests are left in the code so that a developer can enable them
+ // to test these specific functions - just keep in mind that there
+ // could be side effects in other cxxtests.
+ TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testGard11: Skipped");
+#else
+ HWAS_INF("testGard11: Started");
+
+ errlHndl_t l_pErr = NULL;
+ DeconfigGard::GardRecords_t l_records;
+
+ do
+ {
+ l_pErr = theDeconfigGard().getGardRecords(NULL, l_records);
+ if (l_pErr)
+ {
+ errlCommit(l_pErr,HWAS_COMP_ID);
+ TS_FAIL("testGard11: Error from getGardRecords");
+ break;
+ }
+
+ if (l_records.size() > 0)
+ {
+ TS_FAIL("testGard11: already GARD records here. %d records",
+ l_records.size());
+ break;
+ }
+
+ // Go through all targets to ensure changed flags are cleared
+ for (TargetIterator t_iter = targetService().begin();
+ t_iter != targetService().end();
+ ++t_iter)
+ {
+ Target* l_pTarget = *t_iter;
+
+ // Clear bits in changed flags for the target
+ ATTR_HWAS_STATE_CHANGED_SUBSCRIPTION_MASK_type l_mask =
+ l_pTarget->
+ getAttr<ATTR_HWAS_STATE_CHANGED_SUBSCRIPTION_MASK>();
+ clear_hwas_changed_bit(l_pTarget,
+ static_cast<HWAS_CHANGED_BIT>(l_mask));
+ } // for
+
+ // find an ex unit that we can play with
+ Target * pSys;
+ targetService().getTopLevelTarget(pSys);
+
+ PredicateCTM predEx(CLASS_UNIT, TYPE_EX);
+ PredicateHwas predFunctional;
+ predFunctional.poweredOn(true).present(true).functional(true);
+ PredicatePostfixExpr checkExpr;
+ checkExpr.push(&predEx).push(&predFunctional).And();
+
+ TargetHandleList pExList;
+ targetService().getAssociated( pExList, pSys,
+ TargetService::CHILD, TargetService::ALL, &checkExpr );
+
+ if (pExList.empty())
+ {
+ TS_FAIL("testGard11: empty pExList");
+ break;
+ }
+
+ TargetHandle_t l_target = *pExList.begin();
+
+ // Save ATTR_BLOCK_SPEC_DECONFIG value
+ TARGETING::ATTR_BLOCK_SPEC_DECONFIG_type l_orig_block_spec_deconfig
+ = pSys->getAttr<ATTR_BLOCK_SPEC_DECONFIG>();
+
+ // Allow speculative deconfigs (clear ATTR_BLOCK_SPEC_DECONFIG)
+ HWAS_INF("testGard11: Allow speculative deconfigs");
+ pSys->setAttr<ATTR_BLOCK_SPEC_DECONFIG>(0);
+
+ // create GARD record, call 'doGard' step and confirm target is
+ // deconfigured
+ l_pErr = theDeconfigGard().
+ platCreateGardRecord(l_target, 0x12, GARD_Predictive);
+ if (l_pErr)
+ {
+ TS_FAIL("testGard11: Error from platCreateGardRecord");
+ break;
+ }
+
+ l_pErr = theDeconfigGard().getGardRecords(NULL, l_records);
+ if (l_pErr)
+ {
+ errlCommit(l_pErr,HWAS_COMP_ID);
+ TS_FAIL("testGard11: Error from getGardRecords");
+ break;
+ }
+ if (l_records.size() != 1)
+ {
+ TS_FAIL("testGard11: should be 1 record; instead %d records",
+ l_records.size());
+ break;
+ }
+
+ // Note that collectGard() makes various calls, including calls of
+ // clearGardRecordsForReplacedTargets() and
+ // deconfigureTargetsFromGardRecordsForIpl(i_pPredicate)
+ // which in turn calls clearBlockSpecDeconfigForReplacedTargets().
+ l_pErr = collectGard();
+ if (l_pErr)
+ {
+ TS_FAIL("testGard11: Error from collectGard");
+ break;
+ }
+
+ HwasState l_state = l_target->getAttr<ATTR_HWAS_STATE>();
+ if (l_state.functional)
+ {
+ TS_FAIL("testGard11: target still functional");
+ break;
+ }
+
+ // Block speculative deconfigs(set ATTR_BLOCK_SPEC_DECONFIG)
+ HWAS_INF("testGard11: Block speculative deconfigs");
+ pSys->setAttr<ATTR_BLOCK_SPEC_DECONFIG>(1);
+
+ // restore functional state
+ l_state.functional = true;
+ l_target->setAttr<ATTR_HWAS_STATE>(l_state);
+
+ // call collectGard and confirm Block speculative deconfigs stays
+ // set and target stays functional
+ l_pErr = collectGard();
+ if (l_pErr)
+ {
+ TS_FAIL("testGard11: Error from collectGard call 2");
+ break;
+ }
+
+ TARGETING::ATTR_BLOCK_SPEC_DECONFIG_type l_block_spec_deconfig
+ = pSys->getAttr<ATTR_BLOCK_SPEC_DECONFIG>();
+ if(l_block_spec_deconfig == 0)
+ {
+ TS_FAIL("testGard11: block spec deconfig cleared");
+ break;
+ }
+
+ l_state = l_target->getAttr<ATTR_HWAS_STATE>();
+ if (!l_state.functional)
+ {
+ TS_FAIL("testGard11: target NOT functional");
+ break;
+ }
+
+ // emulate HCDB - target changed, call collectGard and confirm Block
+ // speculative deconfigs is cleared and target is deconfigured
+ update_hwas_changed_mask(l_target);
+ l_pErr = collectGard();
+ if (l_pErr)
+ {
+ TS_FAIL("testGard11: Error from collectGard call 2");
+ break;
+ }
+
+ l_block_spec_deconfig = pSys->getAttr<ATTR_BLOCK_SPEC_DECONFIG>();
+ if(l_block_spec_deconfig != 0)
+ {
+ TS_FAIL("testGard11: block spec deconfig NOT cleared, is %d",
+ l_block_spec_deconfig);
+ break;
+ }
+
+ l_state = l_target->getAttr<ATTR_HWAS_STATE>();
+ if (!l_state.functional)
+ {
+ TS_FAIL("testGard11: target NOT functional");
+ break;
+ }
+
+ // Restore
+ l_state.functional = true;
+ l_target->setAttr<ATTR_HWAS_STATE>(l_state);
+ pSys->setAttr<ATTR_BLOCK_SPEC_DECONFIG>(l_orig_block_spec_deconfig);
+
+ TS_TRACE(INFO_MRK "testGard11: Success");
+ }
+ while (0);
+
+ if (l_pErr)
+ {
+ errlCommit(l_pErr,HWAS_COMP_ID);
+ }
+#endif
+ }
+
/**
* @brief Test Deconfigure Associated Proc1
@@ -2902,6 +3137,7 @@ public:
void testDeconfigureAssocProc1()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc1: Started");
+ HWAS_INF("testDeconfigureAssocProc1: Started");
// This test populates structs which contain information
// regarding a processor and its child chiplet's linkage
@@ -3010,6 +3246,7 @@ public:
void testDeconfigureAssocProc2()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc2: Started");
+ HWAS_INF("testDeconfigureAssocProc2: Started");
// This test populates structs which contain information
// regarding a processor and its child chiplet's linkage
@@ -3115,6 +3352,7 @@ public:
void testDeconfigureAssocProc3()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc3: Started");
+ HWAS_INF("testDeconfigureAssocProc3: Started");
// This test populates structs which contain information
// regarding a processor and its child chiplet's linkage
@@ -3284,6 +3522,7 @@ public:
void testDeconfigureAssocProc4()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc4: Started");
+ HWAS_INF("testDeconfigureAssocProc4: Started");
// This test populates structs which contain information
// regarding a processor and its child chiplet's linkage
@@ -3455,6 +3694,7 @@ public:
void testDeconfigureAssocProc5()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc5: Started");
+ HWAS_INF("testDeconfigureAssocProc5: Started");
// This test populates structs which contain information
// regarding a processor and its child chiplet's linkage
@@ -3633,6 +3873,7 @@ public:
void testDeconfigureAssocProc6()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc6: Started");
+ HWAS_INF("testDeconfigureAssocProc6: Started");
// This test populates structs which contain information
// regarding a processor and its child chiplet's linkage
@@ -3738,7 +3979,7 @@ public:
void testDeconfigureAssocProc7()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc7: Started");
-#if 1
+#if DISABLE_UNIT_TESTS
// This test deconfigures proc2-xbus1 and proc3-xbus1 in a
// TULETA-2S4U system. Even though this test
// restores their states after the test, since the cxxtests are
@@ -3749,7 +3990,9 @@ public:
// to test these specific functions - just keep in mind that there
// could be side effects in other cxxtests.
TS_TRACE( " - SKIPPING -- other tests could be adversly affected");
+ HWAS_INF("testDeconfigureAssocProc7: Skipped");
#else
+ HWAS_INF("testDeconfigureAssocProc7: Started");
errlHndl_t l_pErr = NULL;
@@ -3885,6 +4128,7 @@ public:
void testDeconfigureAssocProc8()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc8: Started");
+ HWAS_INF("testDeconfigureAssocProc8: Started");
// This test populates structs which contain information
// regarding a processor and its child chiplet's linkage
@@ -3992,6 +4236,7 @@ public:
void testDeconfigureAssocProc9()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc9: Started");
+ HWAS_INF("testDeconfigureAssocProc9: Started");
// This test populates structs which contain information
// regarding a processor and its child chiplet's linkage
@@ -4088,6 +4333,7 @@ public:
void testDeconfigureAssocProc10()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc10: Started");
+ HWAS_INF("testDeconfigureAssocProc10: Started");
// This test populates structs which contain information
// regarding a processor and its child chiplet's linkage
@@ -4190,6 +4436,7 @@ public:
void testDeconfigureAssocProc11()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc11: Started");
+ HWAS_INF("testDeconfigureAssocProc11: Started");
// This test populates structs which contain information
// regarding a processor and its child chiplet's linkage
@@ -4292,6 +4539,7 @@ public:
void testDeconfigureAssocProc12()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc12: Started");
+ HWAS_INF("testDeconfigureAssocProc12: Started");
// This test populates structs which contain information
// regarding a processor and its child chiplet's linkage
@@ -4394,6 +4642,7 @@ public:
void testDeconfigureAssocProc13()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc13: Started");
+ HWAS_INF("testDeconfigureAssocProc13: Started");
// This test populates structs which contain information
// regarding a processor and its child chiplet's linkage
@@ -4499,6 +4748,8 @@ public:
void testdeconfigPresentByAssoc1()
{
TS_TRACE(INFO_MRK "testDeconfigureAssocProc1: Started");
+ HWAS_INF("testdeconfigPresentByAssoc1: Started");
+
// This tests the scenario where there is 1 mc, mi, dmi, membuff, mba and dimm
// This is done to ensure that the algorithm works on each edge case
@@ -4606,6 +4857,8 @@ public:
void testdeconfigPresentByAssoc2()
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc2: Started");
+ HWAS_INF("testdeconfigPresentByAssoc2: Started");
+
// This test the scenario where MC Group 0 does not have a membuf
// MC Group 1 is fully populated
@@ -4707,6 +4960,8 @@ public:
void testdeconfigPresentByAssoc3()
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc3: Started");
+ HWAS_INF("testdeconfigPresentByAssoc3: Started");
+
// This test the scenario where MEMBUF Group 1 has no DMI and then
// DIMM Group 1 has no MEMBUF because MEMBUF 1 will be marked for
// deconfigure
@@ -4834,6 +5089,8 @@ public:
void testdeconfigPresentByAssoc4()
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc4: Started");
+ HWAS_INF("testdeconfigPresentByAssoc4: Started");
+
// This test the scenario where MEMBUF Group 0 has no MBAs causing
// MC Group 0 to also be deconfigured.
@@ -4910,6 +5167,8 @@ public:
void testdeconfigPresentByAssoc5()
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc5: Started");
+ HWAS_INF("testdeconfigPresentByAssoc5: Started");
+
// This test the scenario where MEMBUF Group 0 and MBA Group 0 having
// no DMI. This tests the DMIINDEX edge case because one never existed
@@ -4973,6 +5232,8 @@ public:
void testdeconfigPresentByAssoc6()
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc6: Started");
+ HWAS_INF("testdeconfigPresentByAssoc6: Started");
+
// This test the scenario where MBA Group 0 and DIMM Group 0 having
// no MEMBUF. This tests the MEMBUFIndex edge case because one never existed
@@ -5038,6 +5299,8 @@ public:
void testdeconfigPresentByAssoc7()
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc7: Started");
+ HWAS_INF("testdeconfigPresentByAssoc7: Started");
+
// This test the scenario where MBA Group 1 has no DIMMS
// User-defined number of targets
@@ -5141,6 +5404,8 @@ public:
void testdeconfigPresentByAssoc8()
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc8: Started");
+ HWAS_INF("testdeconfigPresentByAssoc8: Started");
+
// This test the scenario where each type is missing it's child
// and the cascade
@@ -5304,6 +5569,8 @@ public:
void testdeconfigPresentByAssoc9()
{
TS_TRACE(INFO_MRK "testdeconfigPresentByAssoc9: Started");
+ HWAS_INF("testdeconfigPresentByAssoc9: Started");
+
// This test the scenario where each type is missing it's parent
// and the cascade
@@ -5410,4 +5677,9 @@ public:
};
+#undef DISABLE_UNIT_TESTS
+#undef DISABLE_MBA_UNIT_TESTS
+#undef DISABLE_MEM_UNIT_TESTS
+#undef DISABLE_EX_UNIT_TESTS
+
#endif
diff --git a/src/usr/hwas/test/hwasSysAvailSvcTest.H b/src/usr/hwas/test/hwasSysAvailSvcTest.H
index a76603431..7bd889cc5 100644
--- a/src/usr/hwas/test/hwasSysAvailSvcTest.H
+++ b/src/usr/hwas/test/hwasSysAvailSvcTest.H
@@ -5,7 +5,9 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* COPYRIGHT International Business Machines Corp. 2013,2014 */
+/* Contributors Listed Below - COPYRIGHT 2013,2018 */
+/* [+] International Business Machines Corp. */
+/* */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
@@ -66,7 +68,7 @@ public:
* will be called first with SET_NONFUNC to fill in i_origStates.
* @param i_state - SET_NONFUNC or RESTORE
* @param i_targetHList - TargetHandleList of targets to work on
- * @param i_origStatew - array of HWasStates to store the original
+ * @param i_origStates - array of HWasStates to store the original
* state in.
* @param l_keep - number of states to keep (i.e. leave alone)
* when running SET_NONFUNC
@@ -109,9 +111,11 @@ public:
}
else
{
+ // Get fake HWAS state setting
+ l_fakeState = l_target->getAttr<TARGETING::ATTR_HWAS_STATE>();
+
// Restore to original state.
l_target->setAttr<TARGETING::ATTR_HWAS_STATE>(i_origStates[i]);
-
}
} // endfor
}
@@ -128,9 +132,12 @@ public:
// may cause other tests to fail.
// Do not leave this test enabled for normal operations.
TS_TRACE(INFO_MRK "SKIPPING: other tests could be affected.");
+ HWAS_INF("testCheckMinimumHardwareCore: Skipped");
#else
+
errlHndl_t l_errl = NULL;
TS_TRACE(INFO_MRK "testCheckMinimumHardwareCore");
+ HWAS_INF("testCheckMinimumHardwareCore: Started");
TargetHandleList l_cores;
getAllChiplets(l_cores, TYPE_CORE, true );
@@ -141,12 +148,36 @@ public:
TS_TRACE( "testCheckMinimumHardwareCore: set cores nonfunctional");
setTargetStates( SET_NONFUNC, l_cores, &l_origStates[0] );
+ // Save original Block Spec Deconfig value
+ Target * pSys;
+ targetService().getTopLevelTarget(pSys);
+ TARGETING::ATTR_BLOCK_SPEC_DECONFIG_type l_orig_block_spec_deconfig =
+ pSys->getAttr<ATTR_BLOCK_SPEC_DECONFIG>();
+
+ // If original attribute value is non-zero, clear it
+ if(l_orig_block_spec_deconfig != 0)
+ {
+ // Clear attribute to test that checkMinimumHardware() sets it
+ pSys->setAttr<ATTR_BLOCK_SPEC_DECONFIG>(0);
+ }
+
TS_TRACE( "testCheckMinimumHardwareCore: check for minimum hardware" );
l_errl = HWAS::checkMinimumHardware();
if ( l_errl )
{
- // got an errorlog, no cores
- TS_TRACE( "testCheckMinimumHardwareCore: PASSED");
+ TARGETING::ATTR_BLOCK_SPEC_DECONFIG_type l_block_spec_deconfig =
+ pSys->getAttr<ATTR_BLOCK_SPEC_DECONFIG>();
+ if(l_block_spec_deconfig == 0)
+ {
+ TS_FAIL("testCheckMinimumHardwareCore: Expected non-zero value "
+ "for ATTR_BLOCK_SPEC_DECONFIG");
+ }
+ else
+ {
+ // got an errorlog, no cores
+ TS_TRACE( "testCheckMinimumHardwareCore: PASSED");
+ }
+ // Commit the errorlog.
errlCommit( l_errl, HWAS_COMP_ID );
}
else
@@ -157,6 +188,7 @@ public:
TS_TRACE( "testCheckMinimumHardwareCore: restore original states");
setTargetStates( RESTORE, l_cores, &(l_origStates[0]) );
+ pSys->setAttr<ATTR_BLOCK_SPEC_DECONFIG>(l_orig_block_spec_deconfig);
#endif
}
@@ -173,9 +205,12 @@ public:
// may cause other tests to fail.
// Do not leave this test enabled for normal operations.
TS_TRACE(INFO_MRK "SKIPPING: other tests could be affected.");
+ HWAS_INF("testCheckMinimumHardwareDimm: Skipped");
#else
+
errlHndl_t l_errl = NULL;
TS_TRACE(INFO_MRK "testCheckMinimumHardwareDimm");
+ HWAS_INF("testCheckMinimumHardwareDimm: Started");
// check for functional dimms
TargetHandleList l_dimms;
@@ -187,12 +222,36 @@ public:
setTargetStates( SET_NONFUNC, l_dimms, &(l_origStates[0]) );
+ // Save original Block Spec Deconfig value
+ Target * pSys;
+ targetService().getTopLevelTarget(pSys);
+ TARGETING::ATTR_BLOCK_SPEC_DECONFIG_type l_orig_block_spec_deconfig =
+ pSys->getAttr<ATTR_BLOCK_SPEC_DECONFIG>();
+
+ // If original attribute value is non-zero, clear it
+ if(l_orig_block_spec_deconfig != 0)
+ {
+ // Clear attribute to test that checkMinimumHardware() sets it
+ pSys->setAttr<ATTR_BLOCK_SPEC_DECONFIG>(0);
+ }
+
TS_TRACE( "testCheckMinimumHardwareDimm: check for minimum hardware" );
l_errl = HWAS::checkMinimumHardware();
if ( l_errl )
{
- // got an errorlog, no dimms
- TS_TRACE( "testCheckMinimumHardwareDimm: PASSED");
+ TARGETING::ATTR_BLOCK_SPEC_DECONFIG_type l_block_spec_deconfig
+ = pSys->getAttr<ATTR_BLOCK_SPEC_DECONFIG>();
+ if(l_block_spec_deconfig == 0)
+ {
+ TS_FAIL("testCheckMinimumHardwareDimm: Expected non-zero value "
+ "for ATTR_BLOCK_SPEC_DECONFIG");
+ }
+ else
+ {
+ // got an errorlog, no dimms
+ TS_TRACE( "testCheckMinimumHardwareDimm: PASSED");
+ }
+ // Commit the errorlog.
errlCommit( l_errl, HWAS_COMP_ID );
}
else
@@ -202,6 +261,7 @@ public:
}
setTargetStates( RESTORE, l_dimms, &(l_origStates[0]) );
+ pSys->setAttr<ATTR_BLOCK_SPEC_DECONFIG>(l_orig_block_spec_deconfig);
#endif
}
@@ -220,9 +280,12 @@ public:
// may cause other tests to fail.
// Do not leave this test enabled for normal operations.
TS_TRACE(INFO_MRK "SKIPPING: other tests could be affected.");
+ HWAS_INF("testCheckMinimumHardwareBoth: Skipped");
#else
+
errlHndl_t l_errl = NULL;
TS_TRACE(INFO_MRK "testCheckMinimumHardwareBoth");
+ HWAS_INF("testCheckMinimumHardwareBoth: Started");
// set all cores nonfunctional
TargetHandleList l_cores;
@@ -242,13 +305,37 @@ public:
TS_TRACE( "testCheckMinimumHardwareBoth: set dimms nonfunctional");
setTargetStates( SET_NONFUNC, l_dimms, &(l_origDimmStates[0]) );
+ // Save original Block Spec Deconfig value
+ Target * pSys;
+ targetService().getTopLevelTarget(pSys);
+ TARGETING::ATTR_BLOCK_SPEC_DECONFIG_type l_orig_block_spec_deconfig =
+ pSys->getAttr<ATTR_BLOCK_SPEC_DECONFIG>();
+
+ // If original attribute value is non-zero, clear it
+ if(l_orig_block_spec_deconfig != 0)
+ {
+ // Clear attribute to test that checkMinimumHardware() sets it
+ pSys->setAttr<ATTR_BLOCK_SPEC_DECONFIG>(0);
+ }
+
TS_TRACE( "testCheckMinimumHardwareBoth: check for minimum hardware" );
l_errl = HWAS::checkMinimumHardware();
if ( l_errl )
{
- // got an errorlog, this is good. Commit the errorlog.
- // There should be 2 errorlogs with a common plid.
- TS_TRACE( "testCheckMinimumHardwareBoth: PASSED");
+ TARGETING::ATTR_BLOCK_SPEC_DECONFIG_type l_block_spec_deconfig
+ = pSys->getAttr<ATTR_BLOCK_SPEC_DECONFIG>();
+ if(l_block_spec_deconfig == 0)
+ {
+ TS_FAIL("testCheckMinimumHardwareBoth: Expected non-zero value "
+ "for ATTR_BLOCK_SPEC_DECONFIG");
+ }
+ else
+ {
+ // got an errorlog, this is good.
+ // There should be 2 errorlogs with a common plid.
+ TS_TRACE( "testCheckMinimumHardwareBoth: PASSED");
+ }
+ // Commit the errorlog.
errlCommit( l_errl, HWAS_COMP_ID );
}
else
@@ -260,6 +347,7 @@ public:
// restore everything to normal.
setTargetStates( RESTORE, l_cores, &(l_origCoreStates[0]) );
setTargetStates( RESTORE, l_dimms, &(l_origDimmStates[0]) );
+ pSys->setAttr<ATTR_BLOCK_SPEC_DECONFIG>(l_orig_block_spec_deconfig);
#endif
}
@@ -278,9 +366,12 @@ public:
// may cause other tests to fail.
// Do not leave this test enabled for normal operations.
TS_TRACE(INFO_MRK "SKIPPING: other tests could be affected.");
+ HWAS_INF("testCheckMinimumHardwareOneDimm: Skipped");
#else
+
errlHndl_t l_errl = NULL;
TS_TRACE(INFO_MRK "testCheckMinimumHardwareOneDimm");
+ HWAS_INF("testCheckMinimumHardwareOneDimm: Started");
// check for functional dimms
TargetHandleList l_dimms;
@@ -292,6 +383,19 @@ public:
setTargetStates( SET_NONFUNC, l_dimms, &(l_origStates[0]), 1 );
+ // Save original Block Spec Deconfig value
+ Target * pSys;
+ targetService().getTopLevelTarget(pSys);
+ TARGETING::ATTR_BLOCK_SPEC_DECONFIG_type l_orig_block_spec_deconfig =
+ pSys->getAttr<ATTR_BLOCK_SPEC_DECONFIG>();
+
+ // If original attribute value is non-zero, clear it
+ if(l_orig_block_spec_deconfig != 0)
+ {
+ // Clear attribute, test that checkMinimumHardware() does NOT set it
+ pSys->setAttr<ATTR_BLOCK_SPEC_DECONFIG>(0);
+ }
+
TS_TRACE( "testCheckMinimumHardwareOneDimm: "
"check for minimum hardware" );
l_errl = HWAS::checkMinimumHardware();
@@ -303,15 +407,29 @@ public:
}
else
{
- // No errorlog, this is good.
- TS_TRACE( "testCheckMinimumHardwareOneDimm: PASSED");
+ TARGETING::ATTR_BLOCK_SPEC_DECONFIG_type l_block_spec_deconfig
+ = pSys->getAttr<ATTR_BLOCK_SPEC_DECONFIG>();
+ if(l_block_spec_deconfig != 0)
+ {
+ TS_FAIL("testCheckMinimumHardwareOneDimm: Expected zero value "
+ "for ATTR_BLOCK_SPEC_DECONFIG, not %d",
+ l_block_spec_deconfig);
+ }
+ else
+ {
+ // No errorlog, this is good.
+ TS_TRACE( "testCheckMinimumHardwareOneDimm: PASSED");
+ }
}
setTargetStates( RESTORE, l_dimms, &(l_origStates[0]), 1 );
+ pSys->setAttr<ATTR_BLOCK_SPEC_DECONFIG>(l_orig_block_spec_deconfig);
#endif
}
}; // end class
+#undef DISABLE_UNIT_TESTS
+
#endif
diff --git a/src/usr/targeting/common/predicates/predicatehwaschanged.C b/src/usr/targeting/common/predicates/predicatehwaschanged.C
index 03e83ff2c..f694a4f85 100644
--- a/src/usr/targeting/common/predicates/predicatehwaschanged.C
+++ b/src/usr/targeting/common/predicates/predicatehwaschanged.C
@@ -5,7 +5,9 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* COPYRIGHT International Business Machines Corp. 2013,2014 */
+/* Contributors Listed Below - COPYRIGHT 2013,2018 */
+/* [+] International Business Machines Corp. */
+/* */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
@@ -98,7 +100,8 @@ bool PredicateHwasChanged::operator()(
ATTR_HWAS_STATE_CHANGED_SUBSCRIPTION_MASK_type subscriptionMask =
i_pTarget->getAttr<ATTR_HWAS_STATE_CHANGED_SUBSCRIPTION_MASK>();
- return ((actual.rawValue & (iv_valid.rawValue & subscriptionMask)) ==
+ return ((subscriptionMask != 0) &&
+ (actual.rawValue & (iv_valid.rawValue & subscriptionMask)) ==
(iv_desired.rawValue & (iv_valid.rawValue & subscriptionMask)));
#undef TARG_FUNC
diff --git a/src/usr/targeting/common/test/testcommontargeting.H b/src/usr/targeting/common/test/testcommontargeting.H
index d766cd8b1..ff30566d5 100644
--- a/src/usr/targeting/common/test/testcommontargeting.H
+++ b/src/usr/targeting/common/test/testcommontargeting.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2012,2016 */
+/* Contributors Listed Below - COPYRIGHT 2012,2018 */
/* [+] Google Inc. */
/* [+] International Business Machines Corp. */
/* */
@@ -672,6 +672,7 @@ class CommonTargetingTestSuite: public CxxTest::TestSuite
void testPredicateHwasChanged()
{
TARG_TS_TRACE(ENTER_MRK "testPredicateHwasChanged" );
+ TARG_INF(ENTER_MRK "testPredicateHwasChanged" );
do {
diff --git a/src/usr/targeting/common/xmltohb/attribute_types.xml b/src/usr/targeting/common/xmltohb/attribute_types.xml
index ab456ceaf..0c37f955d 100755
--- a/src/usr/targeting/common/xmltohb/attribute_types.xml
+++ b/src/usr/targeting/common/xmltohb/attribute_types.xml
@@ -496,6 +496,25 @@
</attribute>
<attribute>
+ <description>Block speculative deconfig in reconfig loop.
+ Flags when speculative deconfigurations should not be done for
+ predictive gard records on a reconfig loop IPL due to out of
+ hardware condition on prior IPL.
+ 0 = Allow speculative deconfiguration
+ 1 = Block speculative deconfiguration
+ </description>
+ <id>BLOCK_SPEC_DECONFIG</id>
+ <persistency>non-volatile</persistency>
+ <readable></readable>
+ <simpleType>
+ <uint8_t>
+ <default>0x0</default>
+ </uint8_t>
+ </simpleType>
+ <writeable></writeable>
+ </attribute>
+
+ <attribute>
<complexType>
<description>Numeric POD type test structure</description>
<field>
@@ -5092,6 +5111,10 @@
<name>HOSTSVC_HBEL</name>
<value>0x00000008</value>
</enumerator>
+ <enumerator>
+ <name>RESRC_RECOV</name>
+ <value>0x00000010</value>
+ </enumerator>
<id>HWAS_CHANGED_BIT</id>
</enumerationType>
diff --git a/src/usr/targeting/common/xmltohb/simics_CUMULUS.system.xml b/src/usr/targeting/common/xmltohb/simics_CUMULUS.system.xml
index 6912dd62e..887d1d0c9 100644
--- a/src/usr/targeting/common/xmltohb/simics_CUMULUS.system.xml
+++ b/src/usr/targeting/common/xmltohb/simics_CUMULUS.system.xml
@@ -678,7 +678,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000009</default>
+ <default>0x00000019</default>
</attribute>
@@ -959,7 +959,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1341,7 +1341,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1424,7 +1424,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1507,7 +1507,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1590,7 +1590,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1673,7 +1673,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1756,7 +1756,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1839,7 +1839,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1922,7 +1922,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2005,7 +2005,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2088,7 +2088,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2171,7 +2171,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2254,7 +2254,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2337,7 +2337,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2420,7 +2420,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2503,7 +2503,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2586,7 +2586,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2669,7 +2669,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2752,7 +2752,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2835,7 +2835,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2918,7 +2918,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -3001,7 +3001,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -3084,7 +3084,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -3167,7 +3167,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -3250,7 +3250,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -3984,7 +3984,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -4065,7 +4065,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -4144,7 +4144,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -4223,7 +4223,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -4302,7 +4302,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -4381,7 +4381,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -4460,7 +4460,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -4538,7 +4538,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -4616,7 +4616,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -4694,7 +4694,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -4772,7 +4772,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -4850,7 +4850,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -4928,7 +4928,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -5006,7 +5006,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -5084,7 +5084,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -5162,7 +5162,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -5240,7 +5240,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -5318,7 +5318,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -5517,7 +5517,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000003</default>
+ <default>0x00000013</default>
</attribute>
<attribute>
<id>I2C_BUS_SPEED_ARRAY</id>
@@ -5908,7 +5908,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000003</default>
+ <default>0x00000013</default>
</attribute>
<attribute>
<id>I2C_BUS_SPEED_ARRAY</id>
@@ -6928,7 +6928,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7011,7 +7011,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7094,7 +7094,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7177,7 +7177,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7260,7 +7260,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7343,7 +7343,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7426,7 +7426,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7509,7 +7509,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7592,7 +7592,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7675,7 +7675,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7758,7 +7758,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7841,7 +7841,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -11319,7 +11319,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -11410,7 +11410,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -11501,7 +11501,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -11592,7 +11592,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -11683,7 +11683,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -11774,7 +11774,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -13405,7 +13405,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -13499,7 +13499,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -13593,7 +13593,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
diff --git a/src/usr/targeting/common/xmltohb/simics_CUMULUS_CDIMM.system.xml b/src/usr/targeting/common/xmltohb/simics_CUMULUS_CDIMM.system.xml
index 1d050fe72..934f83e2b 100644
--- a/src/usr/targeting/common/xmltohb/simics_CUMULUS_CDIMM.system.xml
+++ b/src/usr/targeting/common/xmltohb/simics_CUMULUS_CDIMM.system.xml
@@ -691,7 +691,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000009</default>
+ <default>0x00000019</default>
</attribute>
@@ -972,7 +972,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1354,7 +1354,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1437,7 +1437,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1520,7 +1520,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1603,7 +1603,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1686,7 +1686,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1769,7 +1769,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1852,7 +1852,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -1935,7 +1935,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2018,7 +2018,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2101,7 +2101,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2184,7 +2184,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2267,7 +2267,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2350,7 +2350,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2433,7 +2433,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2516,7 +2516,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2599,7 +2599,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2682,7 +2682,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2765,7 +2765,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2848,7 +2848,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -2931,7 +2931,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -3014,7 +3014,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -3097,7 +3097,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -3180,7 +3180,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -3263,7 +3263,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -3979,7 +3979,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -4060,7 +4060,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -4139,7 +4139,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -4218,7 +4218,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -4297,7 +4297,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -4376,7 +4376,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -4455,7 +4455,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -4533,7 +4533,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -4611,7 +4611,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -4689,7 +4689,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -4767,7 +4767,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -4845,7 +4845,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -4923,7 +4923,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -5001,7 +5001,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -5079,7 +5079,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -5157,7 +5157,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -5235,7 +5235,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -5313,7 +5313,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
<attribute>
@@ -5510,7 +5510,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000003</default>
+ <default>0x00000013</default>
</attribute>
<attribute>
<id>I2C_BUS_SPEED_ARRAY</id>
@@ -5901,7 +5901,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000003</default>
+ <default>0x00000013</default>
</attribute>
<attribute>
<id>I2C_BUS_SPEED_ARRAY</id>
@@ -6921,7 +6921,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7004,7 +7004,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7087,7 +7087,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7170,7 +7170,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7253,7 +7253,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7336,7 +7336,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7419,7 +7419,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7502,7 +7502,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7585,7 +7585,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7668,7 +7668,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7751,7 +7751,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -7834,7 +7834,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -11312,7 +11312,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -11403,7 +11403,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -11494,7 +11494,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -11585,7 +11585,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -11676,7 +11676,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -11767,7 +11767,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -13398,7 +13398,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -13488,7 +13488,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
@@ -13578,7 +13578,7 @@
<attribute>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000001</default>
+ <default>0x00000011</default>
</attribute>
diff --git a/src/usr/targeting/common/xmltohb/target_types.xml b/src/usr/targeting/common/xmltohb/target_types.xml
index 36497b876..b03c87409 100644
--- a/src/usr/targeting/common/xmltohb/target_types.xml
+++ b/src/usr/targeting/common/xmltohb/target_types.xml
@@ -166,7 +166,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000001</default>
+ <default>0x00000011</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -359,7 +359,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000003</default>
+ <default>0x00000013</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -497,7 +497,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000003</default>
+ <default>0x00000013</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -724,6 +724,9 @@
<id>RCD_PARITY_RECONFIG_LOOPS_ALLOWED</id>
</attribute>
<attribute>
+ <id>BLOCK_SPEC_DECONFIG</id>
+ </attribute>
+ <attribute>
<id>MAX_PROC_CHIPS_PER_NODE</id>
</attribute>
<attribute>
@@ -995,7 +998,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000009</default>
+ <default>0x00000019</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -1265,7 +1268,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000001</default>
+ <default>0x00000011</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -1292,7 +1295,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000001</default>
+ <default>0x00000011</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -1315,7 +1318,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000001</default>
+ <default>0x00000011</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -1343,7 +1346,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000003</default>
+ <default>0x00000013</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -1391,7 +1394,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000003</default>
+ <default>0x00000013</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -1428,7 +1431,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000003</default>
+ <default>0x00000013</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -1500,7 +1503,7 @@
</attribute>
<attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
<attribute>
- <default>0x00000003</default>
+ <default>0x00000013</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute><id>PARENT_PERVASIVE</id></attribute>
@@ -1517,11 +1520,6 @@
<id>MODEL</id>
<default>CUMULUS</default>
</attribute>
- <attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
- <attribute>
- <default>0x00000003</default>
- <id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- </attribute>
</targetType>
<!-- MI
@@ -1539,7 +1537,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000003</default>
+ <default>0x00000013</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -1558,11 +1556,6 @@
<default>CUMULUS</default>
<id>MODEL</id>
</attribute>
- <attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
- <attribute>
- <default>0x00000003</default>
- <id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- </attribute>
</targetType>
<!-- DMI
@@ -1580,7 +1573,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000003</default>
+ <default>0x00000013</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -1599,11 +1592,6 @@
<default>CUMULUS</default>
<id>MODEL</id>
</attribute>
- <attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
- <attribute>
- <default>0x00000003</default>
- <id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- </attribute>
</targetType>
<!-- PEC corresponds to IOP. Use same PEC target for Nimbus and Cumulus
@@ -1648,7 +1636,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000001</default>
+ <default>0x00000011</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -1693,7 +1681,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000001</default>
+ <default>0x00000011</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -1758,7 +1746,7 @@
<id>CDM_DOMAIN</id>
</attribute>
<attribute>
- <default>0x00000001</default>
+ <default>0x00000011</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -1957,7 +1945,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000001</default>
+ <default>0x00000011</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -2009,7 +1997,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000001</default>
+ <default>0x00000011</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
@@ -2143,7 +2131,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute><id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000003</default>
+ <default>0x00000013</default>
</attribute>
</targetType>
@@ -2158,13 +2146,6 @@
<id>CDM_DOMAIN</id>
<default>MEM</default>
</attribute>
- <attribute>
- <default>1</default>
- <id>DECONFIG_GARDABLE</id>
- </attribute>
- <attribute><id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000003</default>
- </attribute>
</targetType>
<!-- Centaur MBA -->
@@ -2177,7 +2158,7 @@
</attribute>
<attribute><id>DECONFIG_GARDABLE</id><default>1</default></attribute>
<attribute><id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
- <default>0x00000003</default>
+ <default>0x00000013</default>
</attribute>
<attribute>
<id>CDM_DOMAIN</id>
@@ -2197,7 +2178,7 @@
<id>DECONFIG_GARDABLE</id>
</attribute>
<attribute>
- <default>0x00000001</default>
+ <default>0x00000011</default>
<id>HWAS_STATE_CHANGED_SUBSCRIPTION_MASK</id>
</attribute>
<attribute>
diff --git a/src/usr/util/runtime/rt_cmds.C b/src/usr/util/runtime/rt_cmds.C
index af49e71e9..e350e42dc 100644
--- a/src/usr/util/runtime/rt_cmds.C
+++ b/src/usr/util/runtime/rt_cmds.C
@@ -646,16 +646,21 @@ void cmd_putscom( char*& o_output,
* @param[in] i_word2 Userdata 3 & 4
* @param[in] i_callout HUID of target to callout (zero if none)
* @param[in] i_ffdcLength Additional ffdc data bytes to add to the error log
+ * @param[in] i_deconfig Indication if callout target should be deconfigured
+ * @param[in] i_gard Indication of type of failure for callout
*/
void cmd_errorlog( char*& o_output,
uint64_t i_word1,
uint64_t i_word2,
uint32_t i_callout,
- uint32_t i_ffdcLength )
+ uint32_t i_ffdcLength,
+ HWAS::DeconfigEnum i_deconfig,
+ HWAS::GARD_ErrorType i_gard )
{
- UTIL_FT( "cmd_errorlog> word1=%.8X%.8X, word2=%.8X%.8X, i_callout=%.8X ffdcLength=%ld",
+ UTIL_FT( "cmd_errorlog> word1=%.8X%.8X, word2=%.8X%.8X, i_callout=%.8X ffdcLength=%ld, deconfig=%.2X, gard=%.2X",
(uint32_t)(i_word1>>32), (uint32_t)i_word1,
- (uint32_t)(i_word2>>32), (uint32_t)i_word2, i_callout, i_ffdcLength );
+ (uint32_t)(i_word2>>32), (uint32_t)i_word2, i_callout,
+ i_ffdcLength, i_deconfig, i_gard );
o_output = new char[100];
errlHndl_t l_err = new ERRORLOG::ErrlEntry( ERRORLOG::ERRL_SEV_PREDICTIVE,
@@ -669,8 +674,8 @@ void cmd_errorlog( char*& o_output,
{
l_err->addHwCallout( l_targ,
HWAS::SRCI_PRIORITY_HIGH,
- HWAS::NO_DECONFIG,
- HWAS::GARD_NULL );
+ i_deconfig,
+ i_gard );
}
if (i_ffdcLength > 0)
@@ -1158,24 +1163,39 @@ int hbrtCommand( int argc,
}
else if( !strcmp( argv[0], "errorlog" ) )
{
- // errorlog <word1> <word2> <huid to callout>
- if( (argc == 3) || (argc == 4) || (argc == 5) )
+ // errorlog <word1> <word2> <huid to callout> <size> <deconfig> <gard>
+ if( (argc == 3) || (argc == 4) || (argc == 5) || (argc == 6) ||
+ (argc == 7) )
{
uint32_t l_huid = 0;
uint32_t l_ffdcLength = 0;
- if( argc == 4 )
+ HWAS::DeconfigEnum l_deconfig = HWAS::NO_DECONFIG;
+ HWAS::GARD_ErrorType l_gard = HWAS::GARD_NULL;
+ if( argc >= 4 )
{
l_huid = strtou64( argv[3], NULL, 16 );
}
- if (argc == 5)
+ if (argc >= 5)
{
l_ffdcLength = strtou64( argv[4], NULL, 16 );
}
+ if( argc >= 6 )
+ {
+ l_deconfig = static_cast<HWAS::DeconfigEnum>(
+ strtou64( argv[5], NULL, 16 ));
+ }
+ if( argc >= 7 )
+ {
+ l_gard = static_cast<HWAS::GARD_ErrorType>(
+ strtou64( argv[6], NULL, 16 ));
+ }
cmd_errorlog( *l_output,
strtou64( argv[1], NULL, 16 ),
strtou64( argv[2], NULL, 16 ),
l_huid,
- l_ffdcLength );
+ l_ffdcLength,
+ l_deconfig,
+ l_gard );
}
else
{
@@ -1249,7 +1269,7 @@ int hbrtCommand( int argc,
strcat( *l_output, l_tmpstr );
sprintf( l_tmpstr, "putscom <huid> <address> <data>\n" );
strcat( *l_output, l_tmpstr );
- sprintf( l_tmpstr, "errorlog <word1> <word2> [<huid to callout>] [size]\n" );
+ sprintf( l_tmpstr, "errorlog <word1> <word2> [<huid to callout>] [size] [deconfig] [gard]\n" );
strcat( *l_output, l_tmpstr );
sprintf( l_tmpstr, "sbemsg <chipid>\n" );
strcat( *l_output, l_tmpstr );
OpenPOWER on IntegriCloud