From b25e9ea38a25fa0de1339e1eeec15071ba332c04 Mon Sep 17 00:00:00 2001 From: Nick Bofferding Date: Fri, 11 Oct 2013 20:39:35 -0500 Subject: Fix multinode rawiterator and CDIMM RID numbering issue - Fixed improper rawiterator derivation from regular iterator - Added CDIMM RID multiplier to MRW parser Change-Id: I37cbc939eebe52da683f5a82eff1e789653afadf RTC: 63940 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/6662 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III --- src/usr/targeting/common/genHwsvMrwXml.pl | 10 ++++++++-- src/usr/targeting/common/iterators/rawtargetiterator.C | 5 +++-- 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'src/usr/targeting') diff --git a/src/usr/targeting/common/genHwsvMrwXml.pl b/src/usr/targeting/common/genHwsvMrwXml.pl index 7bff313b6..0b0f9e734 100755 --- a/src/usr/targeting/common/genHwsvMrwXml.pl +++ b/src/usr/targeting/common/genHwsvMrwXml.pl @@ -685,6 +685,8 @@ use constant BUS_POS_FIELD => 6; use constant BUS_ORDINAL_FIELD => 7; use constant DIMM_POS_FIELD => 8; +use constant CDIMM_RID_NODE_MULTIPLIER => 32; + my @Membuses; foreach my $i (@{$memBus->{'memory-bus'}}) { @@ -1124,7 +1126,9 @@ for my $i ( 0 .. $#STargets ) { die "ERROR. Can't locate Centaur from memory bus table\n"; } - my $relativeCentaurRid = $STargets[$i][PLUG_POS]; + + my $relativeCentaurRid = $STargets[$i][PLUG_POS] + + (CDIMM_RID_NODE_MULTIPLIER * $STargets[$i][NODE_FIELD]); #should note that the $SortedVmem is sorted by node and position and #currently $STargets is also sorted by node and postion. If this ever @@ -2704,7 +2708,9 @@ sub generate_dimm # Adjust offset basedon processor value $vpdRec = ($proc * 64) + $vpdRec; - my $dimmHex=sprintf("0xD0%02X",$relativePos); + my $dimmHex = sprintf("0xD0%02X",$relativePos + + (CDIMM_RID_NODE_MULTIPLIER * ${node})); + print " sys${sys}node${node}dimm$dimm diff --git a/src/usr/targeting/common/iterators/rawtargetiterator.C b/src/usr/targeting/common/iterators/rawtargetiterator.C index 9946a3d0f..a9912ad43 100644 --- a/src/usr/targeting/common/iterators/rawtargetiterator.C +++ b/src/usr/targeting/common/iterators/rawtargetiterator.C @@ -70,9 +70,10 @@ void _TargetRawIterator::advance() // If cursor points to end()/NULL, do nothing. Otherwise, check to see if // it should advance (possibly to NULL) - if(iv_pCurrent != NULL) + if(_TargetIterator::iv_pCurrent != NULL) { - iv_pCurrent = l_targetService.getNextTarget(iv_pCurrent); + _TargetIterator::iv_pCurrent = + l_targetService.getNextTarget(_TargetIterator::iv_pCurrent); } } -- cgit v1.2.1