summaryrefslogtreecommitdiffstats
path: root/src/usr/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/runtime')
-rw-r--r--src/usr/runtime/customize_attrs_for_payload.C32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/usr/runtime/customize_attrs_for_payload.C b/src/usr/runtime/customize_attrs_for_payload.C
index 792392961..909517a68 100644
--- a/src/usr/runtime/customize_attrs_for_payload.C
+++ b/src/usr/runtime/customize_attrs_for_payload.C
@@ -389,7 +389,37 @@ errlHndl_t configureHbrtHypIds(const bool i_configForPhyp)
hbrtHypId =
pEx->getAttr<TARGETING::ATTR_ORDINAL_ID>();
}
- else
+ else if( (*pIt)->getAttr<TARGETING::ATTR_TYPE>()
+ == TARGETING::TYPE_MEMBUF )
+ {
+ //MEMBUF
+ // 0b1000.0000.0000.0000.0000.0PPP.PPPP.MMMM
+ // where PP is the parent proc's id, MMMM is memory channel
+ //
+ TARGETING::TargetHandleList targetList;
+
+ getParentAffinityTargets(targetList,
+ (*pIt),
+ TARGETING::CLASS_UNIT,
+ TARGETING::TYPE_MCS);
+ assert( !targetList.empty() );
+
+ auto mcs_target = targetList[0];
+ auto pos = mcs_target->getAttr<TARGETING::ATTR_CHIP_UNIT>();
+
+ targetList.clear();
+ getParentAffinityTargets(targetList,
+ mcs_target,
+ TARGETING::CLASS_CHIP,
+ TARGETING::TYPE_PROC);
+ assert( !targetList.empty() );
+
+ auto procTarget = targetList[0];
+ hbrtHypId = procTarget->getAttr<TARGETING::ATTR_ORDINAL_ID>();
+ hbrtHypId = (hbrtHypId << RT_TARG::MEMBUF_ID_SHIFT);
+ hbrtHypId += pos;
+ }
+ else // just PROC
{
hbrtHypId = (*pIt)->getAttr<TARGETING::ATTR_ORDINAL_ID>();
}
OpenPOWER on IntegriCloud