diff options
-rw-r--r-- | src/include/usr/hwas/common/deconfigGard.H | 10 | ||||
-rw-r--r-- | src/usr/hwas/common/deconfigGard.C | 283 | ||||
-rw-r--r-- | src/usr/hwas/common/hwas.C | 8 | ||||
-rw-r--r-- | src/usr/hwas/test/hwasGardTest.H | 452 | ||||
-rw-r--r-- | src/usr/hwas/test/hwasSysAvailSvcTest.H | 142 | ||||
-rw-r--r-- | src/usr/targeting/common/predicates/predicatehwaschanged.C | 7 | ||||
-rw-r--r-- | src/usr/targeting/common/test/testcommontargeting.H | 3 | ||||
-rwxr-xr-x | src/usr/targeting/common/xmltohb/attribute_types.xml | 23 | ||||
-rw-r--r-- | src/usr/targeting/common/xmltohb/simics_CUMULUS.system.xml | 134 | ||||
-rw-r--r-- | src/usr/targeting/common/xmltohb/simics_CUMULUS_CDIMM.system.xml | 134 | ||||
-rw-r--r-- | src/usr/targeting/common/xmltohb/target_types.xml | 67 | ||||
-rw-r--r-- | src/usr/util/runtime/rt_cmds.C | 42 |
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 ); |