summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorNick Bofferding <bofferdn@us.ibm.com>2013-10-30 16:41:53 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-11-13 14:40:10 -0600
commit1aa8f7551005dd48078b91be173e8bcc7e339061 (patch)
treea2e4c5deb1a7e51f76eab9d02170e8e7340ec951 /src/usr
parent8ad97ccb3e986b673f040af80bc269b57a6f9341 (diff)
downloadtalos-hostboot-1aa8f7551005dd48078b91be173e8bcc7e339061.tar.gz
talos-hostboot-1aa8f7551005dd48078b91be173e8bcc7e339061.zip
Support cross-node association traversal
- Added specialized abstract pointer format for address translation - Added special decoding for addresses referencing other nodes Change-Id: I31b681a649effb103b8abfa4aefa13f26e76f348 RTC: 88619 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7195 Tested-by: Jenkins Server Reviewed-by: Brian H. Horton <brianh@linux.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/targeting/common/targetservice.C17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/usr/targeting/common/targetservice.C b/src/usr/targeting/common/targetservice.C
index 923b46459..fd95ea9ff 100644
--- a/src/usr/targeting/common/targetservice.C
+++ b/src/usr/targeting/common/targetservice.C
@@ -842,9 +842,20 @@ void TargetService::_getAssociationsViaDfs(
if(TARG_ADDR_TRANSLATION_REQUIRED)
{
- pDestinationTarget = static_cast<Target*>(
- TARG_GET_SINGLETON(TARGETING::theAttrRP).translateAddr(
- pDestinationTarget, i_pSourceTarget));
+ NODE_ID node = (*pDestinationTargetItr).TranslationEncoded.nodeId;
+ if(!node)
+ {
+ pDestinationTarget = static_cast<Target*>(
+ TARG_GET_SINGLETON(TARGETING::theAttrRP).translateAddr(
+ pDestinationTarget, i_pSourceTarget));
+ }
+ else
+ {
+ // Node IDs indexed from 1, so decrement to compensate
+ pDestinationTarget = static_cast<Target*>(
+ TARG_GET_SINGLETON(TARGETING::theAttrRP).translateAddr(
+ pDestinationTarget, --node));
+ }
}
if( (!i_pPredicate)
OpenPOWER on IntegriCloud