diff options
author | Dean Sanner <dsanner@us.ibm.com> | 2013-12-11 14:34:00 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-12-13 10:06:06 -0600 |
commit | 92d69174fd9c7738f349346d78b07941b39582d2 (patch) | |
tree | 4e93813c0d5abe3db9c2b5810d7d4b0bcf5dc779 | |
parent | bbbd9786a0a3f535cf8f923eda561f1f0b3ec2b7 (diff) | |
download | talos-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>
-rw-r--r-- | src/usr/dump/dumpCollect.C | 32 | ||||
-rw-r--r-- | src/usr/dump/test/dumptest.H | 11 |
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, |