diff options
author | Dan Crowell <dcrowell@us.ibm.com> | 2013-07-26 12:34:16 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-08-08 12:54:52 -0500 |
commit | 96d2b18667f66fc4997ca354c4098de5ca382625 (patch) | |
tree | 0e634f3c4f19be9d555205e8bf1ab81ee0f5adaf | |
parent | 40f79321ec4cba34c06586a31209103cec8c87bd (diff) | |
download | talos-hostboot-96d2b18667f66fc4997ca354c4098de5ca382625.tar.gz talos-hostboot-96d2b18667f66fc4997ca354c4098de5ca382625.zip |
Fix MDRT bug in Dump Collection
Change-Id: I9819e05cbf549d820e1a05baa1b1403bbb5b5163
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/5595
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
-rw-r--r-- | src/include/usr/dump/dumpif.H | 1 | ||||
-rw-r--r-- | src/usr/dump/test/dumptest.H | 145 |
2 files changed, 109 insertions, 37 deletions
diff --git a/src/include/usr/dump/dumpif.H b/src/include/usr/dump/dumpif.H index 21d50f677..fe90ff0a2 100644 --- a/src/include/usr/dump/dumpif.H +++ b/src/include/usr/dump/dumpif.H @@ -110,6 +110,7 @@ namespace DUMP uint64_t srcAddr; uint64_t destAddr; uint64_t dataSize; + uint64_t reserved; }; diff --git a/src/usr/dump/test/dumptest.H b/src/usr/dump/test/dumptest.H index 58568b8a2..022fecd64 100644 --- a/src/usr/dump/test/dumptest.H +++ b/src/usr/dump/test/dumptest.H @@ -163,11 +163,22 @@ class DumpTest: public CxxTest::TestSuite // results output data expected - uint64_t result_data[12] = { - DUMP_TEST_SRC_DATA_AREA, DUMP_TEST_DST_DATA_AREA, 64, - DUMP_TEST_SRC_DATA_AREA+64, DUMP_TEST_DST_DATA_AREA+64, 64, - DUMP_TEST_SRC_DATA_AREA+128, DUMP_TEST_DST_DATA_AREA+128, 64, - DUMP_TEST_SRC_DATA_AREA+192, DUMP_TEST_DST_DATA_AREA+192, 64, + uint64_t result_data[] = { + DUMP_TEST_SRC_DATA_AREA, + DUMP_TEST_DST_DATA_AREA, + 64, 0, + + DUMP_TEST_SRC_DATA_AREA+64, + DUMP_TEST_DST_DATA_AREA+64, + 64, 0, + + DUMP_TEST_SRC_DATA_AREA+128, + DUMP_TEST_DST_DATA_AREA+128, + 64, 0, + + DUMP_TEST_SRC_DATA_AREA+192, + DUMP_TEST_DST_DATA_AREA+192, + 64, 0, }; uint64_t *va_mapsrcTableAddr = 0; @@ -275,14 +286,26 @@ class DumpTest: public CxxTest::TestSuite index+=2; } - - // Check the results table. - int result_rc = memcmp(resultTablePtr,result_data,sizeof (result_data)); - - if (result_rc!=0) + // Ensure there is enough space to fit the real results + if( resultsTableSize < sizeof(result_data) ) { - TRACFCOMP(g_trac_dump, "DumpTest::DumpCollect:1 : Results Data mismatch rc = %d", result_rc); - TS_FAIL( "DumpTest::DumpCollect ERROR : Unexpected error data mismatch in results table" ); + TRACFCOMP(g_trac_dump, + "DumpTest::Allocated size (%d) is too small for results (%d)", + resultsTableSize, sizeof(result_data)); + TS_FAIL( "DumpTest::Allocated size is too small for results" ); + } + else + { + // Check the results table. + int result_rc = memcmp( resultTablePtr, + result_data, + sizeof(result_data) ); + + if (result_rc!=0) + { + TRACFCOMP(g_trac_dump, "DumpTest::DumpCollect:1 : Results Data mismatch rc = %d", result_rc); + TS_FAIL( "DumpTest::DumpCollect ERROR : Unexpected error data mismatch in results table" ); + } } TRACFCOMP( g_trac_dump, "DumpTest::DumpCollect COMPLETE" ); @@ -363,12 +386,21 @@ class DumpTest: public CxxTest::TestSuite }; // results output data expected - uint64_t result_data[15] = { - DUMP_TEST_SRC_DATA_AREA+256, DUMP_TEST_DST_DATA_AREA+1024, 64, - DUMP_TEST_SRC_DATA_AREA+256+64, DUMP_TEST_DST_DATA_AREA+1024+64, 32, - DUMP_TEST_SRC_DATA_AREA+256+64+32, DUMP_TEST_DST_DATA_AREA+1024+64+32, 32, - DUMP_TEST_SRC_DATA_AREA+256+128,DUMP_TEST_DST_DATA_AREA+1024+128, 64, - DUMP_TEST_SRC_DATA_AREA+256+192, DUMP_TEST_DST_DATA_AREA+1024+128+64, 64, + uint64_t result_data[] = { + DUMP_TEST_SRC_DATA_AREA+256, + 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+64+32, 32, 0, + + DUMP_TEST_SRC_DATA_AREA+256+128, + DUMP_TEST_DST_DATA_AREA+1024+128, 64, 0, + + DUMP_TEST_SRC_DATA_AREA+256+192, + DUMP_TEST_DST_DATA_AREA+1024+128+64, 64, 0, }; uint64_t *va_mapsrcTableAddr = 0; @@ -569,17 +601,30 @@ class DumpTest: public CxxTest::TestSuite }while(0); - // Check the results table. - int result_rc = memcmp(resultTablePtr,result_data,sizeof (result_data)); - - if (result_rc!=0) + // Ensure there is enough space to fit the real results + if( resultsTableSize < sizeof(result_data) ) { - TRACFCOMP(g_trac_dump, "DumpTest::DumpCollectUnevenDest : Results Data mismatch rc = %d", result_rc); - TS_FAIL( "DumpTest::DumpCollectUnevenDest ERROR : Unexpected error data mismatch in results table" ); + TRACFCOMP(g_trac_dump, + "DumpTest::Allocated size (%d) is too small for results (%d)", + resultsTableSize, sizeof(result_data)); + TS_FAIL( "DumpTest::Allocated size is too small for results" ); + } + else + { + // Check the results table. + int result_rc = memcmp( resultTablePtr, + result_data, + sizeof(result_data) ); + + if (result_rc!=0) + { + TRACFCOMP(g_trac_dump, "DumpTest::DumpCollectUnevenDest : Results Data mismatch rc = %d", result_rc); + TS_FAIL( "DumpTest::DumpCollectUnevenDest ERROR : Unexpected error data mismatch in results table" ); + } } - TRACFCOMP( g_trac_dump, "dumpTest::test_dumpCollectUnevenDest COMPLETE" ); + TRACFCOMP( g_trac_dump, "dumpTest::test_dumpCollectUnevenDest COMPLETE" ); } @@ -661,12 +706,26 @@ class DumpTest: public CxxTest::TestSuite // results output data expected - uint64_t result_data[15] = { - DUMP_TEST_SRC_DATA_AREA+1024, DUMP_TEST_DST_DATA_AREA+2048, 16, - DUMP_TEST_SRC_DATA_AREA+2048, DUMP_TEST_DST_DATA_AREA+2048+16, 48, - DUMP_TEST_SRC_DATA_AREA+3072, DUMP_TEST_DST_DATA_AREA+2048+128, 32, - DUMP_TEST_SRC_DATA_AREA+4096, DUMP_TEST_DST_DATA_AREA+3072, 32, - DUMP_TEST_SRC_DATA_AREA+4096+32, DUMP_TEST_DST_DATA_AREA+3072+64, 128, + uint64_t result_data[] = { + DUMP_TEST_SRC_DATA_AREA+1024, + DUMP_TEST_DST_DATA_AREA+2048, + 16, 0, + + DUMP_TEST_SRC_DATA_AREA+2048, + DUMP_TEST_DST_DATA_AREA+2048+16, + 48, 0, + + DUMP_TEST_SRC_DATA_AREA+3072, + DUMP_TEST_DST_DATA_AREA+2048+128, + 32, 0, + + DUMP_TEST_SRC_DATA_AREA+4096, + DUMP_TEST_DST_DATA_AREA+3072, + 32, 0, + + DUMP_TEST_SRC_DATA_AREA+4096+32, + DUMP_TEST_DST_DATA_AREA+3072+64, + 128, 0, }; do @@ -1052,15 +1111,27 @@ class DumpTest: public CxxTest::TestSuite }while(0); - // Check the results table. - int result_rc = memcmp(resultTablePtr,result_data,sizeof (result_data)); - - if (result_rc!=0) + // Ensure there is enough space to fit the real results + if( resultsTableSize < sizeof(result_data) ) { - TRACFCOMP(g_trac_dump, "DumpTest::DumpCollectUnevenSRC:1 : Results Data mismatch rc = %d", result_rc); - TS_FAIL( "DumpTest::DumpCollectUnevenSrc ERROR : Unexpected error data mismatch in results table" ); + TRACFCOMP(g_trac_dump, + "DumpTest::Allocated size (%d) is too small for results (%d)", + resultsTableSize, sizeof(result_data)); + TS_FAIL( "DumpTest::Allocated size is too small for results" ); } + else + { + // Check the results table. + int result_rc = memcmp( resultTablePtr, + result_data, + sizeof(result_data) ); + if (result_rc!=0) + { + TRACFCOMP(g_trac_dump, "DumpTest::DumpCollectUnevenSRC:1 : Results Data mismatch rc = %d", result_rc); + TS_FAIL( "DumpTest::DumpCollectUnevenSrc ERROR : Unexpected error data mismatch in results table" ); + } + } TRACFCOMP( g_trac_dump, "dumpTest::test_dumpCollectUnevenSrc COMPLETE" ); } |