diff options
author | Nick Bofferding <bofferdn@us.ibm.com> | 2016-03-15 14:10:01 -0500 |
---|---|---|
committer | William G. Hoffa <wghoffa@us.ibm.com> | 2016-03-29 17:13:00 -0400 |
commit | d69021c4f1acb33cef4692ce85cead2540412862 (patch) | |
tree | d640d2b9ff69055b3c649f5d8b977f133d99d36d | |
parent | 0ceb12be50b8542714a981cbaee2d41244d49507 (diff) | |
download | talos-hostboot-d69021c4f1acb33cef4692ce85cead2540412862.tar.gz talos-hostboot-d69021c4f1acb33cef4692ce85cead2540412862.zip |
Support runtime target translation for Phyp
- Added ordinal IDs to system XML files
- Added new HBRT_HYP_ID attribute to proc, membuf, core targets
- Removed duplicate target type extensions
- Customize HBRT_HYP_ID attributes in istep 21 based on payload type
- Updated runtime translation interfaces for simple, efficient lookup
- Added templated memoizer to speed up simple input/output functions
- Generate ordinal IDs in common attribute parser
- Added various test cases
RTC: 146153
CMVC-Coreq: 989094
Change-Id: Ic60996f3b7c3197191f8939f362c578b54475df4
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/22254
Tested-by: Jenkins Server
Tested-by: FSP CI Jenkins
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com>
-rw-r--r-- | src/include/usr/runtime/customize_attrs_for_payload.H | 62 | ||||
-rw-r--r-- | src/include/usr/runtime/runtime_reasoncodes.H | 11 | ||||
-rw-r--r-- | src/include/util/memoize.H | 108 | ||||
-rw-r--r-- | src/makefile | 4 | ||||
-rw-r--r-- | src/usr/isteps/istep21/call_host_runtime_setup.C | 12 | ||||
-rw-r--r-- | src/usr/runtime/customize_attrs_for_payload.C | 419 | ||||
-rw-r--r-- | src/usr/runtime/makefile | 3 | ||||
-rw-r--r-- | src/usr/runtime/test/makefile | 16 | ||||
-rw-r--r-- | src/usr/runtime/test/test_customize_attrs_for_payload.H | 458 | ||||
-rwxr-xr-x | src/usr/targeting/common/genHwsvMrwXml.pl | 104 | ||||
-rw-r--r-- | src/usr/targeting/common/xmltohb/attribute_types_hb.xml | 20 | ||||
-rw-r--r-- | src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml | 623 | ||||
-rwxr-xr-x | src/usr/targeting/common/xmltohb/target_types_hb.xml | 68 | ||||
-rw-r--r-- | src/usr/targeting/common/xmltohb/vbu_NIMBUS.system.xml | 518 | ||||
-rw-r--r-- | src/usr/targeting/runtime/rt_targeting.C | 399 | ||||
-rw-r--r-- | src/usr/testcore/makefile | 5 | ||||
-rw-r--r-- | src/usr/testcore/memoize/makefile | 31 | ||||
-rw-r--r-- | src/usr/testcore/memoize/test_memoize.H | 210 |
18 files changed, 2689 insertions, 382 deletions
diff --git a/src/include/usr/runtime/customize_attrs_for_payload.H b/src/include/usr/runtime/customize_attrs_for_payload.H new file mode 100644 index 000000000..a5158f996 --- /dev/null +++ b/src/include/usr/runtime/customize_attrs_for_payload.H @@ -0,0 +1,62 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/include/usr/runtime/customize_attrs_for_payload.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016 */ +/* [+] 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. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ + +#ifndef __RUNTIME_CUST_ATTRS_FOR_PAYLOAD_H +#define __RUNTIME_CUST_ATTRS_FOR_PAYLOAD_H + +/** + * @file customize_attrs_for_payload.H + * @brief Provides the definition for the payload specific attribute + * customization functions + */ + +#include <errl/errlentry.H> +#include <runtime/rt_targeting.H> +#include <targeting/common/attributes.H> + +namespace RUNTIME +{ + +static const TARGETING::ATTR_HBRT_HYP_ID_type HBRT_HYP_ID_UNKNOWN + = 0xFFFFFFFFFFFFFFFFULL; + +static const RT_TARG::rtChipId_t RT_TYPE_UNKNOWN + = 0xFFFFFFFFFFFFFFFFULL; + +/** + * @brief Populate ATTR_HBRT_HYP_ID attributes for the current payload type, + * allowing runtime/host interfaces to reference equivalent targets + * @param[in] i_configForPhyp Whether to configure the IDs for PHyp (true), or + * all other payload kinds (false) + * @return Error log handle + * @retval NULL Populated all ATTR_HBRT_HYP_ID attributes successfully + * @retval !NULL Failed to populate one or more ATTR_HBRT_HYP_ID attributes + */ +errlHndl_t configureHbrtHypIds(bool i_configForPhyp); + + +}; // End namespace RUNTIME + +#endif diff --git a/src/include/usr/runtime/runtime_reasoncodes.H b/src/include/usr/runtime/runtime_reasoncodes.H index 544a9c88a..ad6427668 100644 --- a/src/include/usr/runtime/runtime_reasoncodes.H +++ b/src/include/usr/runtime/runtime_reasoncodes.H @@ -5,7 +5,9 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* COPYRIGHT International Business Machines Corp. 2012,2014 */ +/* Contributors Listed Below - COPYRIGHT 2012,2016 */ +/* [+] 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. */ @@ -47,6 +49,10 @@ namespace RUNTIME MOD_HDATSERVICE_FINDSPIRA = 0x0F, /** hdatservice.C */ MOD_HDATSERVICE_UPDATE_SECTION_ACTUAL = 0x10, /**< hdatservice.C */ MOD_HDATSERVICE_MAPREGION = 0x11, /**< hdatservice.C */ + + // customize_attrs_for_payload.C + MOD_CUST_COMP_NON_PHYP_RT_TARGET = 0x12, + MOD_CUST_CONF_HBRT_HYP_IDS = 0x13, }; enum RuntimeReasonCode @@ -76,6 +82,9 @@ namespace RUNTIME RC_NO_SPIRA = RUNTIME_COMP_ID | 0x16, RC_CANNOT_MAP_HDAT = RUNTIME_COMP_ID | 0x17, RC_NOT_ENOUGH_SPACE = RUNTIME_COMP_ID | 0x18, + RT_UNIT_TARGET_NOT_FOUND = RUNTIME_COMP_ID | 0x19, + RT_TARGET_TYPE_NOT_SUPPORTED = RUNTIME_COMP_ID | 0x1A, + RT_NO_PROC_TARGET = RUNTIME_COMP_ID | 0x1B }; enum UserDetailsTypes diff --git a/src/include/util/memoize.H b/src/include/util/memoize.H new file mode 100644 index 000000000..e1f31c48c --- /dev/null +++ b/src/include/util/memoize.H @@ -0,0 +1,108 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/include/util/memoize.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016 */ +/* [+] 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. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ + +#ifndef __UTIL_MEMOIZE_H +#define __UTIL_MEMOIZE_H + +#include <errl/errlentry.H> +#include <map> + +namespace Util +{ + +namespace Memoize +{ + +/** + * @brief Wraps a function (which accepts an input/output parameter pair and + * returns an error log handle) with a memoizer + * + * @par Detailed Description: + * This template wraps a candidate function with a memoizer, a facility + * which caches the result for every unique input. If an input arrives + * that already has a cached result, the result is returned without the + * overhead of calling the function, thereby increasing performance. + * See warning section for caveats. + * + * @warning: Must only be used if: + * - Called only in single-threaded context (cache is not mutex protected) + * - All possible inputs are guaranteed to be unique + * - For a given input, the result is always the same + * + * @tparam InputType The memoized function's input type + * @tparam OutputType The memoized function's output type + * @param[in] i_fn Function pointer referencing the function to memoize + * @param[in] i_in Input to the memoized function + * @param[out] o_out Output of the memoized function. The memoizer does not + * alter the output on failure; Caller should default the value as + * appropriate to anticipate that case. + * @return Error log indicating success or failure + * @retval NULL Result was already computed for the given input and was + * returned in the output parameter -otherwise- real function returned + * a value that was cached and returned in the output parameter + * @retval !NULL Call to memoized function failed. Result was not cached and + * the output value remains unchanged + * @note: Could be improved to return a lambda function and use + * std::function in place of function pointers if std::function was + * implemented + */ +template < class InputType , class OutputType > +errlHndl_t memoize( + errlHndl_t (*i_fn)(InputType,OutputType&), + InputType i_in, + OutputType& o_out) +{ + errlHndl_t pError = NULL; + + do { + + // If the result of the input is already cached, return it + static std::map< InputType, OutputType> cache; + if(cache.count(i_in)) + { + o_out = cache[i_in]; + break; + } + + // Otherwise call the real function and assuming no error, cache the result + // and return it + OutputType out; + pError = i_fn(i_in,out); + if(!pError) + { + cache[i_in] = out; + o_out = out; + } + + } while(0); + + return pError; +} + +}; // End namespace Memoize + +}; // End namespace Util + +#endif diff --git a/src/makefile b/src/makefile index 63e233780..d83f4f9e2 100644 --- a/src/makefile +++ b/src/makefile @@ -194,6 +194,7 @@ TESTCASE_MODULES += testibscom TESTCASE_MODULES += testxscom TESTCASE_MODULES += testkernel TESTCASE_MODULES += testtargeting +TESTCASE_MODULES += testmemoize #****************************************************************** #KNOWN ISSUES (I might let these run but there is something wrong) @@ -209,8 +210,7 @@ TESTCASE_MODULES += testscom #Requires main store memory @TODO RTC: 132577 #TESTCASE_MODULES += $(if $(CONFIG_VPO_COMPILE),,testdump) -#Need to remove HostServices related code @TODO RTC:132750 -#TESTCASE_MODULES += $(if $(CONFIG_VPO_COMPILE),,testruntime) +TESTCASE_MODULES += $(if $(CONFIG_VPO_COMPILE),,testruntime) #@TODO RTC: 137561 Enable this test case when interupt story is complete #TESTCASE_MODULES += testintr diff --git a/src/usr/isteps/istep21/call_host_runtime_setup.C b/src/usr/isteps/istep21/call_host_runtime_setup.C index 1901525bc..55ec5c659 100644 --- a/src/usr/isteps/istep21/call_host_runtime_setup.C +++ b/src/usr/isteps/istep21/call_host_runtime_setup.C @@ -33,9 +33,7 @@ #include <vfs/vfs.H> #include <runtime/runtime.H> #include <devtree/devtreeif.H> - - - +#include <runtime/customize_attrs_for_payload.H> #include <hbotcompid.H> using namespace ERRORLOG; @@ -73,6 +71,14 @@ void* call_host_runtime_setup (void *io_pArgs) } } + // Configure the ATTR_HBRT_HYP_ID attributes so that runtime code and + // whichever hypervisor is loaded can reference equivalent targets + l_err = RUNTIME::configureHbrtHypIds(TARGETING::is_phyp_load()); + if(l_err) + { + break; + } + // Map the Host Data into the VMM if applicable l_err = RUNTIME::load_host_data(); if( l_err ) diff --git a/src/usr/runtime/customize_attrs_for_payload.C b/src/usr/runtime/customize_attrs_for_payload.C new file mode 100644 index 000000000..e1c0ddba2 --- /dev/null +++ b/src/usr/runtime/customize_attrs_for_payload.C @@ -0,0 +1,419 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/runtime/customize_attrs_for_payload.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2012,2016 */ +/* [+] 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. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ + +/** + * @file customize_attrs_for_payload.C + * + * @brief Customize attributes in the targeting model that vary based on + * payload which are only needed for runtime operation + */ + +//#include <sys/misc.h> +#include <trace/interface.H> +#include <errl/errlentry.H> +#include <targeting/common/target.H> +#include <targeting/common/targetservice.H> +#include <targeting/common/utilFilter.H> +#include <runtime/runtime_reasoncodes.H> +#include <runtime/runtime.H> +#include <errl/errlmanager.H> +#include <runtime/rt_targeting.H> +#include <arch/pirformat.H> +#include <targeting/common/util.H> +#include <errl/errludtarget.H> +#include <runtime/customize_attrs_for_payload.H> + +extern trace_desc_t *g_trac_runtime; + +namespace RUNTIME +{ + +/** + * @brief Create procesor targeting target not found error + * @param[in] i_pTarget Targeting target which did not have a processor + * targeting target. Must not be NULL (asserts otherwise) + * @return Error log handle + * @retval !NULL New error log indicating the error + */ +errlHndl_t createProcNotFoundError( + const TARGETING::Target* const i_pTarget) +{ + assert(i_pTarget != NULL); + + errlHndl_t pError = NULL; + auto huid = TARGETING::get_huid(i_pTarget); + TRACFCOMP(g_trac_runtime, ERR_MRK + " No processor targeting target found for targeting target with " + "HUID of 0x%08X", + huid); + + // Note: the module ID below references the function that exclusively + // creates this error + /*@ + * @errortype + * @moduleid RUNTIME::MOD_CUST_COMP_NON_PHYP_RT_TARGET + * @reasoncode RUNTIME::RT_NO_PROC_TARGET + * @userdata1 Input targeting target's HUID + * @devdesc No processor targeting target was found for the given + * targeting target + */ + pError = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_INFORMATIONAL, + RUNTIME::MOD_CUST_COMP_NON_PHYP_RT_TARGET, + RUNTIME::RT_NO_PROC_TARGET, + huid, + 0, + true); + + ERRORLOG::ErrlUserDetailsTarget(i_pTarget,"Targeting target"). + addToLog(pError); + + return pError; +} + +/** + * @brief Returns the runtime target ID for a given targeting target for all + * hypervisors other than PHyp + * @param[in] i_pTarget Targeting target, must not be NULL (asserts + * otherwise) + * @param[out] o_rtTargetId Runtime target ID which maps to the given targeting + * target + * @return Error log handle + * @retval NULL Computed a valid runtime target ID for the given input + * targeting target and returned it in the output parameter. + * @retval !NULL Failed to compute a runtime target ID for the given input + * targeting target. Ignore output parameter. + */ +errlHndl_t computeNonPhypRtTarget( + const TARGETING::Target* i_pTarget, + RT_TARG::rtChipId_t& o_rtTargetId) +{ + assert(i_pTarget != NULL); + + errlHndl_t pError = NULL; + + do + { + if(i_pTarget == TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL) + { + TARGETING::Target* masterProcChip = NULL; + TARGETING::targetService(). + masterProcChipTargetHandle(masterProcChip); + i_pTarget = masterProcChip; + } + + auto targetingTargetType = i_pTarget->getAttr<TARGETING::ATTR_TYPE>(); + + if(targetingTargetType == TARGETING::TYPE_PROC) + { + uint32_t fabId = + i_pTarget->getAttr<TARGETING::ATTR_FABRIC_GROUP_ID>(); + + uint32_t procPos = + i_pTarget->getAttr<TARGETING::ATTR_FABRIC_CHIP_ID>(); + + o_rtTargetId = PIR_t::createChipId( fabId, procPos ); + } + else if( targetingTargetType == TARGETING::TYPE_MEMBUF) + { + //MEMBUF + // 0b1000.0000.0000.0000.0000.0GGG.GCCC.MMMM + // where GGGG is group, CCC is chip, MMMM is memory channel + // + TARGETING::TargetHandleList targetList; + + getParentAffinityTargets(targetList, + i_pTarget, + TARGETING::CLASS_UNIT, + TARGETING::TYPE_MCS); + + if( targetList.empty() ) + { + auto huid = get_huid(i_pTarget); + TRACFCOMP(g_trac_runtime, ERR_MRK + "No associated MCS targeting target(s) found for MEMBUF " + "targeting target with HUID of 0x%08X", + huid); + /*@ + * @error + * @moduleid RUNTIME::MOD_CUST_COMP_NON_PHYP_RT_TARGET + * @reasoncode RUNTIME::RT_UNIT_TARGET_NOT_FOUND + * @userdata1 MEMBUF targeting target's HUID + * @devdesc No associated MCS targeting target(s) found for + * given MEMBUF targeting target + */ + pError = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_INFORMATIONAL, + RUNTIME::MOD_CUST_COMP_NON_PHYP_RT_TARGET, + RUNTIME::RT_UNIT_TARGET_NOT_FOUND, + huid, + 0, + true); + + ERRORLOG::ErrlUserDetailsTarget(i_pTarget,"Targeting Target"). + addToLog(pError); + + break; + } + + auto target = targetList[0]; + auto pos = target->getAttr<TARGETING::ATTR_CHIP_UNIT>(); + + targetList.clear(); + getParentAffinityTargets(targetList, + target, + TARGETING::CLASS_CHIP, + TARGETING::TYPE_PROC); + + if(targetList.empty()) + { + pError = createProcNotFoundError(target); + break; + } + + auto procTarget = targetList[0]; + pError = computeNonPhypRtTarget(procTarget, o_rtTargetId); + if(pError) + { + break; + } + + o_rtTargetId = (o_rtTargetId << RT_TARG::MEMBUF_ID_SHIFT); + o_rtTargetId += pos; + o_rtTargetId |= RT_TARG::MEMBUF_TYPE; + } + else if(targetingTargetType == TARGETING::TYPE_CORE) + { + // CORE + // 0b0100.0000.0000.0000.0000.GGGG.CCCP.PPPP + // GGGG is group, CCC is chip, PPPPP is core + auto pos = i_pTarget->getAttr<TARGETING::ATTR_CHIP_UNIT>(); + const TARGETING::Target* procTarget = getParentChip(i_pTarget); + if(procTarget == NULL) + { + pError = createProcNotFoundError(i_pTarget); + break; + } + + pError = computeNonPhypRtTarget(procTarget, o_rtTargetId); + if(pError) + { + break; + } + + o_rtTargetId = PIR_t::createCoreId(o_rtTargetId,pos); + o_rtTargetId |= RT_TARG::CORE_TYPE; + } + else + { + auto huid = get_huid(i_pTarget); + TRACFCOMP(g_trac_runtime,ERR_MRK + "Targeting target type 0x%08X not supported. Cannot " + "convert targeting target with HUID of 0x%08X into a " + "runtime target ID", + targetingTargetType, + huid); + /*@ + * @errortype + * @moduleid RUNTIME::MOD_CUST_COMP_NON_PHYP_RT_TARGET + * @reasoncode RUNTIME::RT_TARGET_TYPE_NOT_SUPPORTED + * @userdata1 Targeting target's HUID + * @userdata2 Targeting target's type + * @devdesc The targeting type of the input targeting target is + * not supported by runtime code + */ + pError = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_INFORMATIONAL, + RUNTIME::MOD_CUST_COMP_NON_PHYP_RT_TARGET, + RUNTIME::RT_TARGET_TYPE_NOT_SUPPORTED, + huid, + targetingTargetType, + true); + + ERRORLOG::ErrlUserDetailsTarget(i_pTarget,"Targeting Target"). + addToLog(pError); + } + + } while(0); + + return pError; +} + +/** + * @brief Returns the runtime target type for a given targeting target + * @param[in] i_pTarget Targeting target, must not be NULL + * (asserts otherwise) + * @param[out] o_rtType Runtime target type for given targeting target + * @return Error log handle + * @retval NULL Returned supported runtime target type for the given input + * targeting target in the output parameter. + * @retval !NULL Failed to determine runtime target type for the + * given input targeting target, ignore output parameter. + */ +errlHndl_t getRtTypeForTarget( + const TARGETING::Target* i_pTarget, + RT_TARG::rtChipId_t& o_rtType) +{ + assert(i_pTarget != NULL); + + errlHndl_t pError = NULL; + + if(i_pTarget == TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL) + { + TARGETING::Target* masterProcChip = NULL; + TARGETING::targetService(). + masterProcChipTargetHandle(masterProcChip); + i_pTarget = masterProcChip; + } + + auto found = true; + auto rtType = RT_TYPE_UNKNOWN; + auto targetingTargetType = i_pTarget->getAttr<TARGETING::ATTR_TYPE>(); + switch(targetingTargetType) + { + case TARGETING::TYPE_PROC: + rtType = RT_TARG::PROC_TYPE; + break; + case TARGETING::TYPE_MEMBUF: + rtType = RT_TARG::MEMBUF_TYPE; + break; + case TARGETING::TYPE_CORE: + rtType = RT_TARG::CORE_TYPE; + break; + default: + found = false; + break; + } + + if(!found) + { + auto huid = get_huid(i_pTarget); + TRACFCOMP(g_trac_runtime, ERR_MRK + "Input targeting target's type of 0x%08X is not supported. " + "HUID: 0x%08X", + targetingTargetType, + huid); + /*@ + * @errortype + * @moduleid RUNTIME::MOD_CUST_CONF_HBRT_HYP_IDS + * @reasoncode RUNTIME::RT_TARGET_TYPE_NOT_SUPPORTED + * @userdata1 Target's HUID + * @userdata2 Target's targeting type + * @devdesc Targeting target's type not supported by runtime code + */ + pError = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_INFORMATIONAL, + RUNTIME::MOD_CUST_CONF_HBRT_HYP_IDS, + RUNTIME::RT_TARGET_TYPE_NOT_SUPPORTED, + huid, + targetingTargetType, + true); + + ERRORLOG::ErrlUserDetailsTarget(i_pTarget,"Targeting Target"). + addToLog(pError); + } + + o_rtType = rtType; + + return pError; +} + +errlHndl_t configureHbrtHypIds(const bool i_configForPhyp) +{ + TRACDCOMP( g_trac_runtime, ENTER_MRK "configureHbrtHypIds" ); + + errlHndl_t pError = NULL; + + TARGETING::PredicateCTM isaProc( + TARGETING::CLASS_CHIP, TARGETING::TYPE_PROC); + TARGETING::PredicateCTM isaMembuf( + TARGETING::CLASS_CHIP, TARGETING::TYPE_MEMBUF); + TARGETING::PredicateCTM isaCore( + TARGETING::CLASS_UNIT, TARGETING::TYPE_CORE); + TARGETING::PredicatePostfixExpr isaProcMembufOrCore; + isaProcMembufOrCore.push(&isaProc).push(&isaMembuf).Or() + .push(&isaCore).Or(); + TARGETING::TargetRangeFilter pIt( + TARGETING::targetService().begin(), + TARGETING::targetService().end(), + &isaProcMembufOrCore); + for (; pIt; ++pIt) + { + auto hbrtHypId = HBRT_HYP_ID_UNKNOWN; + + // Phyp is the only special case + if(i_configForPhyp) + { + auto rtType = RT_TYPE_UNKNOWN; + pError = getRtTypeForTarget(*pIt,rtType); + if(pError) + { + break; + } + + // PHyp only operates on fused cores, so all core IDs + // must match that of the parent EX + if( (*pIt)->getAttr<TARGETING::ATTR_TYPE>() + == TARGETING::TYPE_CORE) + { + auto type = TARGETING::TYPE_EX; + const TARGETING::Target* pEx = + TARGETING::getParent(*pIt,type); + + // If this fails, everything is already hosed + assert(pEx != NULL); + + hbrtHypId = + pEx->getAttr<TARGETING::ATTR_ORDINAL_ID>(); + } + else + { + hbrtHypId = (*pIt)->getAttr<TARGETING::ATTR_ORDINAL_ID>(); + } + + hbrtHypId |= rtType; + } + else + { + pError = computeNonPhypRtTarget(*pIt,hbrtHypId); + if(pError) + { + break; + } + } + + (*pIt)->setAttr<TARGETING::ATTR_HBRT_HYP_ID>(hbrtHypId); + TRACDCOMP( g_trac_runtime, "configureHbrtHypIds> " + "Set ATTR_HBRT_HYP_ID attribute to 0x%016llX on targeting target " + "with HUID of 0x%08X", + hbrtHypId,TARGETING::get_huid(*pIt)); + } + + TRACDCOMP( g_trac_runtime, EXIT_MRK "configureHbrtHypIds" ); + + return pError; +} + +}; // End namespace RUNTIME diff --git a/src/usr/runtime/makefile b/src/usr/runtime/makefile index e8ecca91c..86e2e8e80 100644 --- a/src/usr/runtime/makefile +++ b/src/usr/runtime/makefile @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2012,2015 +# Contributors Listed Below - COPYRIGHT 2012,2016 # [+] International Business Machines Corp. # # @@ -38,6 +38,7 @@ OBJS += hdatservice.o OBJS += fakepayload.o OBJS += tce.o OBJS += errlud_hdat.o +OBJS += customize_attrs_for_payload.o SUBDIRS += test.d diff --git a/src/usr/runtime/test/makefile b/src/usr/runtime/test/makefile index a0a1c5c5c..bebc21cd2 100644 --- a/src/usr/runtime/test/makefile +++ b/src/usr/runtime/test/makefile @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2012,2015 +# Contributors Listed Below - COPYRIGHT 2012,2016 # [+] International Business Machines Corp. # # @@ -25,8 +25,18 @@ ROOTPATH = ../../../.. MODULE = testruntime -TESTS += hdatservicetest.H -TESTS += tcetest.H +#@TODO RTC 132750 +#TESTS += hdatservicetest.H +#TESTS += tcetest.H +TESTS += test_customize_attrs_for_payload.H + +# The testcase depends on the following file, but it is typically only compiled +# into the runtime code. Pull it into just the test module so we can exercise +# it +OBJS += rt_targeting.o + +# Use a vpath to give access to the rt_targeting.C code +vpath %.C ../../targeting/runtime #@TODO RTC:132750 #TESTS += runtimeattrtest.H diff --git a/src/usr/runtime/test/test_customize_attrs_for_payload.H b/src/usr/runtime/test/test_customize_attrs_for_payload.H new file mode 100644 index 000000000..130d3d2d9 --- /dev/null +++ b/src/usr/runtime/test/test_customize_attrs_for_payload.H @@ -0,0 +1,458 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/runtime/test/test_customize_attrs_for_payload.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016 */ +/* [+] 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. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ + +#ifndef __TEST_CUST_ATTRS_FOR_PAYLOAD_H +#define __TEST_CUST_ATTRS_FOR_PAYLOAD_H + +/** + * @file test_customize_attrs_for_payload.H + * + */ + +#include <cxxtest/TestSuite.H> + +#include <targeting/common/target.H> +#include <targeting/common/targetservice.H> +#include <targeting/common/utilFilter.H> +#include <attributeenums.H> +#include <errl/errlmanager.H> +#include <runtime/customize_attrs_for_payload.H> +#include <runtime/rt_targeting.H> +#include <targeting/common/attributes.H> +#include <runtime/runtime_reasoncodes.H> +#include <map> + +namespace RT_TARG +{ + // Need to use the non-memoized version for some parts of the test + // to avoid cacheing results. We don't want this prototype generally + // exported so declaring it here + errlHndl_t _getHbTarget( + const rtChipId_t i_rtTargetId, + TARGETING::Target*& o_target); +}; + +class CustomizeAttrsForPayloadTest: public CxxTest::TestSuite +{ + public: + + CustomizeAttrsForPayloadTest() : + iv_configForPhyp(false), + iv_pSys(NULL) + { + } + + void testGetHbTargetCommon(void) + { + TS_TRACE( ENTER_MRK + "testGetHbTargetCommon> start" ); + + errlHndl_t pError = NULL; + + do { + + TARGETING::Target* pTarget = NULL; + auto rtTargetId = RUNTIME::HBRT_HYP_ID_UNKNOWN; + + pError = RT_TARG::getHbTarget( + rtTargetId, + pTarget); + if(pError==NULL) + { + TS_FAIL("testGetHbTargetCommon> call to getHbTarget did not " + "return error as expected"); + break; + } + + delete pError; + pError=NULL; + + if(pTarget != NULL) + { + TS_FAIL("testGetHbTargetCommon> call to getHbTarget returned " + "error but output is not NULL"); + break; + } + + } while(0); + + if(pError) + { + errlCommit(pError,RUNTIME_COMP_ID); + } + + TS_TRACE( EXIT_MRK + "testGetHbTargetCommon> finish" ); + } + + void testGetRtTargetCommon(void) + { + TS_TRACE( ENTER_MRK + "testGetRtTargetCommon> start" ); + + errlHndl_t pError = NULL; + + do { + + TARGETING::Target* pProc = NULL; + pError = TARGETING::targetService().queryMasterProcChipTargetHandle( + pProc); + if(pError) + { + TS_FAIL("testGetRtTargetCommon> failed to get master proc chip "); + break; + } + + TARGETING::PredicateCTM isaPhb( + TARGETING::CLASS_UNIT, TARGETING::TYPE_PHB); + + TARGETING::TargetHandleList phbs; + TARGETING::targetService().getAssociated( + phbs, + pProc, + TARGETING::TargetService::CHILD, + TARGETING::TargetService::ALL, + &isaPhb); + if(phbs.empty()) + { + TS_FAIL("testGetRtTargetCommon> failed to get any phb unit "); + break; + } + + TARGETING::Target* pTarget = phbs[0]; + auto rtTargetId = RUNTIME::HBRT_HYP_ID_UNKNOWN; + + pError = RT_TARG::getRtTarget( + pTarget, + rtTargetId); + if(pError==NULL) + { + TS_FAIL("testGetRtTargetCommon> call to getRtTarget did not " + "return error as expected"); + break; + } + + delete pError; + pError=NULL; + + if(rtTargetId != RUNTIME::HBRT_HYP_ID_UNKNOWN) + { + TS_FAIL("testGetRtTargetCommon> call to getRtTarget returned " + "error but did not return the unknown value"); + break; + } + + } while(0); + + if(pError) + { + errlCommit(pError,RUNTIME_COMP_ID); + } + + TS_TRACE( EXIT_MRK + "testGetRtTargetCommon> finish" ); + } + + void testGetRtAndHbTargetPhyp(void) + { + TS_TRACE( ENTER_MRK + "testGetRtAndHbTargetPhyp> start" ); + validateGetRtAndHbTarget(true); + TS_TRACE( EXIT_MRK + "testGetRtAndHbTargetPhyp> finish" ); + } + + void testGetRtAndHbTargetNonPhyp(void) + { + TS_TRACE( ENTER_MRK + "testGetRtAndHbTargetNonPhyp> start" ); + validateGetRtAndHbTarget(false); + TS_TRACE( EXIT_MRK + "testGetRtAndHbTargetNonPhyp> finish" ); + } + + private: + + void validateGetRtAndHbTarget(const bool i_configForPhyp) + { + TS_TRACE( ENTER_MRK + "validateGetRtAndHbTarget> start (i_configForPhyp = %d)", + i_configForPhyp ); + + errlHndl_t pError = NULL; + + do { + + pError = overrideState(i_configForPhyp); + if(pError) + { + TS_FAIL("validateGetRtAndHbTarget> failed to set " + "ATTR_HBRT_HYP_IDs"); + break; + } + + do { + + std::map< RT_TARG::rtChipId_t,size_t > uniqueRtTargetIds; + + const size_t FOUND_ONE_ID = 1; + + const TARGETING::TYPE targetingTargetTypes[] = + {TARGETING::TYPE_CORE, TARGETING::TYPE_PROC, + TARGETING::TYPE_MEMBUF}; + + auto failed = false; + for(TARGETING::TYPE targetingTargetType : targetingTargetTypes) + { + failed = true; + TARGETING::TargetHandleList targets; + TARGETING::getChildAffinityTargetsByState( + targets, + iv_pSys, + TARGETING::CLASS_NA, + targetingTargetType, + TARGETING::UTIL_FILTER_ALL); + if(targets.empty()) + { + TS_TRACE("validateGetRtAndHbTarget> No targeting targets of " + "type 0x%08X found in the blueprint, skipping.", + targetingTargetType); + failed = false; + continue; + } + + for(TARGETING::TargetHandleList::const_iterator pIt = + targets.begin(); + pIt != targets.end(); + ++pIt) + { + failed = true; + TARGETING::Target* pTarget = (*pIt); + + auto rtTargetId = RUNTIME::HBRT_HYP_ID_UNKNOWN; + pError = RT_TARG::getRtTarget( + pTarget, + rtTargetId); + if(pError!=NULL) + { + TS_FAIL("validateGetRtAndHbTarget> Failed call to " + "getRtTarget for targeting target with HUID of 0x%08X", + TARGETING::get_huid(pTarget)); + break; + } + + if(rtTargetId == RUNTIME::HBRT_HYP_ID_UNKNOWN) + { + TS_FAIL("validateGetRtAndHbTarget> call to getRtTarget " + "returned unchanged runtime target ID"); + break; + } + + // Every runtime target ID better be unique. Exception: for + // PHyp payloads which operate on fused cores, there can be + // at most 2 cores having same ID + auto alreadyPresent = uniqueRtTargetIds.count(rtTargetId); + if(alreadyPresent) + { + if( (i_configForPhyp) + && (targetingTargetType==TARGETING::TYPE_CORE) + && (uniqueRtTargetIds[rtTargetId] <= FOUND_ONE_ID)) + { + uniqueRtTargetIds[rtTargetId]++; + } + else + { + TS_FAIL("Already saw runtime target ID of 0x%016llX", + rtTargetId); + break; + } + } + else + { + uniqueRtTargetIds[rtTargetId]=FOUND_ONE_ID; + } + + auto actualRtTargetId = + pTarget->getAttr<TARGETING::ATTR_HBRT_HYP_ID>(); + if(actualRtTargetId != rtTargetId) + { + TS_FAIL("validateGetRtAndHbTarget> call to getRtTarget " + "returned runtime target ID of 0x%016llX which does " + "not match the targeting target's (HUID 0x%08x) " + "ATTR_HBRT_HYP_ID attribute value of 0x%016llX", + actualRtTargetId,TARGETING::get_huid(pTarget), + rtTargetId); + break; + } + + // Call to other interface should return original target. + TARGETING::Target* pActualTarget = NULL; + // Need to bypass memoize to ensure results are not cached + pError = RT_TARG::_getHbTarget( + actualRtTargetId, + pActualTarget); + if(pError!=NULL) + { + TS_FAIL("validateGetRtAndHbTarget> Failed call to " + "_getHbTarget for runtime target ID of 0x%016llX", + actualRtTargetId); + break; + } + + if(pActualTarget == NULL) + { + TS_FAIL("validateGetRtAndHbTarget> Call to " + "_getHbTarget returned NULL target for runtime target " + "ID of 0x%016llX", + actualRtTargetId); + break; + } + + if(pActualTarget != pTarget) + { + // Since Phyp deals with fused cores, and all cores per + // EX have the same ID, it's possible to get a different + // target back than the original target. If that is the + // case, verify each core resolves to the same EX parent + auto realError = true; + if( (i_configForPhyp) + && (targetingTargetType==TARGETING::TYPE_CORE)) + { + auto exType = TARGETING::TYPE_EX; + + const TARGETING::Target* pOrigEx = + TARGETING::getParent(pTarget,exType); + assert(pOrigEx != NULL); + const TARGETING::Target* pActualEx = + TARGETING::getParent(pActualTarget,exType); + assert(pActualEx != NULL); + + if(pOrigEx == pActualEx) + { + TS_TRACE("Returned target (HUID 0x%08X) different " + "from original target (HUID 0x%08X), but this " + "is expected for PHyp payloads when all cores " + "under an ex have same ID", + TARGETING::get_huid(pActualTarget), + TARGETING::get_huid(pTarget)); + realError = false; + } + } + + if(realError) + { + TS_FAIL("validateGetRtAndHbTarget> _getHbTarget " + "returned successfully for runtime target ID of " + "0x%016llX but returned targeting target (HUID of " + "0x%08X) was not the original (HUID of 0x%08X)", + actualRtTargetId,get_huid(pActualTarget), + get_huid(pTarget)); + break; + } + } + + failed = false; + } + + if(pError || failed) + { + break; + } + + failed = false; + } + + if(pError || failed) + { + break; + } + + } while(0); + + restoreState(pError); + + } while(0); + + if(pError) + { + errlCommit(pError,RUNTIME_COMP_ID); + } + + TS_TRACE( EXIT_MRK + "validateGetRtAndHbTarget> finish" ); + } + + bool iv_configForPhyp; + TARGETING::Target* iv_pSys; + + errlHndl_t overrideState(const bool i_configForPhyp) + { + errlHndl_t pError = NULL; + + do { + + TARGETING::Target* pSys = NULL; + TARGETING::targetService().getTopLevelTarget(pSys); + assert(pSys) + iv_pSys = pSys; + iv_configForPhyp = TARGETING::is_phyp_load(); + + pError = RUNTIME::configureHbrtHypIds(i_configForPhyp); + if(pError) + { + TS_FAIL("overrideState> failed to configure ATTR_HBRT_HYP_IDs. " + "i_configForPhyp = %d",i_configForPhyp); + break; + } + + } while(0); + + return pError; + } + + void restoreState(errlHndl_t& io_pError) + { + iv_pSys = NULL; + errlHndl_t pError = RUNTIME::configureHbrtHypIds(iv_configForPhyp); + if(pError) + { + TS_FAIL("restoreState> failed to reconfigure ATTR_HBRT_HYP_IDs. " + "iv_configForPhyp = %d",iv_configForPhyp); + if(!io_pError) + { + io_pError=pError; + pError = NULL; + } + else + { + errlCommit(pError,RUNTIME_COMP_ID); + } + } + } + +}; + +#endif + diff --git a/src/usr/targeting/common/genHwsvMrwXml.pl b/src/usr/targeting/common/genHwsvMrwXml.pl index fe9970541..4c56ebcb9 100755 --- a/src/usr/targeting/common/genHwsvMrwXml.pl +++ b/src/usr/targeting/common/genHwsvMrwXml.pl @@ -2408,6 +2408,10 @@ sub generate_sys <id>AFFINITY_PATH</id> <default>affinity:sys-$sys</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:sys-$sys</default> @@ -2845,6 +2849,10 @@ sub generate_system_node <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$node</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$computeNodeList{$node}->{'instancePath'}</default> @@ -2979,6 +2987,10 @@ sub generate_proc <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -3479,6 +3491,10 @@ sub generate_ex <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/eq-$eq/ex-$ex</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -3610,6 +3626,10 @@ sub generate_core <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/eq-$eq/ex-$ex/core-$core</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -3693,6 +3713,10 @@ sub generate_eq <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/eq-$eq</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -3772,6 +3796,10 @@ sub generate_mcs <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/mcs-$mcs</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -3838,6 +3866,10 @@ sub generate_mca <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/mcs-$mcs/mca-$mca</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -3892,6 +3924,10 @@ sub generate_mcbist <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/mcbist-$mcbist</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -3946,6 +3982,10 @@ sub generate_pec <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/pec-$pec</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -4013,6 +4053,10 @@ sub generate_phb_chiplet <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/pec-$pec/phb-$phb</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -4067,6 +4111,10 @@ sub generate_ppe <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/ppe-$ppe</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -4120,6 +4168,10 @@ sub generate_obus <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/obus-$obus</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -4174,6 +4226,10 @@ sub generate_xbus <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/xbus-$xbus</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -4228,6 +4284,10 @@ sub generate_perv <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/perv-$perv</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -4280,6 +4340,10 @@ sub generate_capp <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/capp-$capp</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -4333,6 +4397,10 @@ sub generate_sbe <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/sbe-$sbe</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -4436,6 +4504,10 @@ sub generate_a_pcie <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/pci-$phb</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$phbList{$node}{$proc}{$phb}->{'phbIpath'}</default> @@ -4522,6 +4594,10 @@ sub generate_nx <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/nx-0</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -4572,6 +4648,10 @@ sub generate_pore <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/pore-0</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -4697,6 +4777,10 @@ sub generate_centaur <default>affinity:sys-$sys/node-$node/proc-$proc/mcs-$mcs/" . "membuf-$ctaur</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -4926,6 +5010,10 @@ sub generate_mba <default>affinity:sys-$sys/node-$node/proc-$proc/mcs-$mcs/" . "membuf-$ctaur/mba-$mba</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$ipath</default> @@ -4969,6 +5057,10 @@ sub generate_l4 . "membuf-$ctaur/l4-$l4</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> + <attribute> <id>MRU_ID</id> <default>$mruData</default> </attribute> @@ -5054,6 +5146,10 @@ sub generate_is_dimm <default>affinity:sys-$sys/node-$node/proc-$proc/mcs-$mcs/" . "mca-$mca/dimm-$dimm</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$dimm</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>$ipath</default> @@ -5224,6 +5320,10 @@ sub generate_dimm <default>affinity:sys-$sys/node-$node/proc-$proc/mcs-$mcs/" . "membuf-$pos/mba-$x/dimm-$zz</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>$logicalDimmInstancePath</default> @@ -5454,6 +5554,10 @@ sub generate_occ <id>AFFINITY_PATH</id> <default>affinity:sys-$sys/node-$node/proc-$proc/occ-0</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>$ordinalId</default> + </attribute> <compileAttribute> <id>INSTANCE_PATH</id> <default>instance:$occList{$node}{$proc}->{'instancePath'}</default> diff --git a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml index 21067818a..df81d962c 100644 --- a/src/usr/targeting/common/xmltohb/attribute_types_hb.xml +++ b/src/usr/targeting/common/xmltohb/attribute_types_hb.xml @@ -1574,6 +1574,26 @@ ID for the sensor number returned with the elog. --> <hbOnly/> </attribute> +<!-- TODO RTC 122856 When support for HB only volatile attributes with non-zero + default is implemented, update default value to match the description, + Until that happens, code must set the appropriate default if needed. --> +<attribute> + <id>HBRT_HYP_ID</id> + <description> + Effective ID used by the hypervisor to specify a given target. A value + of 0xFFFFFFFFFFFFFFFF means invalid/unknown. + </description> + <simpleType> + <uint64_t> + <default>0</default> + </uint64_t> + </simpleType> + <persistency>volatile-zeroed</persistency> + <readable/> + <writeable/> + <hbOnly/> +</attribute> + <attribute> <id>WOF_REGULATOR_EFFICIENCIES</id> <description> diff --git a/src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml b/src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml index 3c3dd541f..cee3b87bd 100644 --- a/src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml +++ b/src/usr/targeting/common/xmltohb/simics_NIMBUS.system.xml @@ -69,6 +69,10 @@ <default>affinity:sys-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>EXECUTION_PLATFORM</id> <default>1</default> </attribute> @@ -124,6 +128,10 @@ <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> </targetInstance> <!-- Nimbus n0p0 processor chip --> @@ -149,6 +157,10 @@ <default>affinity:sys-0/node-0/proc-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>FRU_ID</id> <default>1</default> </attribute> @@ -228,6 +240,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -250,6 +266,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -272,6 +292,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -294,6 +318,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -316,6 +344,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>4</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>4</default> </attribute> @@ -338,6 +370,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>5</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>5</default> </attribute> @@ -361,6 +397,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0/ex-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -379,6 +419,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0/ex-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -398,6 +442,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1/ex-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -416,6 +464,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1/ex-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -435,6 +487,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2/ex-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>4</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>4</default> </attribute> @@ -453,6 +509,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2/ex-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>5</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>5</default> </attribute> @@ -472,6 +532,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3/ex-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>6</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>6</default> </attribute> @@ -490,6 +554,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3/ex-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>7</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>7</default> </attribute> @@ -509,6 +577,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4/ex-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>8</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>8</default> </attribute> @@ -527,6 +599,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4/ex-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>9</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>9</default> </attribute> @@ -546,6 +622,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5/ex-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>10</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>10</default> </attribute> @@ -564,6 +644,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5/ex-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>11</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>11</default> </attribute> @@ -583,6 +667,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0/ex-0/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -605,6 +693,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0/ex-0/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -628,6 +720,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0/ex-1/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -650,6 +746,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0/ex-1/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -673,6 +773,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1/ex-0/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>4</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>4</default> </attribute> @@ -695,6 +799,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1/ex-0/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>5</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>5</default> </attribute> @@ -718,6 +826,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1/ex-1/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>6</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>6</default> </attribute> @@ -740,6 +852,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1/ex-1/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>7</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>7</default> </attribute> @@ -763,6 +879,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2/ex-0/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>8</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>8</default> </attribute> @@ -785,6 +905,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2/ex-0/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>9</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>9</default> </attribute> @@ -808,6 +932,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2/ex-1/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>10</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>10</default> </attribute> @@ -830,6 +958,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2/ex-1/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>11</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>11</default> </attribute> @@ -853,6 +985,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3/ex-0/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>12</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>12</default> </attribute> @@ -875,6 +1011,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3/ex-0/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>13</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>13</default> </attribute> @@ -898,6 +1038,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3/ex-1/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>14</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>14</default> </attribute> @@ -920,6 +1064,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3/ex-1/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>15</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>15</default> </attribute> @@ -943,6 +1091,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4/ex-0/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>16</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>16</default> </attribute> @@ -965,6 +1117,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4/ex-0/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>17</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>17</default> </attribute> @@ -988,6 +1144,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4/ex-1/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>18</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>18</default> </attribute> @@ -1010,6 +1170,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4/ex-1/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>19</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>19</default> </attribute> @@ -1033,6 +1197,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5/ex-0/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>20</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>20</default> </attribute> @@ -1055,6 +1223,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5/ex-0/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>21</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>21</default> </attribute> @@ -1078,6 +1250,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5/ex-1/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>22</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>22</default> </attribute> @@ -1100,6 +1276,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5/ex-1/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>23</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>23</default> </attribute> @@ -1123,6 +1303,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1152,6 +1336,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1181,6 +1369,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-2</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -1210,6 +1402,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-3</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -1240,6 +1436,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-0/mca-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1262,6 +1462,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-0/mca-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1285,6 +1489,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-1/mca-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -1307,6 +1515,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-1/mca-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -1330,6 +1542,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-2/mca-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>4</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>4</default> </attribute> @@ -1352,6 +1568,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-2/mca-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>5</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>5</default> </attribute> @@ -1375,6 +1595,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-3/mca-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>6</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>6</default> </attribute> @@ -1397,6 +1621,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-3/mca-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>7</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>7</default> </attribute> @@ -1420,6 +1648,10 @@ <default>affinity:sys-0/node-0/proc-0/mcbist-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1442,6 +1674,10 @@ <default>affinity:sys-0/node-0/proc-0/mcbist-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1465,6 +1701,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1487,6 +1727,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1509,6 +1753,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-2</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -1532,6 +1780,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-0/phb-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1555,6 +1807,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-1/phb-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1577,6 +1833,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-1/phb-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -1600,6 +1860,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-2/phb-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -1622,6 +1886,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-2/phb-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>4</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>4</default> </attribute> @@ -1644,6 +1912,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-2/phb-2</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>5</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>5</default> </attribute> @@ -1667,6 +1939,10 @@ <default>affinity:sys-0/node-0/proc-0/obus-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1689,6 +1965,10 @@ <default>affinity:sys-0/node-0/proc-0/obus-3</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -1712,6 +1992,10 @@ <default>affinity:sys-0/node-0/proc-0/nv-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1734,6 +2018,10 @@ <default>affinity:sys-0/node-0/proc-0/nv-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1758,6 +2046,10 @@ <default>affinity:sys-0/node-0/proc-0/ppe-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1776,6 +2068,10 @@ <default>affinity:sys-0/node-0/proc-0/ppe-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1800,6 +2096,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1822,6 +2122,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-2</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -1844,6 +2148,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-3</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -1866,6 +2174,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-4</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>4</default> </attribute> @@ -1888,6 +2200,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-5</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>4</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>5</default> </attribute> @@ -1910,6 +2226,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-6</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>5</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>6</default> </attribute> @@ -1932,6 +2252,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-7</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>6</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>7</default> </attribute> @@ -1954,6 +2278,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-8</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>7</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>8</default> </attribute> @@ -1976,6 +2304,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-9</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>8</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>9</default> </attribute> @@ -1998,6 +2330,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-12</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>9</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>12</default> </attribute> @@ -2020,6 +2356,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-13</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>10</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>13</default> </attribute> @@ -2042,6 +2382,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-14</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>11</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>14</default> </attribute> @@ -2064,6 +2408,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-15</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>12</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>15</default> </attribute> @@ -2086,6 +2434,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-16</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>13</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>16</default> </attribute> @@ -2108,6 +2460,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-17</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>14</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>17</default> </attribute> @@ -2130,6 +2486,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-18</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>15</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>18</default> </attribute> @@ -2152,6 +2512,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-19</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>16</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>19</default> </attribute> @@ -2174,6 +2538,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-20</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>17</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>20</default> </attribute> @@ -2196,6 +2564,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-21</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>18</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>21</default> </attribute> @@ -2218,6 +2590,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-32</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>19</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>32</default> </attribute> @@ -2240,6 +2616,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-33</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>20</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>33</default> </attribute> @@ -2262,6 +2642,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-34</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>21</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>34</default> </attribute> @@ -2284,6 +2668,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-35</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>22</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>35</default> </attribute> @@ -2306,6 +2694,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-36</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>23</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>36</default> </attribute> @@ -2328,6 +2720,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-37</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>24</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>37</default> </attribute> @@ -2350,6 +2746,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-38</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>25</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>38</default> </attribute> @@ -2372,6 +2772,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-39</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>26</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>39</default> </attribute> @@ -2394,6 +2798,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-40</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>27</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>40</default> </attribute> @@ -2416,6 +2824,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-41</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>28</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>41</default> </attribute> @@ -2438,6 +2850,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-42</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>29</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>42</default> </attribute> @@ -2460,6 +2876,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-43</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>30</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>43</default> </attribute> @@ -2482,6 +2902,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-44</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>31</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>44</default> </attribute> @@ -2504,6 +2928,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-45</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>32</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>45</default> </attribute> @@ -2526,6 +2954,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-46</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>33</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>46</default> </attribute> @@ -2548,6 +2980,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-47</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>34</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>47</default> </attribute> @@ -2570,6 +3006,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-48</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>35</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>48</default> </attribute> @@ -2592,6 +3032,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-49</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>36</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>49</default> </attribute> @@ -2614,6 +3058,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-50</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>37</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>50</default> </attribute> @@ -2636,6 +3084,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-51</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>38</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>51</default> </attribute> @@ -2658,6 +3110,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-52</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>39</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>52</default> </attribute> @@ -2680,6 +3136,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-53</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>40</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>53</default> </attribute> @@ -2702,6 +3162,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-54</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>41</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>54</default> </attribute> @@ -2724,6 +3188,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-55</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>42</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>55</default> </attribute> @@ -2744,6 +3212,10 @@ <default>affinity:sys-0/node-0/proc-0/xbus-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -2770,6 +3242,10 @@ <default>affinity:sys-0/node-0/proc-0/xbus-2</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -2797,6 +3273,10 @@ <default>affinity:sys-0/node-0/proc-0/capp-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -2819,6 +3299,10 @@ <default>affinity:sys-0/node-0/proc-0/capp-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -2842,6 +3326,10 @@ <default>affinity:sys-0/node-0/proc-0/sbe-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -2862,6 +3350,10 @@ <default>affinity:sys-0/node-0/proc-0/occ-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>OCC_MASTER_CAPABLE</id> <default>0</default> </attribute> @@ -2880,6 +3372,10 @@ <default>physical:sys-0/node-0/proc-0/nx-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -2901,6 +3397,10 @@ <default>physical:sys-0/node-0/dimm-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-0/mca-0/dimm-0</default> </attribute> @@ -2916,6 +3416,10 @@ <default>physical:sys-0/node-0/dimm-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-0/mca-0/dimm-1</default> </attribute> @@ -2931,6 +3435,10 @@ <default>physical:sys-0/node-0/dimm-2</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-0/mca-0/dimm-2</default> </attribute> @@ -2946,6 +3454,10 @@ <default>physical:sys-0/node-0/dimm-3</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-0/mca-0/dimm-3</default> </attribute> @@ -2961,6 +3473,10 @@ <default>physical:sys-0/node-0/dimm-4</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>4</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-0/mca-1/dimm-0</default> </attribute> @@ -2976,6 +3492,10 @@ <default>physical:sys-0/node-0/dimm-5</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>5</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-0/mca-1/dimm-1</default> </attribute> @@ -2991,6 +3511,10 @@ <default>physical:sys-0/node-0/dimm-6</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>6</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-0/mca-1/dimm-2</default> </attribute> @@ -3006,6 +3530,10 @@ <default>physical:sys-0/node-0/dimm-7</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>7</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-0/mca-1/dimm-3</default> </attribute> @@ -3021,6 +3549,10 @@ <default>physical:sys-0/node-0/dimm-8</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>8</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-1/mca-0/dimm-0</default> </attribute> @@ -3036,6 +3568,10 @@ <default>physical:sys-0/node-0/dimm-9</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>9</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-1/mca-0/dimm-1</default> </attribute> @@ -3051,6 +3587,10 @@ <default>physical:sys-0/node-0/dimm-10</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>10</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-1/mca-0/dimm-2</default> </attribute> @@ -3066,6 +3606,10 @@ <default>physical:sys-0/node-0/dimm-11</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>11</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-1/mca-0/dimm-3</default> </attribute> @@ -3081,6 +3625,10 @@ <default>physical:sys-0/node-0/dimm-12</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>12</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-1/mca-1/dimm-0</default> </attribute> @@ -3096,6 +3644,10 @@ <default>physical:sys-0/node-0/dimm-13</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>13</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-1/mca-1/dimm-1</default> </attribute> @@ -3111,6 +3663,10 @@ <default>physical:sys-0/node-0/dimm-14</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>14</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-1/mca-1/dimm-2</default> </attribute> @@ -3126,6 +3682,9 @@ <default>physical:sys-0/node-0/dimm-15</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>15</default> + </attribute> <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-1/mca-1/dimm-3</default> </attribute> @@ -3141,6 +3700,10 @@ <default>physical:sys-0/node-0/dimm-16</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>16</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-2/mca-0/dimm-0</default> </attribute> @@ -3156,6 +3719,10 @@ <default>physical:sys-0/node-0/dimm-17</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>17</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-2/mca-0/dimm-1</default> </attribute> @@ -3171,6 +3738,10 @@ <default>physical:sys-0/node-0/dimm-18</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>18</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-2/mca-0/dimm-2</default> </attribute> @@ -3186,6 +3757,10 @@ <default>physical:sys-0/node-0/dimm-19</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>19</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-2/mca-0/dimm-3</default> </attribute> @@ -3201,6 +3776,10 @@ <default>physical:sys-0/node-0/dimm-20</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>20</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-2/mca-1/dimm-0</default> </attribute> @@ -3216,6 +3795,10 @@ <default>physical:sys-0/node-0/dimm-21</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>21</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-2/mca-1/dimm-1</default> </attribute> @@ -3231,6 +3814,10 @@ <default>physical:sys-0/node-0/dimm-22</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>22</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-2/mca-1/dimm-2</default> </attribute> @@ -3246,6 +3833,10 @@ <default>physical:sys-0/node-0/dimm-23</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>23</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-2/mca-1/dimm-3</default> </attribute> @@ -3261,6 +3852,10 @@ <default>physical:sys-0/node-0/dimm-24</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>24</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-3/mca-0/dimm-0</default> </attribute> @@ -3276,6 +3871,10 @@ <default>physical:sys-0/node-0/dimm-25</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>25</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-3/mca-0/dimm-1</default> </attribute> @@ -3291,6 +3890,10 @@ <default>physical:sys-0/node-0/dimm-26</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>26</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-3/mca-0/dimm-2</default> </attribute> @@ -3306,6 +3909,10 @@ <default>physical:sys-0/node-0/dimm-27</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>27</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-3/mca-0/dimm-3</default> </attribute> @@ -3321,6 +3928,10 @@ <default>physical:sys-0/node-0/dimm-28</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>28</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-3/mca-1/dimm-0</default> </attribute> @@ -3336,6 +3947,10 @@ <default>physical:sys-0/node-0/dimm-29</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>29</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-3/mca-1/dimm-1</default> </attribute> @@ -3351,6 +3966,10 @@ <default>physical:sys-0/node-0/dimm-30</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>30</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-3/mca-1/dimm-2</default> </attribute> @@ -3366,6 +3985,10 @@ <default>physical:sys-0/node-0/dimm-31</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>31</default> + </attribute> + <attribute> <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0/proc-0/mcs-3/mca-1/dimm-3</default> </attribute> diff --git a/src/usr/targeting/common/xmltohb/target_types_hb.xml b/src/usr/targeting/common/xmltohb/target_types_hb.xml index 1207865f1..05a5cdedf 100755 --- a/src/usr/targeting/common/xmltohb/target_types_hb.xml +++ b/src/usr/targeting/common/xmltohb/target_types_hb.xml @@ -83,6 +83,7 @@ <attribute><id>IPMI_SENSORS</id></attribute> <attribute><id>PART_NUMBER</id></attribute> <attribute><id>SERIAL_NUMBER</id></attribute> + <attribute><id>VPD_SWITCHES</id></attribute> </targetTypeExtension> <targetTypeExtension> @@ -118,6 +119,9 @@ <attribute> <id>PART_NUMBER</id> </attribute> + <attribute> + <id>HBRT_HYP_ID</id> + </attribute> </targetTypeExtension> <targetTypeExtension> @@ -176,12 +180,18 @@ <attribute><id>IPMI_SENSORS</id></attribute> <attribute><id>PART_NUMBER</id></attribute> <attribute><id>SERIAL_NUMBER</id></attribute> + <attribute> + <id>HBRT_HYP_ID</id> + </attribute> </targetTypeExtension> <targetTypeExtension> <id>unit-core-power9</id> <attribute><id>IPMI_SENSORS</id></attribute> <attribute><id>HB_TARGET_SCOMABLE</id></attribute> + <attribute> + <id>HBRT_HYP_ID</id> + </attribute> </targetTypeExtension> <targetTypeExtension> @@ -193,11 +203,6 @@ </targetTypeExtension> <targetTypeExtension> - <id>enc-node-power9</id> - <attribute><id>VPD_SWITCHES</id></attribute> -</targetTypeExtension> - -<targetTypeExtension> <id>lcard-dimm</id> <attribute><id>VPD_SWITCHES</id></attribute> <attribute><id>IPMI_SENSORS</id></attribute> @@ -206,14 +211,6 @@ </targetTypeExtension> <targetTypeExtension> - <id>occ</id> - <attribute> - <id>PSTATE_TABLE</id> - </attribute> - <attribute><id>IPMI_SENSORS</id></attribute> -</targetTypeExtension> - -<targetTypeExtension> <id>unit-mcs-nimbus</id> <attribute><id>HB_TARGET_SCOMABLE</id></attribute> </targetTypeExtension> @@ -224,14 +221,6 @@ </targetType> <targetTypeExtension> - <id>lcard-dimm</id> - <attribute><id>VPD_SWITCHES</id></attribute> - <attribute><id>IPMI_SENSORS</id></attribute> - <attribute><id>PART_NUMBER</id></attribute> - <attribute><id>SERIAL_NUMBER</id></attribute> -</targetTypeExtension> - -<targetTypeExtension> <id>occ</id> <attribute> <id>PSTATE_TABLE</id> @@ -242,41 +231,4 @@ <attribute><id>IPMI_SENSORS</id></attribute> </targetTypeExtension> -<!-- Centaur chip/DMI --> - -<targetTypeExtension> - <id>chip-membuf-centaur</id> - <attribute> - <id>FSI_SCOM_MUTEX</id> - </attribute> - <attribute> - <id>SCOM_IND_MUTEX</id> - </attribute> - <attribute><id>SCAN_MUTEX</id></attribute> - <attribute> - <id>IBSCOM_VIRTUAL_ADDR</id> - </attribute> - <attribute> - <id>IBSCOM_MUTEX</id> - </attribute> - <attribute> - <id>I2C_ENGINE_MUTEX_0</id> - <default>0</default> - </attribute> - <attribute> - <id>I2C_ENGINE_MUTEX_1</id> - <default>0</default> - </attribute> - <attribute> - <id>GPIO_INFO</id> - </attribute> - <attribute><id>VPD_SWITCHES</id></attribute> - <attribute> - <id>ISDIMM_MBVPD_INDEX</id> - </attribute> - <attribute><id>IPMI_SENSORS</id></attribute> - <attribute><id>PART_NUMBER</id></attribute> - <attribute><id>SERIAL_NUMBER</id></attribute> -</targetTypeExtension> - </attributes> diff --git a/src/usr/targeting/common/xmltohb/vbu_NIMBUS.system.xml b/src/usr/targeting/common/xmltohb/vbu_NIMBUS.system.xml index 3dc16b996..6fdea1cd7 100644 --- a/src/usr/targeting/common/xmltohb/vbu_NIMBUS.system.xml +++ b/src/usr/targeting/common/xmltohb/vbu_NIMBUS.system.xml @@ -69,6 +69,10 @@ <default>affinity:sys-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>EXECUTION_PLATFORM</id> <default>1</default> </attribute> @@ -124,6 +128,10 @@ <id>AFFINITY_PATH</id> <default>affinity:sys-0/node-0</default> </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> </targetInstance> <!-- Nimbus n0p0 processor chip --> @@ -149,6 +157,10 @@ <default>affinity:sys-0/node-0/proc-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>FRU_ID</id> <default>1</default> </attribute> @@ -228,6 +240,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -250,6 +266,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -272,6 +292,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -294,6 +318,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -316,6 +344,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>4</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>4</default> </attribute> @@ -338,6 +370,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>5</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>5</default> </attribute> @@ -361,6 +397,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0/ex-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -379,6 +419,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0/ex-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -398,6 +442,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1/ex-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -416,6 +464,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1/ex-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -435,6 +487,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2/ex-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>4</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>4</default> </attribute> @@ -453,6 +509,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2/ex-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>5</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>5</default> </attribute> @@ -472,6 +532,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3/ex-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>6</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>6</default> </attribute> @@ -490,6 +554,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3/ex-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>7</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>7</default> </attribute> @@ -509,6 +577,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4/ex-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>8</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>8</default> </attribute> @@ -527,6 +599,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4/ex-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>9</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>9</default> </attribute> @@ -546,6 +622,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5/ex-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>10</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>10</default> </attribute> @@ -564,6 +644,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5/ex-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>11</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>11</default> </attribute> @@ -583,6 +667,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0/ex-0/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -605,6 +693,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0/ex-0/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -628,6 +720,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0/ex-1/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -650,6 +746,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-0/ex-1/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -673,6 +773,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1/ex-0/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>4</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>4</default> </attribute> @@ -695,6 +799,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1/ex-0/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>5</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>5</default> </attribute> @@ -718,6 +826,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1/ex-1/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>6</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>6</default> </attribute> @@ -740,6 +852,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-1/ex-1/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>7</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>7</default> </attribute> @@ -763,6 +879,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2/ex-0/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>8</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>8</default> </attribute> @@ -785,6 +905,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2/ex-0/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>9</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>9</default> </attribute> @@ -808,6 +932,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2/ex-1/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>10</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>10</default> </attribute> @@ -830,6 +958,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-2/ex-1/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>11</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>11</default> </attribute> @@ -853,6 +985,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3/ex-0/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>12</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>12</default> </attribute> @@ -875,6 +1011,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3/ex-0/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>13</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>13</default> </attribute> @@ -898,6 +1038,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3/ex-1/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>14</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>14</default> </attribute> @@ -920,6 +1064,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-3/ex-1/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>15</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>15</default> </attribute> @@ -943,6 +1091,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4/ex-0/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>16</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>16</default> </attribute> @@ -965,6 +1117,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4/ex-0/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>17</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>17</default> </attribute> @@ -988,6 +1144,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4/ex-1/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>18</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>18</default> </attribute> @@ -1010,6 +1170,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-4/ex-1/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>19</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>19</default> </attribute> @@ -1033,6 +1197,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5/ex-0/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>20</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>20</default> </attribute> @@ -1055,6 +1223,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5/ex-0/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>21</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>21</default> </attribute> @@ -1078,6 +1250,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5/ex-1/core-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>22</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>22</default> </attribute> @@ -1100,6 +1276,10 @@ <default>affinity:sys-0/node-0/proc-0/eq-5/ex-1/core-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>23</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>23</default> </attribute> @@ -1123,6 +1303,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1151,6 +1335,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1179,6 +1367,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-2</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -1207,6 +1399,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-3</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -1236,6 +1432,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-0/mca-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1258,6 +1458,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-0/mca-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1281,6 +1485,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-1/mca-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -1303,6 +1511,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-1/mca-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -1326,6 +1538,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-2/mca-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>4</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>4</default> </attribute> @@ -1348,6 +1564,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-2/mca-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>5</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>5</default> </attribute> @@ -1371,6 +1591,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-3/mca-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>6</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>6</default> </attribute> @@ -1393,6 +1617,10 @@ <default>affinity:sys-0/node-0/proc-0/mcs-3/mca-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>7</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>7</default> </attribute> @@ -1416,6 +1644,10 @@ <default>affinity:sys-0/node-0/proc-0/mcbist-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1438,6 +1670,10 @@ <default>affinity:sys-0/node-0/proc-0/mcbist-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1461,6 +1697,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1483,6 +1723,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1505,6 +1749,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-2</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -1528,6 +1776,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-0/phb-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1551,6 +1803,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-1/phb-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1573,6 +1829,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-1/phb-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -1596,6 +1856,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-2/phb-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -1618,6 +1882,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-2/phb-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>4</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>4</default> </attribute> @@ -1640,6 +1908,10 @@ <default>affinity:sys-0/node-0/proc-0/pec-2/phb-2</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>5</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>5</default> </attribute> @@ -1663,6 +1935,10 @@ <default>affinity:sys-0/node-0/proc-0/obus-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1685,6 +1961,10 @@ <default>affinity:sys-0/node-0/proc-0/obus-3</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -1708,6 +1988,10 @@ <default>affinity:sys-0/node-0/proc-0/nv-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1730,6 +2014,10 @@ <default>affinity:sys-0/node-0/proc-0/nv-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1754,6 +2042,10 @@ <default>affinity:sys-0/node-0/proc-0/ppe-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -1772,6 +2064,10 @@ <default>affinity:sys-0/node-0/proc-0/ppe-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1796,6 +2092,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -1818,6 +2118,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-2</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -1840,6 +2144,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-3</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>2</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>3</default> </attribute> @@ -1862,6 +2170,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-4</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>3</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>4</default> </attribute> @@ -1884,6 +2196,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-5</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>4</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>5</default> </attribute> @@ -1906,6 +2222,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-6</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>5</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>6</default> </attribute> @@ -1928,6 +2248,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-7</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>6</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>7</default> </attribute> @@ -1950,6 +2274,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-8</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>7</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>8</default> </attribute> @@ -1972,6 +2300,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-9</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>8</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>9</default> </attribute> @@ -1994,6 +2326,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-12</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>9</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>12</default> </attribute> @@ -2016,6 +2352,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-13</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>10</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>13</default> </attribute> @@ -2038,6 +2378,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-14</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>11</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>14</default> </attribute> @@ -2060,6 +2404,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-15</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>12</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>15</default> </attribute> @@ -2082,6 +2430,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-16</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>13</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>16</default> </attribute> @@ -2104,6 +2456,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-17</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>14</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>17</default> </attribute> @@ -2126,6 +2482,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-18</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>15</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>18</default> </attribute> @@ -2148,6 +2508,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-19</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>16</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>19</default> </attribute> @@ -2170,6 +2534,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-20</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>17</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>20</default> </attribute> @@ -2192,6 +2560,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-21</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>18</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>21</default> </attribute> @@ -2214,6 +2586,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-32</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>19</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>32</default> </attribute> @@ -2236,6 +2612,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-33</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>20</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>33</default> </attribute> @@ -2258,6 +2638,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-34</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>21</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>34</default> </attribute> @@ -2280,6 +2664,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-35</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>22</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>35</default> </attribute> @@ -2302,6 +2690,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-36</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>23</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>36</default> </attribute> @@ -2324,6 +2716,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-37</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>24</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>37</default> </attribute> @@ -2346,6 +2742,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-38</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>25</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>38</default> </attribute> @@ -2368,6 +2768,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-39</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>26</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>39</default> </attribute> @@ -2390,6 +2794,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-40</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>27</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>40</default> </attribute> @@ -2412,6 +2820,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-41</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>28</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>41</default> </attribute> @@ -2434,6 +2846,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-42</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>29</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>42</default> </attribute> @@ -2456,6 +2872,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-43</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>30</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>43</default> </attribute> @@ -2478,6 +2898,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-44</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>31</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>44</default> </attribute> @@ -2500,6 +2924,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-45</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>32</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>45</default> </attribute> @@ -2522,6 +2950,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-46</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>33</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>46</default> </attribute> @@ -2544,6 +2976,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-47</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>34</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>47</default> </attribute> @@ -2566,6 +3002,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-48</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>35</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>48</default> </attribute> @@ -2588,6 +3028,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-49</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>36</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>49</default> </attribute> @@ -2610,6 +3054,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-50</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>37</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>50</default> </attribute> @@ -2632,6 +3080,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-51</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>38</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>51</default> </attribute> @@ -2654,6 +3106,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-52</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>39</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>52</default> </attribute> @@ -2676,6 +3132,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-53</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>40</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>53</default> </attribute> @@ -2698,6 +3158,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-54</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>41</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>54</default> </attribute> @@ -2720,6 +3184,10 @@ <default>affinity:sys-0/node-0/proc-0/perv-55</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>42</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>55</default> </attribute> @@ -2740,6 +3208,10 @@ <default>affinity:sys-0/node-0/proc-0/xbus-1</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>1</default> </attribute> @@ -2766,6 +3238,10 @@ <default>affinity:sys-0/node-0/proc-0/xbus-2</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>1</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>2</default> </attribute> @@ -2790,7 +3266,11 @@ </attribute> <attribute> <id>AFFINITY_PATH</id> - <default>physical:sys-0/node-0/proc-0/capp-0</default> + <default>affinity:sys-0/node-0/proc-0/capp-0</default> + </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>0</default> </attribute> <attribute> <id>CHIP_UNIT</id> @@ -2812,7 +3292,11 @@ </attribute> <attribute> <id>AFFINITY_PATH</id> - <default>physical:sys-0/node-0/proc-0/capp-1</default> + <default>affinity:sys-0/node-0/proc-0/capp-1</default> + </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>1</default> </attribute> <attribute> <id>CHIP_UNIT</id> @@ -2838,6 +3322,10 @@ <default>affinity:sys-0/node-0/proc-0/sbe-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>CHIP_UNIT</id> <default>0</default> </attribute> @@ -2858,9 +3346,35 @@ <default>affinity:sys-0/node-0/proc-0/occ-0</default> </attribute> <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> <id>OCC_MASTER_CAPABLE</id> <default>0</default> </attribute> </targetInstance> +<targetInstance> + <id>sys0node0proc0nx0</id> + <type>unit-nx-power9</type> + <attribute><id>HUID</id><default>0x001E0000</default></attribute> + <attribute> + <id>PHYS_PATH</id> + <default>physical:sys-0/node-0/proc-0/nx-0</default> + </attribute> + <attribute> + <id>AFFINITY_PATH</id> + <default>physical:sys-0/node-0/proc-0/nx-0</default> + </attribute> + <attribute> + <id>ORDINAL_ID</id> + <default>0</default> + </attribute> + <attribute> + <id>CHIP_UNIT</id> + <default>0</default> + </attribute> +</targetInstance> + </attributes> diff --git a/src/usr/targeting/runtime/rt_targeting.C b/src/usr/targeting/runtime/rt_targeting.C index 707be836d..372d2baf4 100644 --- a/src/usr/targeting/runtime/rt_targeting.C +++ b/src/usr/targeting/runtime/rt_targeting.C @@ -35,363 +35,140 @@ #include <targeting/common/trace.H> #include <targeting/common/targreasoncodes.H> #include <arch/pirformat.H> - +#include <runtime/customize_attrs_for_payload.H> #include <runtime/rt_targeting.H> +#include <map> +#include <util/memoize.H> using namespace TARGETING; namespace RT_TARG { -errlHndl_t procRtTargetError(const TARGETING::Target * i_target) +errlHndl_t getRtTarget( + const TARGETING::Target* i_pTarget, + rtChipId_t& o_rtTargetId) { - errlHndl_t err = NULL; - uint32_t huid = get_huid(i_target); - TRACFCOMP(g_trac_targeting,ERR_MRK - "No proc target found for target. huid: %08x", - huid); - /*@ - * @errortype - * @moduleid TARG_RT_GET_RT_TARGET - * @reasoncode TARG_RT_NO_PROC_TARGET - * @userdata1 HUID of the UNIT target - * @devdesc No processor target found for the UNIT - */ - err = - new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_INFORMATIONAL, - TARGETING::TARG_RT_GET_RT_TARGET, - TARGETING::TARG_RT_NO_PROC_TARGET, - huid, - 0, - true); - - ERRORLOG::ErrlUserDetailsTarget(i_target,"Runtime Target"). - addToLog(err); - - return err; -} - - -errlHndl_t getRtTarget(const TARGETING::Target* i_target, - rtChipId_t &o_chipId) -{ - errlHndl_t err = NULL; + errlHndl_t pError = NULL; do { - if(i_target == TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL) + if(i_pTarget == TARGETING::MASTER_PROCESSOR_CHIP_TARGET_SENTINEL) { TARGETING::Target* masterProcChip = NULL; TARGETING::targetService(). masterProcChipTargetHandle(masterProcChip); - - i_target = masterProcChip; + i_pTarget = masterProcChip; } - TARGETING::TYPE target_type = i_target->getAttr<TARGETING::ATTR_TYPE>(); - - if(target_type == TARGETING::TYPE_PROC) - { - uint32_t fabId = - i_target->getAttr<TARGETING::ATTR_FABRIC_GROUP_ID>(); - - uint32_t procPos = - i_target->getAttr<TARGETING::ATTR_FABRIC_CHIP_ID>(); - - o_chipId = PIR_t::createChipId( fabId, procPos ); - } - else if( target_type == TARGETING::TYPE_MEMBUF) + auto hbrtHypId = RUNTIME::HBRT_HYP_ID_UNKNOWN; + if( (!i_pTarget->tryGetAttr<TARGETING::ATTR_HBRT_HYP_ID>(hbrtHypId)) + || (hbrtHypId == RUNTIME::HBRT_HYP_ID_UNKNOWN)) { - //MEMBUF - // 0b1000.0000.0000.0000.0000.0GGG.GCCC.MMMM - // where GGGG is group, CCC is chip, MMMM is memory channel - // - TARGETING::TargetHandleList targetList; - - getParentAffinityTargets(targetList, - i_target, - TARGETING::CLASS_UNIT, - TARGETING::TYPE_MCS); - - if( targetList.empty() ) - { - uint32_t huid = get_huid(i_target); - TRACFCOMP(g_trac_targeting,ERR_MRK - "getRtTarget: No target found for huid: %08x", - huid); - /*@ - * @errortype - * @moduleid TARG_RT_GET_RT_TARGET - * @reasoncode TARG_RT_UNIT_TARGET_NOT_FOUND - * @userdata1 HUID of given MEMBUF target - * @devdesc No MCS target(s) found for the - * given MEMBUF target - */ - err = - new ERRORLOG::ErrlEntry - (ERRORLOG::ERRL_SEV_INFORMATIONAL, - TARGETING::TARG_RT_GET_RT_TARGET, - TARGETING::TARG_RT_UNIT_TARGET_NOT_FOUND, - huid, - 0, - true); - - ERRORLOG::ErrlUserDetailsTarget(i_target,"Runtime Target"). - addToLog(err); - - break; - } - - TARGETING::Target * target = targetList[0]; - uint32_t pos = target->getAttr<TARGETING::ATTR_CHIP_UNIT>(); - - targetList.clear(); - getParentAffinityTargets(targetList, - target, - TARGETING::CLASS_CHIP, - TARGETING::TYPE_PROC); - - if(targetList.empty()) - { - err = procRtTargetError(target); - break; - } - - TARGETING::Target * proc_target = targetList[0]; - - err = getRtTarget(proc_target, o_chipId); - if(err) - { - break; - } - - o_chipId = (o_chipId << MEMBUF_ID_SHIFT); - o_chipId += pos; - o_chipId |= MEMBUF_TYPE; - } - else if(target_type == TARGETING::TYPE_CORE) - { - // CORE - // 0b0100.0000.0000.0000.0000.GGGG.CCCP.PPPP - // GGGG is group, CCC is chip, PPPPP is core - uint32_t pos = i_target->getAttr<TARGETING::ATTR_CHIP_UNIT>(); - - const TARGETING::Target * proc_target = getParentChip(i_target); - if(proc_target == NULL) - { - err = procRtTargetError(i_target); - break; - } - - err = getRtTarget(proc_target, o_chipId); - if(err) - { - break; - } - - o_chipId = PIR_t::createCoreId(o_chipId,pos); - o_chipId |= CORE_TYPE; - } - else - { - uint32_t huid = get_huid(i_target); - TRACFCOMP(g_trac_targeting,ERR_MRK - "Runtime target type %d not supported." - " huid: %08x", - target_type, - huid); + auto huid = get_huid(i_pTarget); + auto targetingTargetType = + i_pTarget->getAttr<TARGETING::ATTR_TYPE>(); + TRACFCOMP(g_trac_targeting, ERR_MRK + "Targeting target type of 0x%08X not supported. " + "HUID: 0x%08X", + targetingTargetType, + huid); /*@ * @errortype - * @moduleid TARG_RT_GET_RT_TARGET - * @reasoncode TARG_RT_TARGET_TYPE_NOT_SUPPORTED - * @userdata1 HUID of the target - * @userdata2 target_type - * @devdesc Target type not supported by HBRT. + * @moduleid TARG_RT_GET_RT_TARGET + * @reasoncode TARG_RT_TARGET_TYPE_NOT_SUPPORTED + * @userdata1 Target's HUID + * @userdata2 target's targeting type + * @devdesc Targeting target's type not supported by runtime + * code */ - err = - new ERRORLOG::ErrlEntry - (ERRORLOG::ERRL_SEV_INFORMATIONAL, - TARGETING::TARG_RT_GET_RT_TARGET, - TARGETING::TARG_RT_TARGET_TYPE_NOT_SUPPORTED, - huid, - target_type, - true); - - ERRORLOG::ErrlUserDetailsTarget(i_target,"Runtime Target"). - addToLog(err); + pError = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_INFORMATIONAL, + TARGETING::TARG_RT_GET_RT_TARGET, + TARGETING::TARG_RT_TARGET_TYPE_NOT_SUPPORTED, + huid, + targetingTargetType, + true); + + ERRORLOG::ErrlUserDetailsTarget(i_pTarget,"Targeting Target"). + addToLog(pError); } + + o_rtTargetId = hbrtHypId; + } while(0); - return err; + return pError; } - -errlHndl_t getHbTarget(rtChipId_t i_rt_chip_id, - TARGETING::Target *& o_target) +/** + * @brief API documentation same as for getHbTarget; this just implements the + * core logic (i.e. called when the memoizer doesn't have a cached answer) + */ +errlHndl_t _getHbTarget( + const rtChipId_t i_rtTargetId, + TARGETING::Target*& o_target) { - errlHndl_t err = NULL; - o_target = NULL; + errlHndl_t pError = NULL; do { - uint64_t idType = i_rt_chip_id & CHIPID_TYPE_MASK; - - if(0 != (idType == MEMBUF_TYPE)) + // Don't even attempt the lookup if the unknown ID is used + TARGETING::TargetHandle_t pTarget = NULL; + if(i_rtTargetId != RUNTIME::HBRT_HYP_ID_UNKNOWN) { - //membuf - uint64_t proc_chip_id = i_rt_chip_id & ~CHIPID_TYPE_MASK; - uint32_t unitPos = proc_chip_id & MEMBUF_ID_MASK; - proc_chip_id >>= MEMBUF_ID_SHIFT; - TARGETING::Target * proc = NULL; - TARGETING::Target * msc = NULL; - - err = getHbTarget(proc_chip_id, proc); - if(err) + for (TARGETING::TargetIterator pIt = + TARGETING::targetService().begin(); + pIt != TARGETING::targetService().end(); + ++pIt) { - break; - } - - PredicateCTM mcsFilter(CLASS_UNIT, TYPE_MCS); - PredicateAttrVal<ATTR_CHIP_UNIT> unitAttr(unitPos); - PredicatePostfixExpr mcsUnitFilter; - mcsUnitFilter.push(&mcsFilter).push(&unitAttr).And(); - - TargetHandleList target_list; - - targetService().getAssociated( target_list, - proc, - TargetService::CHILD_BY_AFFINITY, - TargetService::ALL, - &mcsUnitFilter); - - // should only be one result - if(target_list.size()) - { - msc = target_list[0]; - - target_list.clear(); - - - getChildAffinityTargets( target_list, - msc, - TARGETING::CLASS_CHIP, - TARGETING::TYPE_MEMBUF); - - // should only be one result - if(target_list.size()) + auto rtTargetId = RUNTIME::HBRT_HYP_ID_UNKNOWN; + if( ((*pIt)->tryGetAttr< + TARGETING::ATTR_HBRT_HYP_ID>(rtTargetId)) + && (rtTargetId == i_rtTargetId)) { - o_target = target_list[0]; + pTarget = (*pIt); + break; } } - - if(o_target == NULL) // no mcs and/or membuf found - { - TRACFCOMP(g_trac_targeting,ERR_MRK "getHbTarget: " - "MCS or MEMBUF target not found for chipId %08lx", - i_rt_chip_id); - /*@ - * @errortype - * @moduleid TARGETING::TARG_RT_GET_HB_TARGET - * @reasoncode TARG_RT_UNIT_TARGET_NOT_FOUND - * @userdata1 Runtime chip Id - * @devdesc No MCS or MEMBUF target(s) found for the - * given target - */ - err = - new ERRORLOG::ErrlEntry - (ERRORLOG::ERRL_SEV_INFORMATIONAL, - TARGETING::TARG_RT_GET_HB_TARGET, - TARGETING::TARG_RT_UNIT_TARGET_NOT_FOUND, - i_rt_chip_id, - 0, - true); - } - - } - else if(0 != (idType == CORE_TYPE)) - { - uint64_t core_id = i_rt_chip_id & ~CHIPID_TYPE_MASK; - uint32_t unitPos = PIR_t::coreFromCoreId(core_id); - uint64_t chip_id = PIR_t::chipFromCoreId(core_id); - TARGETING::Target * proc = NULL; - - err = getHbTarget(chip_id, proc); - if(err) - { - break; - } - - PredicateCTM exFilter(CLASS_UNIT, TYPE_CORE); - PredicateAttrVal<ATTR_CHIP_UNIT> unitAttr(unitPos); - PredicatePostfixExpr exUnitFilter; - exUnitFilter.push(&exFilter).push(&unitAttr).And(); - - TargetHandleList target_list; - - targetService().getAssociated( target_list, - proc, - TargetService::CHILD, - TargetService::ALL, - &exUnitFilter); - - //Should only be one result - if(target_list.size()) - { - o_target = target_list[0]; - } - // o_target not found caught below.. } - else if( idType == PROC_TYPE) - { - // assume processor chip - uint32_t fabId = PIR_t::groupFromChipId(i_rt_chip_id); - uint32_t procPos = PIR_t::chipFromChipId(i_rt_chip_id); - - PredicateCTM procFilter(CLASS_CHIP, TYPE_PROC); - PredicateAttrVal<ATTR_FABRIC_GROUP_ID> nodeFilter(fabId); - PredicateAttrVal<ATTR_FABRIC_CHIP_ID> chipFilter(procPos); - - PredicatePostfixExpr theProc, theAttrs; - theAttrs.push(&nodeFilter).push(&chipFilter).And(); - theProc.push(&procFilter).push(&theAttrs).And(); - - TargetRangeFilter procRange(targetService().begin(), - targetService().end(), - &theProc); - if(procRange) - { - o_target = *procRange; - } - } - - if(!err && o_target == NULL) + if(pTarget == NULL) { - TRACFCOMP( g_trac_targeting, - ERR_MRK"Can't find HB target for chipId 0x%lx", - i_rt_chip_id); + TRACFCOMP( g_trac_targeting, ERR_MRK + "Can't find targeting target for runtime target ID of " + "0x%16llX", + i_rtTargetId); /*@ * @errortype * @moduleid TARGETING::TARG_RT_GET_HB_TARGET * @reasoncode TARGETING::TARG_RT_TARGET_TYPE_NOT_SUPPORTED - * @userdata1 runtime procId + * @userdata1 Runtime target ID * @userdata2 0 - * @devdesc Can't find HB Target for chipId provided. + * @devdesc Can't find targeting target for given runtime + * target ID */ - err = - new ERRORLOG::ErrlEntry - ( - ERRORLOG::ERRL_SEV_UNRECOVERABLE, - TARGETING::TARG_RT_GET_HB_TARGET, - TARGETING::TARG_RT_TARGET_TYPE_NOT_SUPPORTED, - i_rt_chip_id, - 0, - true); - + pError = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_UNRECOVERABLE, + TARGETING::TARG_RT_GET_HB_TARGET, + TARGETING::TARG_RT_TARGET_TYPE_NOT_SUPPORTED, + i_rtTargetId, + 0, + true); } + + o_target = pTarget; + } while(0); - return err; + return pError; +} + +errlHndl_t getHbTarget( + const rtChipId_t i_rtTargetId, + TARGETING::Target*& o_target) +{ + return Util::Memoize::memoize(_getHbTarget,i_rtTargetId,o_target); } -}; // namespace +}; // End namespace RT_TARG diff --git a/src/usr/testcore/makefile b/src/usr/testcore/makefile index 328a5bbe7..03def48dd 100644 --- a/src/usr/testcore/makefile +++ b/src/usr/testcore/makefile @@ -5,7 +5,9 @@ # # OpenPOWER HostBoot Project # -# COPYRIGHT International Business Machines Corp. 2011,2014 +# Contributors Listed Below - COPYRIGHT 2011,2016 +# [+] 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. @@ -25,6 +27,7 @@ ROOTPATH = ../../.. SUBDIRS += lib.d SUBDIRS += kernel.d SUBDIRS += rtloader.d +SUBDIRS += memoize.d include ${ROOTPATH}/config.mk diff --git a/src/usr/testcore/memoize/makefile b/src/usr/testcore/memoize/makefile new file mode 100644 index 000000000..4f5b804d1 --- /dev/null +++ b/src/usr/testcore/memoize/makefile @@ -0,0 +1,31 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/usr/testcore/memoize/makefile $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2016 +# [+] 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. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. +# +# IBM_PROLOG_END_TAG + +ROOTPATH = ../../../.. + +MODULE = testmemoize +TESTS = *.H + +include ${ROOTPATH}/config.mk diff --git a/src/usr/testcore/memoize/test_memoize.H b/src/usr/testcore/memoize/test_memoize.H new file mode 100644 index 000000000..d3d9af1bf --- /dev/null +++ b/src/usr/testcore/memoize/test_memoize.H @@ -0,0 +1,210 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/testcore/memoize/test_memoize.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016 */ +/* [+] 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. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ + +#ifndef __TEST_MEMOIZE_H +#define __TEST_MEMOIZE_H + +/** + * @file test_memoize.H + * @brief Tests memoize utility + */ + +#include <cxxtest/TestSuite.H> + +#include <errl/errlmanager.H> +#include <util/memoize.H> +#include <runtime/runtime_reasoncodes.H> + +int g_accesses = 0; + +errlHndl_t _incrementer(int in, int& out) +{ + errlHndl_t pError = NULL; + + g_accesses++; + + if(in > 2) + { + // A junk error log, this combination never occurs elsewhere + pError = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_INFORMATIONAL, + RUNTIME::MOD_CUST_CONF_HBRT_HYP_IDS, + RUNTIME::RT_NO_PROC_TARGET, + 0,0 ); + } + else + { + out = in + 1; + } + + return pError; +} + +errlHndl_t incrementer(int in, int& out) +{ + return Util::Memoize::memoize( + _incrementer,in,out); +} + +class MemoizerTest: public CxxTest::TestSuite +{ + public: + + void testMemoizer(void) + { + TS_TRACE( ENTER_MRK + "testMemoizer> start" ); + + errlHndl_t pError = NULL; + + do { + + int test = 1; + int accesses = g_accesses; + int result = 0; + + // Should get no error + pError = incrementer(test,result); + if(pError) + { + TS_FAIL("testMemoizer> call to memoizer returned error"); + break; + } + + // Should get input + 1 as result + if(result != (test+1)) + { + TS_FAIL("testMemoizer> memoizer did not increment the input"); + break; + } + + // Should register an access + if(g_accesses != (accesses+1)) + { + TS_FAIL("testMemoizer> real function did not dispatch"); + break; + } + + accesses = g_accesses; + test = 1; + result = 0; + // Should be able to repeat same request with no error + pError = incrementer(test,result); + if(pError) + { + TS_FAIL("testMemoizer> call to memoizer returned error"); + break; + } + + // ... and same answer + if(result != (test+1)) + { + TS_FAIL("testMemoizer> memoizer did not increment the input"); + break; + } + + // ... and no additional accesses + if(g_accesses != accesses) + { + TS_FAIL("testMemoizer> real function dispatched unexpectedly"); + break; + } + + accesses = g_accesses; + test = 3; + result = 0; + int origResult = 0; + + // Should get an error as using a bad input value + pError = incrementer(test,result); + if(pError == NULL) + { + TS_FAIL("testMemoizer> call to memoizer did not return error"); + break; + } + + delete pError; + pError = NULL; + + // ... and should register an access + if(g_accesses != (accesses+1)) + { + TS_FAIL("testMemoizer> real function did not dispatch"); + break; + } + + // ... and result should have been left as is + if(result != origResult) + { + TS_FAIL("testMemoizer> memoize changed the output unexpectedly"); + break; + } + + accesses = g_accesses; + test = 3; + result = 0; + origResult = 0; + + // Should be able to make same bad request and get an error + pError = incrementer(test,result); + if(pError == NULL) + { + TS_FAIL("testMemoizer> call to memoizer did not return error"); + break; + } + + delete pError; + pError = NULL; + + // ... and should still register an access (i.e. nothing + // got accidentally cached in error path) + if(g_accesses != (accesses+1)) + { + TS_FAIL("testMemoizer> real function did not dispatch"); + break; + } + + // ... and result should have been left as is + if(result != origResult) + { + TS_FAIL("testMemoizer> memoize changed the output unexpectedly"); + break; + } + + } while(0); + + if(pError) + { + errlCommit(pError,UTIL_COMP_ID); + } + + TS_TRACE( EXIT_MRK + "testMemoizer> finish" ); + } + +}; // End class MemoizerTest + +#endif + |