summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorAdam Muhle <armuhle@us.ibm.com>2011-08-10 16:21:12 -0500
committerADAM R. MUHLE <armuhle@us.ibm.com>2011-08-15 08:53:32 -0500
commitc7b83cbaf5b18e72846e24e26f990babc5b02708 (patch)
treefc9a5e5771c9f08ed89e688d265434a5f0fcdcc9 /src/usr
parent65f04fd6c74f04a3d7b0f11c3f21e634a2b0a9e8 (diff)
downloadtalos-hostboot-c7b83cbaf5b18e72846e24e26f990babc5b02708.tar.gz
talos-hostboot-c7b83cbaf5b18e72846e24e26f990babc5b02708.zip
Move fakePNOR to 5MB, copy fakeext image to sandbox, load fakeext/TOC into phys_mem
Change-Id: Ie9243f22f7afbfd2d3112fa17fe74999467d2dd6 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/251 Tested-by: Jenkins Server Reviewed-by: Douglas R. Gilbert <dgilbert@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/pnor/pnordd.C29
-rw-r--r--src/usr/pnor/pnordd.H2
-rw-r--r--src/usr/pnor/test/pnorddtest.H111
3 files changed, 105 insertions, 37 deletions
diff --git a/src/usr/pnor/pnordd.C b/src/usr/pnor/pnordd.C
index fe4699fbe..ddc760ba3 100644
--- a/src/usr/pnor/pnordd.C
+++ b/src/usr/pnor/pnordd.C
@@ -18,10 +18,11 @@
#include <errl/errlmanager.H>
#include "pnordd.H"
#include <pnor/pnorif.H>
+#include <pnor/pnor_reasoncodes.H>
-#define FAKE_PNOR_START 7*1024*1024
+#define FAKE_PNOR_START 5*1024*1024
#define FAKE_PNOR_END 8*1024*1024
-
+#define FAKE_PNOR_SIZE 3*1024*1024
extern trace_desc_t* g_trac_pnor;
@@ -158,7 +159,7 @@ errlHndl_t PnorDD::read(void* o_buffer,
size_t& io_buflen,
uint64_t i_address)
{
- TRACDCOMP(g_trac_pnor, "PnorDD::read(i_address=0x%llx)> ", i_address);
+ //TRACDCOMP(g_trac_pnor, "PnorDD::read(i_address=0x%llx)> ", i_address);
errlHndl_t l_err = NULL;
do{
@@ -194,7 +195,7 @@ errlHndl_t PnorDD::write(void* i_buffer,
size_t& io_buflen,
uint64_t i_address)
{
- TRACDCOMP(g_trac_pnor, "PnorDD::write(i_address=0x%llx)> ", i_address);
+ //TRACDCOMP(g_trac_pnor, "PnorDD::write(i_address=0x%llx)> ", i_address);
errlHndl_t l_err = NULL;
do{
@@ -272,7 +273,7 @@ PnorDD::PnorDD()
PnorDD::~PnorDD()
{
- //Nothing todo for now
+ //Nothing to do for now
}
errlHndl_t PnorDD::verifyAddressRange(uint64_t i_address,
@@ -282,10 +283,22 @@ errlHndl_t PnorDD::verifyAddressRange(uint64_t i_address,
do{
- if((i_address < FAKE_PNOR_START) ||
- ((i_address+i_length) > FAKE_PNOR_END))
+ if((i_address+i_length) > FAKE_PNOR_SIZE)
{
- //@TODO create errorlog
+ TRACFCOMP( g_trac_pnor, "PnorDD::verifyAddressRange> Invalid Address Requested : i_address=%d", i_address );
+ /*@
+ * @errortype
+ * @moduleid PNOR::MOD_PNORDD_VERIFYADDRESSRANGE
+ * @reasoncode PNOR::RC_INVALID_SECTION
+ * @userdata1 Requested Address
+ * @userdata2 Requested Length
+ * @devdesc PnorDD::verifyAddressRange> Invalid Address requested
+ */
+ l_err = new ERRORLOG::ErrlEntry(ERRORLOG::ERRL_SEV_UNRECOVERABLE,
+ PNOR::MOD_PNORDD_VERIFYADDRESSRANGE,
+ PNOR::RC_INVALID_ADDRESS,
+ TO_UINT64(i_address),
+ TO_UINT64(i_length));
break;
}
diff --git a/src/usr/pnor/pnordd.H b/src/usr/pnor/pnordd.H
index df953e203..ac5453807 100644
--- a/src/usr/pnor/pnordd.H
+++ b/src/usr/pnor/pnordd.H
@@ -17,7 +17,7 @@ enum lscMode
MMRD = 0, /**< Indicates PNOR is in MMRD Mode */
PMWR, /**< Indicates PNOR is in PMWR Mode */
- LAST_MODE = PMWR,
+ LAST_MODE,
};
diff --git a/src/usr/pnor/test/pnorddtest.H b/src/usr/pnor/test/pnorddtest.H
index a60d53efe..1ca7ed190 100644
--- a/src/usr/pnor/test/pnorddtest.H
+++ b/src/usr/pnor/test/pnorddtest.H
@@ -13,7 +13,8 @@
#include <errl/errltypes.H>
#include <pnor/pnorif.H>
#include <devicefw/userif.H>
-//#include "../pnordd.H"
+
+#define BASE_SCRATCH_SPACE 2*1024*1024+1024*512 //2.5MB offset in fake PNOR
extern trace_desc_t* g_trac_pnor;
using namespace TARGETING;
@@ -24,24 +25,26 @@ class PnorDdTest : public CxxTest::TestSuite
public:
/**
- * @brief PNOR DD test #1
+ * @brief PNOR DD readWriteTest
* Write some data to PNOR and read it back again
+ * Using fakePNOR scratch space (2.5 - 3 MB)
*/
- void testPnorDD1(void)
+ void test_readwrite(void)
{
//@TODO: make this table driven so it can test more values
- //@TODO: compare results with expected data.
//@TODO: Add some more interesting tests
TARGETING::Target* l_testTarget = MASTER_PROCESSOR_CHIP_TARGET_SENTINEL;
size_t l_size = sizeof(uint64_t);
errlHndl_t l_err = NULL;
+ uint64_t fails = 0;
+ uint64_t total = 4;
do{
- TS_TRACE("testPnorDD1: starting");
+ TS_TRACE("PnorDdTest::test_readwrite: starting");
// Perform PnorDD Write 1
- uint64_t l_address = 0x100;
+ uint64_t l_address = BASE_SCRATCH_SPACE+0x100;
uint64_t l_writeData = 0x12345678FEEDB0B0;
l_err = deviceWrite(l_testTarget,
&l_writeData,
@@ -49,19 +52,14 @@ class PnorDdTest : public CxxTest::TestSuite
DEVICE_PNOR_ADDRESS(0, l_address));
if (l_err)
{
- TS_FAIL("testPnorDD1: PNORDD write 1: deviceWrite() failed! Error committed.");
+ TS_FAIL("PnorDdTest::test_readwrite: PNORDD write 1: deviceWrite() failed! Error committed.");
+ fails++;
break;
}
- else
- {
- TS_TRACE("testPnorDD1: PNORDD write 1, Address 0x%llx, Data %llx",
- l_address,
- (long long unsigned)l_writeData);
- }
// Perform PnorDD Write 2
- l_address = 0x108;
+ l_address = BASE_SCRATCH_SPACE+0x108;
l_writeData = 0xFEEDBEEF000ABCDE;
l_err = deviceWrite(l_testTarget,
&l_writeData,
@@ -69,18 +67,73 @@ class PnorDdTest : public CxxTest::TestSuite
DEVICE_PNOR_ADDRESS(0, l_address));
if (l_err)
{
- TS_FAIL("testPnorDD1: PNORDD write 2: deviceWrite() failed! Error committed.");
+ TS_FAIL("PnorDdTest::test_readwrite: PNORDD write 2: deviceWrite() failed! Error committed.");
+ fails++;
break;
}
- else
+
+ // Perform PnorDD read 1
+ l_address = BASE_SCRATCH_SPACE+0x100;
+ uint64_t l_readData = 0;
+ l_err = deviceRead(l_testTarget,
+ &l_readData,
+ l_size,
+ DEVICE_PNOR_ADDRESS(0, l_address));
+ if (l_err)
{
- TS_TRACE("testPnorDD1: PNORDD write 2, Address 0x%llx, Data %llx",
- l_address,
- (long long unsigned)l_writeData);
+ TS_FAIL("PnorDdTest::test_readwrite: PNORDD read 1: deviceRead() failed! Error committed.");
+ fails++;
+ break;
+ }
+ else if(l_readData != 0x12345678FEEDB0B0)
+ {
+ TS_FAIL("PnorDdTest::test_readwrite: PNORDD read 1: Read data not expected value. Addr: 0x%llx, ExpData: 0x12345678FEEDB0B0, ActData: 0x%llx",
+ l_address, (long long unsigned)l_readData);
+ fails++;
+ break;
}
- // Perform PnorDD read 1
- l_address = 0x100;
+ // Perform PnorDD read 2
+ l_address = BASE_SCRATCH_SPACE+0x108;
+ l_err = deviceRead(l_testTarget,
+ &l_readData,
+ l_size,
+ DEVICE_PNOR_ADDRESS(0, l_address));
+ if (l_err)
+ {
+ TS_FAIL("PnorDdTest::test_readwrite: PNORDD read 2: deviceRead() failed! Error committed.");
+ break;
+ }
+ else if(l_readData != 0xFEEDBEEF000ABCDE)
+ {
+ TS_FAIL("PnorDdTest::test_readwrite: PNORDD read 2: Read data not expected value. Addr: 0x%llx, ExpData: 0xFEEDBEEF000ABCDE, ActData: 0x%llx",
+ l_address, (long long unsigned)l_readData );
+ fails++;
+ break;
+ }
+
+ }while(0);
+
+
+ TRACFCOMP(g_trac_pnor, "PnorDdTest::test_readwrite> %d/%d fails", fails, total );
+
+ };
+
+
+/*Not really a real test, just using to verify ext image is loading properly.
+Leaving it commented out because the test-case will not dynamically find the extended image based on the TOC
+// void testPnorDD2(void)
+ {
+
+ TARGETING::Target* l_testTarget = MASTER_PROCESSOR_CHIP_TARGET_SENTINEL;
+ size_t l_size = sizeof(uint64_t);
+ errlHndl_t l_err = NULL;
+
+ do{
+ TS_TRACE("testPnorDD2: starting");
+
+ //Read fakeext data
+ uint64_t l_address = 0x690;
uint64_t l_readData = 0;
l_err = deviceRead(l_testTarget,
&l_readData,
@@ -88,34 +141,36 @@ class PnorDdTest : public CxxTest::TestSuite
DEVICE_PNOR_ADDRESS(0, l_address));
if (l_err)
{
- TS_FAIL("testPnorDD1: PNORDD read 1: deviceRead() failed! Error committed.");
+ TS_FAIL("testPnorDD2: PNORDD read fakeext: deviceRead() failed! Error committed.");
break;
}
else
{
- TS_TRACE("testPnorDD1: PNORDD read 1, Address 0x%llx, Data %llx",
+ TS_TRACE("testPnorDD2: PNORDD read fakeext, Address 0x%llx, Data %llx",
l_address,
(long long unsigned)l_readData);
}
- // Perform PnorDD read 2
- l_address = 0x108;
+ //Read fakeext data
+ l_address = 0x698;
+ l_readData = 0;
l_err = deviceRead(l_testTarget,
&l_readData,
l_size,
DEVICE_PNOR_ADDRESS(0, l_address));
if (l_err)
{
- TS_FAIL("testPnorDD1: PNORDD read 2: deviceRead() failed! Error committed.");
+ TS_FAIL("testPnorDD2: PNORDD read fakeext: deviceRead() failed! Error committed.");
break;
}
else
{
- TS_TRACE("testPnorDD1: PNORDD read 2, Address 0x%llx, Data %llx",
+ TS_TRACE("testPnorDD2: PNORDD read fakeext, Address 0x%llx, Data %llx",
l_address,
(long long unsigned)l_readData);
}
+
}while(0);
@@ -123,7 +178,7 @@ class PnorDdTest : public CxxTest::TestSuite
};
-
+*/
};
OpenPOWER on IntegriCloud