summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2013-12-11 14:34:00 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-12-13 10:06:06 -0600
commit92d69174fd9c7738f349346d78b07941b39582d2 (patch)
tree4e93813c0d5abe3db9c2b5810d7d4b0bcf5dc779 /src
parentbbbd9786a0a3f535cf8f923eda561f1f0b3ec2b7 (diff)
downloadtalos-hostboot-92d69174fd9c7738f349346d78b07941b39582d2.tar.gz
talos-hostboot-92d69174fd9c7738f349346d78b07941b39582d2.zip
Fix dumpCollect Algorithm
Change-Id: I8610f85683ccf8910ae42d5bee4979cb3b02b51a CQ:SW238007 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7682 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/usr/dump/dumpCollect.C32
-rw-r--r--src/usr/dump/test/dumptest.H11
2 files changed, 15 insertions, 28 deletions
diff --git a/src/usr/dump/dumpCollect.C b/src/usr/dump/dumpCollect.C
index e295f4991..1d712b719 100644
--- a/src/usr/dump/dumpCollect.C
+++ b/src/usr/dump/dumpCollect.C
@@ -113,8 +113,6 @@ errlHndl_t doDumpCollect(void)
int rc = 0;
bool invalidSrcSize = false;
bool invalidDestSize = false;
- bool l_contiguous = false;
- uint64_t l_prevSrcAddr = 0xFFFFFFFFFFFFFFFF;
uint32_t l_resultCount = 0x0;
// local src table info
@@ -369,18 +367,13 @@ errlHndl_t doDumpCollect(void)
curDestTableAddr = destTableEntry[curDestIndex].dataAddr;
bytesLeftInDest = destTableEntry[curDestIndex].dataSize;
- //check to see if this destination addr is contiguous
- l_contiguous = false;
- if(curDestIndex !=0)
+ //check to see if there are contiguous destination addresses
+ while ((destTableEntry[curDestIndex].dataAddr +
+ destTableEntry[curDestIndex].dataSize) ==
+ destTableEntry[curDestIndex+1].dataAddr)
{
- if(((destTableEntry[curDestIndex-1].dataAddr +
- destTableEntry[curDestIndex-1].dataSize)
- == curDestTableAddr)
- && (l_prevSrcAddr == curSrcTableAddr))
- {
- l_contiguous = true;
-
- }
+ curDestIndex++;
+ bytesLeftInDest +=destTableEntry[curDestIndex].dataSize;
}
// If the current dest addr or the size to copy are zero.
@@ -461,23 +454,12 @@ errlHndl_t doDumpCollect(void)
if (curResultIndex < maxResultEntries)
{
// Update the results table
- if(l_contiguous)
- {
- (resultsTableEntry-1)->dataSize +=sizeToCopy;
- }
- else
- {
resultsTableEntry->srcAddr = curSrcTableAddr;
resultsTableEntry->destAddr = curDestTableAddr;
resultsTableEntry->dataSize = sizeToCopy;
resultsTableEntry++;
l_resultCount++;
curResultIndex++;
- if (curResultIndex < maxResultEntries)
- {
- resultsTableEntry->dataSize = 0x0;
- }
- }
}
else
{
@@ -515,8 +497,6 @@ errlHndl_t doDumpCollect(void)
curDestTableAddr += sizeToCopy;
vaSrcTableAddr += addrOffset;
vaDestTableAddr += addrOffset;
- l_prevSrcAddr = curSrcTableAddr; //src address last used
-
} // end of while loop
diff --git a/src/usr/dump/test/dumptest.H b/src/usr/dump/test/dumptest.H
index fbd4523aa..edf9a37aa 100644
--- a/src/usr/dump/test/dumptest.H
+++ b/src/usr/dump/test/dumptest.H
@@ -166,7 +166,11 @@ class DumpTest: public CxxTest::TestSuite
uint64_t result_data[] = {
DUMP_TEST_SRC_DATA_AREA,
DUMP_TEST_DST_DATA_AREA,
- 64 *2, 0,
+ 64, 0,
+
+ DUMP_TEST_SRC_DATA_AREA +64,
+ DUMP_TEST_DST_DATA_AREA +64,
+ 64, 0,
DUMP_TEST_SRC_DATA_AREA+192,
DUMP_TEST_DST_DATA_AREA+256,
@@ -386,7 +390,10 @@ class DumpTest: public CxxTest::TestSuite
// results output data expected
uint64_t result_data[] = {
DUMP_TEST_SRC_DATA_AREA+256,
- DUMP_TEST_DST_DATA_AREA+1024, 96, 0,
+ DUMP_TEST_DST_DATA_AREA+1024, 64, 0,
+
+ DUMP_TEST_SRC_DATA_AREA+256+64,
+ DUMP_TEST_DST_DATA_AREA+1024+64, 32, 0,
DUMP_TEST_SRC_DATA_AREA+256+64+32,
DUMP_TEST_DST_DATA_AREA+1024+256, 32, 0,
OpenPOWER on IntegriCloud