summaryrefslogtreecommitdiffstats
path: root/src/usr/dump
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2013-06-19 12:15:05 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-07-02 10:52:52 -0500
commit102dafda92c9a4ae71d461e54ab7d76c74f371ce (patch)
tree935dcaa56009901d3c71ce8c667830f4dfc33e4b /src/usr/dump
parent872b09dc527e6e75e4d08e819e74e28157b1283a (diff)
downloadtalos-hostboot-102dafda92c9a4ae71d461e54ab7d76c74f371ce.tar.gz
talos-hostboot-102dafda92c9a4ae71d461e54ab7d76c74f371ce.zip
Update hdat services to use mm_block_map
Change-Id: I14a307a5ff54685e2ade2e58a45f5134f6782942 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/5088 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/usr/dump')
-rw-r--r--src/usr/dump/dumpCollect.C87
-rw-r--r--src/usr/dump/dumpCollect.H9
-rw-r--r--src/usr/dump/test/dumptest.H197
3 files changed, 133 insertions, 160 deletions
diff --git a/src/usr/dump/dumpCollect.C b/src/usr/dump/dumpCollect.C
index 7f704faef..d7b8014a2 100644
--- a/src/usr/dump/dumpCollect.C
+++ b/src/usr/dump/dumpCollect.C
@@ -51,52 +51,52 @@ namespace DUMP
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
- errlHndl_t doDumpCollect(void)
- {
- TRACFCOMP(g_trac_dump, "doDumpCollect - start ");
+errlHndl_t doDumpCollect(void)
+{
+ TRACFCOMP(g_trac_dump, "doDumpCollect - start ");
- errlHndl_t l_err = NULL;
+ errlHndl_t l_err = NULL;
- // Table Sizes
- uint64_t srcTableSize = 0;
- uint64_t destTableSize = 0;
- uint64_t resultsTableSize = 0;
+ // Table Sizes
+ uint64_t srcTableSize = 0;
+ uint64_t destTableSize = 0;
+ uint64_t resultsTableSize = 0;
- // Dump table struct pointers
- dumpEntry *srcTableEntry = NULL;
- dumpEntry *destTableEntry = NULL;
- resultsEntry *resultsTableEntry = NULL;
+ // Dump table struct pointers
+ dumpEntry *srcTableEntry = NULL;
+ dumpEntry *destTableEntry = NULL;
+ resultsEntry *resultsTableEntry = NULL;
- do
+ do
+ {
+ // Get the Data pointers to the locations we need from HDAT
+ // MS_DUMP_SRC_TBL, < MDST: Memory Dump Source Table
+ // MS_DUMP_DST_TBL, < MDDT: Memory Dump Destination Table
+ // MS_DUMP_RESULTS_TBL, <MDRT:Memory Dump Results Table
+ l_err = getHostDataPtrs(srcTableEntry, srcTableSize,
+ destTableEntry, destTableSize,
+ resultsTableEntry, resultsTableSize);
+
+ if (l_err)
{
- // Get the Data pointers to the locations we need from HDAT
- // MS_DUMP_SRC_TBL, < MDST: Memory Dump Source Table
- // MS_DUMP_DST_TBL, < MDDT: Memory Dump Destination Table
- // MS_DUMP_RESULTS_TBL, <MDRT:Memory Dump Results Table
- l_err = getHostDataPtrs(srcTableEntry, srcTableSize,
- destTableEntry, destTableSize,
- resultsTableEntry, resultsTableSize);
-
- if (l_err)
- {
- TRACFCOMP(g_trac_dump, "doDumpCollect: Got an error back from getHostDataPtrs");
- break;
- }
+ TRACFCOMP(g_trac_dump, "doDumpCollect: Got an error back from getHostDataPtrs");
+ break;
+ }
- l_err = copySrcToDest(srcTableEntry,srcTableSize,
- destTableEntry,destTableSize,
- resultsTableEntry,resultsTableSize);
+ l_err = copySrcToDest(srcTableEntry,srcTableSize,
+ destTableEntry,destTableSize,
+ resultsTableEntry,resultsTableSize);
- if (l_err)
- {
- TRACFCOMP(g_trac_dump, "doDumpCollect: Got an error back from copySrcToDest");
- break;
- }
+ if (l_err)
+ {
+ TRACFCOMP(g_trac_dump, "doDumpCollect: Got an error back from copySrcToDest");
+ break;
+ }
- }while (0);
+ }while (0);
- return (l_err);
- }
+ return (l_err);
+}
///////////////////////////////////////////////////////////////////////////////
@@ -423,7 +423,7 @@ namespace DUMP
// Determine how much to copy..
- sizeToCopy = std::min(bytesLeftInSrc, bytesLeftInDest);
+ sizeToCopy = std::min(bytesLeftInSrc, bytesLeftInDest);
// Do the copy of the data from the source to the destination
mm_tolerate_ue(1);
@@ -537,9 +537,12 @@ namespace DUMP
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
- errlHndl_t getHostDataPtrs(dumpEntry *srcTableEntry, uint64_t &srcTableSize,
- dumpEntry *destTableEntry, uint64_t &destTableSize,
- resultsEntry *resultsTableEntry,uint64_t &resultsTableSize)
+ errlHndl_t getHostDataPtrs(dumpEntry *&srcTableEntry,
+ uint64_t &srcTableSize,
+ dumpEntry *&destTableEntry,
+ uint64_t &destTableSize,
+ resultsEntry *&resultsTableEntry,
+ uint64_t &resultsTableSize)
{
@@ -655,7 +658,7 @@ namespace DUMP
TRACFCOMP(g_trac_dump,
"gethostDataPtrs SrcTableAddr = %.16x, DestTableAddr = %.16X, resultTableAddr = %.16X",
- srcTableAddr, destTableAddr, resultsTableAddr);
+ srcTableAddr, destTableAddr, resultsTableAddr);
}while(0);
diff --git a/src/usr/dump/dumpCollect.H b/src/usr/dump/dumpCollect.H
index 3272c401d..09816848b 100644
--- a/src/usr/dump/dumpCollect.H
+++ b/src/usr/dump/dumpCollect.H
@@ -48,9 +48,12 @@ namespace DUMP
* @return errlHndl_t
*/
- errlHndl_t getHostDataPtrs(dumpEntry *srcTableEntry, uint64_t &srcTableSize,
- dumpEntry *destTableEntry, uint64_t &destTableSize,
- resultsEntry *resultsTableEntry,uint64_t &resultsTableSize);
+ errlHndl_t getHostDataPtrs(dumpEntry *&srcTableEntry,
+ uint64_t &srcTableSize,
+ dumpEntry *&destTableEntry,
+ uint64_t &destTableSize,
+ resultsEntry *&resultsTableEntry,
+ uint64_t &resultsTableSize);
}; // end of namespace
diff --git a/src/usr/dump/test/dumptest.H b/src/usr/dump/test/dumptest.H
index b38f45b0d..58568b8a2 100644
--- a/src/usr/dump/test/dumptest.H
+++ b/src/usr/dump/test/dumptest.H
@@ -41,6 +41,7 @@
#include <sys/mm.h>
#include <dump/dumpif.H>
#include <vfs/vfs.H>
+#include "../dumpCollect.H"
extern trace_desc_t* g_trac_dump;
@@ -91,28 +92,33 @@ class DumpTest: public CxxTest::TestSuite
errlHndl_t l_err = NULL;
- uint64_t srcTableAddr = 0;
uint64_t srcTableSize = 0;
-
- uint64_t dstTableAddr = 0;
uint64_t dstTableSize = 0;
-
- uint64_t resultsTableAddr = 0;
uint64_t resultsTableSize = 0;
- DUMP::dumpEntry *srcTableEntry = NULL;
- DUMP::dumpEntry *destTableEntry = NULL;
- DUMP::resultsEntry *resultsTableEntry = NULL;
+ DUMP::dumpEntry *srcTable = NULL;
+ DUMP::dumpEntry *destTable = NULL;
+ DUMP::resultsEntry *resultsTable = NULL;
// For testing I am using my own data pointers and setting it up
// to look like PHYP would have to test the copy function.
- srcTableAddr = DUMP_TEST_SRC_MEM_ADDR;
- srcTableSize = DUMP_TEST_SRC_MEM_SIZE;
- dstTableAddr = DUMP_TEST_DST_MEM_ADDR;
- dstTableSize = DUMP_TEST_DST_MEM_SIZE;
- resultsTableAddr = DUMP_TEST_RESULTS_MEM_ADDR;
- resultsTableSize = DUMP_TEST_RESULTS_MEM_SIZE;
+ l_err = DUMP::getHostDataPtrs(srcTable, srcTableSize,
+ destTable, dstTableSize,
+ resultsTable, resultsTableSize);
+ if(l_err)
+ {
+ TRACFCOMP(g_trac_dump, "DumpTest:test_DumpCollect> error getting getHostDataPtrs: RC=%X"
+ ,l_err->reasonCode() );
+ TS_FAIL( "DumpTest::CollectDump ERROR : Failed getHostDataPtrs" );
+ errlCommit(l_err,DUMP_COMP_ID);
+ return;
+ }
+ // Point to the location of the src Data pointer.
+ // Point to the location of the dest Data pointer.
+ uint64_t *srcTablePtr = reinterpret_cast<uint64_t *>(srcTable);
+ uint64_t *dstTablePtr = reinterpret_cast<uint64_t *>(destTable);
+ uint64_t *resultTablePtr = reinterpret_cast<uint64_t *>(resultsTable);
uint64_t src_data[8] = {DUMP_TEST_SRC_DATA_AREA, 64, // 450000
DUMP_TEST_SRC_DATA_AREA + 64, 64,
@@ -126,14 +132,6 @@ class DumpTest: public CxxTest::TestSuite
DUMP_TEST_DST_DATA_AREA + 192, 64};
- // Point to the location of the src Data pointer.
- uint64_t *srcTablePtr = reinterpret_cast<uint64_t *>(srcTableAddr);
-
- // Point to the location of the dest Data pointer.
- uint64_t *dstTablePtr = reinterpret_cast<uint64_t *>(dstTableAddr);
-
- uint64_t *resultTablePtr = reinterpret_cast<uint64_t *>(resultsTableAddr);
-
// Put the src addresses defined above into the MDST
memcpy(srcTablePtr, src_data, sizeof(src_data));
@@ -210,15 +208,7 @@ class DumpTest: public CxxTest::TestSuite
index+=2;
}
-
- srcTableEntry = reinterpret_cast<DUMP::dumpEntry *>(srcTableAddr);
- destTableEntry = reinterpret_cast<DUMP::dumpEntry *>(dstTableAddr);
- resultsTableEntry = reinterpret_cast<DUMP::resultsEntry *>(resultsTableAddr);
-
-
- l_err = DUMP::copySrcToDest(srcTableEntry,srcTableSize,
- destTableEntry,dstTableSize,
- resultsTableEntry,resultsTableSize);
+ l_err = DUMP::doDumpCollect();
if( l_err )
{
@@ -309,25 +299,31 @@ class DumpTest: public CxxTest::TestSuite
TRACFCOMP( g_trac_dump, "DumpTest::DumpCollectUnevenDest START" );
errlHndl_t l_err = NULL;
- uint64_t srcTableAddr = 0;
uint64_t srcTableSize = 0;
- uint64_t dstTableAddr = 0;
uint64_t dstTableSize = 0;
- uint64_t resultsTableAddr = 0;
uint64_t resultsTableSize = 0;
- DUMP::dumpEntry *srcTableEntry = NULL;
- DUMP::dumpEntry *destTableEntry = NULL;
- DUMP::resultsEntry *resultsTableEntry = NULL;
+ DUMP::dumpEntry *srcTable = NULL;
+ DUMP::dumpEntry *destTable = NULL;
+ DUMP::resultsEntry *resultsTable = NULL;
- // Setting up TESt version of the MDST, MDDT and MDRT.
- srcTableAddr = DUMP_TEST_SRC_MEM_ADDR;
- srcTableSize = DUMP_TEST_SRC_MEM_SIZE;
- dstTableAddr = DUMP_TEST_DST_MEM_ADDR;
- dstTableSize = DUMP_TEST_DST_MEM_SIZE;
- resultsTableAddr = DUMP_TEST_RESULTS_MEM_ADDR;
- resultsTableSize = DUMP_TEST_RESULTS_MEM_SIZE;
+ // For testing I am using my own data pointers and setting it up
+ // to look like PHYP would have to test the copy function.
+ l_err = DUMP::getHostDataPtrs(srcTable, srcTableSize,
+ destTable, dstTableSize,
+ resultsTable, resultsTableSize);
+ if(l_err)
+ {
+ TRACFCOMP(g_trac_dump, "DumpTest:test_DumpCollect> error getting getHostDataPtrs: RC=%X"
+ ,l_err->reasonCode() );
+ TS_FAIL( "DumpTest::CollectDump ERROR : Failed getHostDataPtrs" );
+ errlCommit(l_err,DUMP_COMP_ID);
+ return;
+ }
+ uint64_t *srcTablePtr = reinterpret_cast<uint64_t *>(srcTable);
+ uint64_t *dstTablePtr = reinterpret_cast<uint64_t *>(destTable);
+ uint64_t *resultTablePtr = reinterpret_cast<uint64_t *>(resultsTable);
uint64_t src_data[8] = {DUMP_TEST_SRC_DATA_AREA+256, 64, // 4500100
DUMP_TEST_SRC_DATA_AREA+256 + 64,64, // 4500140
@@ -339,10 +335,6 @@ class DumpTest: public CxxTest::TestSuite
DUMP_TEST_DST_DATA_AREA+1024 + 96, 32, // 4600480
DUMP_TEST_DST_DATA_AREA+1024+ 128, 128}; // 46004C0
- uint64_t *srcTablePtr = reinterpret_cast<uint64_t *>(srcTableAddr);
- uint64_t *dstTablePtr = reinterpret_cast<uint64_t *>(dstTableAddr);
- uint64_t *resultTablePtr = reinterpret_cast<uint64_t *>(resultsTableAddr);
-
memcpy(srcTablePtr, src_data, sizeof(src_data));
memcpy(dstTablePtr, dst_data, sizeof(dst_data));
@@ -417,15 +409,7 @@ class DumpTest: public CxxTest::TestSuite
index+=2;
}
- srcTableEntry = reinterpret_cast<DUMP::dumpEntry *>(srcTableAddr);
- destTableEntry = reinterpret_cast<DUMP::dumpEntry *>(dstTableAddr);
- resultsTableEntry = reinterpret_cast<DUMP::resultsEntry *>(resultsTableAddr);
-
-
- l_err = DUMP::copySrcToDest(srcTableEntry,srcTableSize,
- destTableEntry,dstTableSize,
- resultsTableEntry,resultsTableSize);
-
+ l_err = DUMP::doDumpCollect();
if( l_err )
{
@@ -612,28 +596,32 @@ class DumpTest: public CxxTest::TestSuite
errlHndl_t l_err = NULL;
- uint64_t srcTableAddr = 0;
uint64_t srcTableSize = 0;
-
- uint64_t dstTableAddr = 0;
uint64_t dstTableSize = 0;
-
- uint64_t resultsTableAddr = 0;
uint64_t resultsTableSize = 0;
-
uint64_t offset = 0;
- DUMP::dumpEntry *srcTableEntry = NULL;
- DUMP::dumpEntry *destTableEntry = NULL;
- DUMP::resultsEntry *resultsTableEntry = NULL;
+ DUMP::dumpEntry *srcTable = NULL;
+ DUMP::dumpEntry *destTable = NULL;
+ DUMP::resultsEntry *resultsTable = NULL;
+
+ // For testing I am using my own data pointers and setting it up
+ // to look like PHYP would have to test the copy function.
+ l_err = DUMP::getHostDataPtrs(srcTable, srcTableSize,
+ destTable, dstTableSize,
+ resultsTable, resultsTableSize);
+ if(l_err)
+ {
+ TRACFCOMP(g_trac_dump, "DumpTest:test_DumpCollect> error getting getHostDataPtrs: RC=%X"
+ ,l_err->reasonCode() );
+ TS_FAIL( "DumpTest::CollectDump ERROR : Failed getHostDataPtrs" );
+ errlCommit(l_err,DUMP_COMP_ID);
+ return;
+ }
- // Setting up TESt version of the MDST, MDDT and MDRT.
- srcTableAddr = DUMP_TEST_SRC_MEM_ADDR;
- srcTableSize = DUMP_TEST_SRC_MEM_SIZE;
- dstTableAddr = DUMP_TEST_DST_MEM_ADDR;
- dstTableSize = DUMP_TEST_DST_MEM_SIZE;
- resultsTableAddr = DUMP_TEST_RESULTS_MEM_ADDR;
- resultsTableSize = DUMP_TEST_RESULTS_MEM_SIZE;
+ uint64_t *srcTablePtr = reinterpret_cast<uint64_t *>(srcTable);
+ uint64_t *dstTablePtr = reinterpret_cast<uint64_t *>(destTable);
+ uint64_t *resultTablePtr = reinterpret_cast<uint64_t *>(resultsTable);
uint64_t src_data[8] = {DUMP_TEST_SRC_DATA_AREA+1024, 16, // 4500400
DUMP_TEST_SRC_DATA_AREA+2048, 48, // 4500800
@@ -646,11 +634,6 @@ class DumpTest: public CxxTest::TestSuite
DUMP_TEST_DST_DATA_AREA+3072, 32, // 4600C00
DUMP_TEST_DST_DATA_AREA+3072+64, 128}; // 4600C40
-
- uint64_t *srcTablePtr = reinterpret_cast<uint64_t *>(srcTableAddr);
- uint64_t *dstTablePtr = reinterpret_cast<uint64_t *>(dstTableAddr);
- uint64_t *resultTablePtr = reinterpret_cast<uint64_t *>(resultsTableAddr);
-
memcpy(srcTablePtr, src_data, sizeof(src_data));
memcpy(dstTablePtr, dst_data, sizeof(dst_data));
@@ -797,15 +780,7 @@ class DumpTest: public CxxTest::TestSuite
}
}while(0);
-
- srcTableEntry = reinterpret_cast<DUMP::dumpEntry *>(srcTableAddr);
- destTableEntry = reinterpret_cast<DUMP::dumpEntry *>(dstTableAddr);
- resultsTableEntry = reinterpret_cast<DUMP::resultsEntry *>(resultsTableAddr);
-
-
- l_err = DUMP::copySrcToDest(srcTableEntry,srcTableSize,
- destTableEntry,dstTableSize,
- resultsTableEntry,resultsTableSize);
+ l_err = DUMP::doDumpCollect();
if( l_err )
{
@@ -1106,26 +1081,30 @@ class DumpTest: public CxxTest::TestSuite
errlHndl_t l_err = NULL;
- uint64_t srcTableAddr = 0;
uint64_t srcTableSize = 0;
-
- uint64_t dstTableAddr = 0;
uint64_t dstTableSize = 0;
-
- uint64_t resultsTableAddr = 0;
uint64_t resultsTableSize = 0;
- DUMP::dumpEntry *srcTableEntry = NULL;
- DUMP::dumpEntry *destTableEntry = NULL;
- DUMP::resultsEntry *resultsTableEntry = NULL;
+ DUMP::dumpEntry *srcTable = NULL;
+ DUMP::dumpEntry *destTable = NULL;
+ DUMP::resultsEntry *resultsTable = NULL;
+
+ // For testing I am using my own data pointers and setting it up
+ // to look like PHYP would have to test the copy function.
+ l_err = DUMP::getHostDataPtrs(srcTable, srcTableSize,
+ destTable, dstTableSize,
+ resultsTable, resultsTableSize);
+ if(l_err)
+ {
+ TRACFCOMP(g_trac_dump, "DumpTest:test_DumpCollect> error getting getHostDataPtrs: RC=%X"
+ ,l_err->reasonCode() );
+ TS_FAIL( "DumpTest::CollectDump ERROR : Failed getHostDataPtrs" );
+ errlCommit(l_err,DUMP_COMP_ID);
+ return;
+ }
- // Test locations of the MDST, MDDT, MDRT
- srcTableAddr = DUMP_TEST_SRC_MEM_ADDR;
- srcTableSize = DUMP_TEST_SRC_MEM_SIZE;
- dstTableAddr = DUMP_TEST_DST_MEM_ADDR;
- dstTableSize = DUMP_TEST_DST_MEM_SIZE;
- resultsTableAddr = DUMP_TEST_RESULTS_MEM_ADDR;
- resultsTableSize = DUMP_TEST_RESULTS_MEM_SIZE;
+ uint64_t *srcTablePtr = reinterpret_cast<uint64_t *>(srcTable);
+ uint64_t *dstTablePtr = reinterpret_cast<uint64_t *>(destTable);
uint64_t src_data[8] = {DUMP_TEST_SRC_DATA_AREA, 64, // 450000
DUMP_TEST_SRC_DATA_AREA + 64, 64,
@@ -1139,12 +1118,6 @@ class DumpTest: public CxxTest::TestSuite
DUMP_TEST_DST_DATA_AREA + 4096 + 192, 32}; // NOTE>> TOO SMALL of a space..
- // Point to the location of the src Data pointer.
- uint64_t *srcTablePtr = reinterpret_cast<uint64_t *>(srcTableAddr);
-
- // Point to the location of the dest Data pointer.
- uint64_t *dstTablePtr = reinterpret_cast<uint64_t *>(dstTableAddr);
-
// Put the src addresses defined above into the MDST
memcpy(srcTablePtr, src_data, sizeof(src_data));
@@ -1224,13 +1197,7 @@ class DumpTest: public CxxTest::TestSuite
errlCommit(l_err,DUMP_COMP_ID);
}
- srcTableEntry = reinterpret_cast<DUMP::dumpEntry *>(srcTableAddr);
- destTableEntry = reinterpret_cast<DUMP::dumpEntry *>(dstTableAddr);
- resultsTableEntry = reinterpret_cast<DUMP::resultsEntry *>(resultsTableAddr);
-
- l_err = DUMP::copySrcToDest(srcTableEntry,srcTableSize,
- destTableEntry,dstTableSize,
- resultsTableEntry,resultsTableSize);
+ l_err = DUMP::doDumpCollect();
// this testcase expects an error returned.
if( l_err )
OpenPOWER on IntegriCloud