summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Crowell <dcrowell@us.ibm.com>2013-07-26 12:34:16 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-08-08 12:54:52 -0500
commit96d2b18667f66fc4997ca354c4098de5ca382625 (patch)
tree0e634f3c4f19be9d555205e8bf1ab81ee0f5adaf
parent40f79321ec4cba34c06586a31209103cec8c87bd (diff)
downloadtalos-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.H1
-rw-r--r--src/usr/dump/test/dumptest.H145
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" );
}
OpenPOWER on IntegriCloud