summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Muhle <armuhle@us.ibm.com>2012-08-17 13:51:12 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2012-09-07 10:28:52 -0500
commite859413ac33a2fb410c83cc8af4bf755181791e9 (patch)
tree85eeb14553a459f99bdaa3bfb61b8323d8de08da /src
parente11fc0f4d161de3c24452ec3de9f023d60742181 (diff)
downloadtalos-hostboot-e859413ac33a2fb410c83cc8af4bf755181791e9.tar.gz
talos-hostboot-e859413ac33a2fb410c83cc8af4bf755181791e9.zip
Re-enable PNORDD fake-pnor test cases
Setup fake-pnor related test cases to malloc memory and treat as fake-pnor. This allows testing fake-pnor without requiring a reserved chunk of L3 to use as fake-pnor space. Change-Id: I24d7176b8ae7ff57839b1f5349be86d7d239ee58 RTC: 44938 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/1557 Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src')
-rwxr-xr-xsrc/build/mkrules/hbfw/img/makefile2
-rw-r--r--src/usr/pnor/pnordd.C151
-rw-r--r--src/usr/pnor/pnordd.H91
-rw-r--r--src/usr/pnor/test/pnorddtest.H232
4 files changed, 325 insertions, 151 deletions
diff --git a/src/build/mkrules/hbfw/img/makefile b/src/build/mkrules/hbfw/img/makefile
index 1fef2c866..4744085b6 100755
--- a/src/build/mkrules/hbfw/img/makefile
+++ b/src/build/mkrules/hbfw/img/makefile
@@ -100,7 +100,7 @@ BUILD_SPECIFIC_IMAGE: .SPECTARG ${IMAGE_TARGET}
${IMAGE_TARGET}: ${IMAGE_LAYOUT} ${IMAGE_BINS} ${PNOR_BUILD_SCRIPT}
${PNOR_BUILD_SCRIPT} --pnorOutBin ${IMAGE_TARGET} \
- --pnorLayout ${IMAGE_LAYOUT} \
+ ${TARGET_TEST:b--test} --pnorLayout ${IMAGE_LAYOUT} \
${IMAGE_BIN_OPTION} --ffsCmd "${FFSCMD}"
.endif
diff --git a/src/usr/pnor/pnordd.C b/src/usr/pnor/pnordd.C
index cf9b12134..62982163a 100644
--- a/src/usr/pnor/pnordd.C
+++ b/src/usr/pnor/pnordd.C
@@ -1,26 +1,25 @@
-/* IBM_PROLOG_BEGIN_TAG
- * This is an automatically generated prolog.
- *
- * $Source: src/usr/pnor/pnordd.C $
- *
- * IBM CONFIDENTIAL
- *
- * COPYRIGHT International Business Machines Corp. 2011-2012
- *
- * p1
- *
- * Object Code Only (OCO) source materials
- * Licensed Internal Code Source Materials
- * IBM HostBoot Licensed Internal Code
- *
- * The source code for this program is not published or other-
- * wise divested of its trade secrets, irrespective of what has
- * been deposited with the U.S. Copyright Office.
- *
- * Origin: 30
- *
- * IBM_PROLOG_END_TAG
- */
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/pnor/pnordd.C $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2011,2012 */
+/* */
+/* p1 */
+/* */
+/* Object Code Only (OCO) source materials */
+/* Licensed Internal Code Source Materials */
+/* IBM HostBoot Licensed Internal Code */
+/* */
+/* The source code for this program is not published or otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
/**
* @file pnordd.C
*
@@ -47,11 +46,6 @@
// Uncomment this to enable smart writing
//#define SMART_WRITE
-// These are used to cheat and use a chunk of our cache as a PNOR
-// iv_mode == MODEL_MEMCPY,MODEL_LPC_MEM
-void write_fake_pnor( uint64_t i_pnorAddr, void* i_buffer, size_t i_size );
-void read_fake_pnor( uint64_t i_pnorAddr, void* o_buffer, size_t i_size );
-void erase_fake_pnor( uint64_t i_pnorAddr, size_t i_size );
extern trace_desc_t* g_trac_pnor;
@@ -338,10 +332,22 @@ errlHndl_t PnorDD::writeFlash(void* i_buffer,
********************/
mutex_t PnorDD::cv_mutex = MUTEX_INITIALIZER;
uint64_t PnorDD::iv_vpoMode = 0;
+
+//
+// @note fake pnor is moved up and shrunk by 1/2 meg to make room for
+// the SLW image, it must be at a 1 M boundary.
+// See build_winkle_images for more info.
+//
+#define FAKE_PNOR_START 4*MEGABYTE+512*KILOBYTE
+#define FAKE_PNOR_END 8*MEGABYTE
+#define FAKE_PNOR_SIZE 3*MEGABYTE+512*KILOBYTE
+
/**
* @brief Constructor
*/
-PnorDD::PnorDD( PnorMode_t i_mode )
+PnorDD::PnorDD( PnorMode_t i_mode,
+ uint64_t i_fakeStart,
+ uint64_t i_fakeSize )
: iv_mode(i_mode)
{
iv_erasesize_bytes = ERASESIZE_BYTES_DEFAULT;
@@ -375,6 +381,14 @@ PnorDD::PnorDD( PnorMode_t i_mode )
}
}
+ if( (MODEL_MEMCPY == iv_mode) ||
+ (MODEL_LPC_MEM == iv_mode) )
+ {
+ //Only use input fake values if they are != zero
+ iv_fakeStart = (i_fakeStart != 0) ? i_fakeStart : FAKE_PNOR_START;
+ iv_fakeSize = (i_fakeSize != 0) ? i_fakeSize : FAKE_PNOR_SIZE;
+ }
+
if( (MODEL_REAL_CMD == iv_mode) ||
(MODEL_REAL_MMIO == iv_mode) )
{
@@ -1413,40 +1427,73 @@ errlHndl_t PnorDD::eraseFlash(uint32_t i_address)
/*
This code is used in the MODEL_MEMCPY and MODEL_LPC_MEM modes
*/
-
-//
-// @note fake pnor is moved up and shrunk by 1/2 meg to make room for
-// the SLW image, it must be at a 1 M boundary.
-// See build_winkle_images for more info.
-//
-#define FAKE_PNOR_START 4*MEGABYTE+512*KILOBYTE
-#define FAKE_PNOR_END 8*MEGABYTE
-#define FAKE_PNOR_SIZE 3*MEGABYTE+512*KILOBYTE
-
-
-void write_fake_pnor( uint64_t i_pnorAddr, void* i_buffer, size_t i_size )
+/**
+ * @brief Write to fake PNOR
+ */
+void PnorDD::write_fake_pnor( uint64_t i_pnorAddr,
+ void* i_buffer,
+ size_t i_size )
{
//create a pointer to the offset start.
- char * destPtr = (char *)(FAKE_PNOR_START+i_pnorAddr);
+ char * destPtr = (char *)(iv_fakeStart+i_pnorAddr);
- //copy data from memory into the buffer.
- memcpy(destPtr, i_buffer, i_size);
+ if( (i_pnorAddr+i_size) > iv_fakeSize )
+ {
+ TRACFCOMP(g_trac_pnor,
+ "PnorDD write_fake_pnor> Write goes past end of fake-PNOR, skipping write. i_pnorAddr=0x%X, i_size=0x%X",
+ i_pnorAddr, i_size );
+ }
+ else
+ {
+ //copy data from memory into the buffer.
+ memcpy(destPtr, i_buffer, i_size);
+ }
}
-void read_fake_pnor( uint64_t i_pnorAddr, void* o_buffer, size_t i_size )
+
+/**
+ * @brief Read from fake PNOR
+ */
+void PnorDD::read_fake_pnor( uint64_t i_pnorAddr,
+ void* o_buffer,
+ size_t i_size )
{
//create a pointer to the offset start.
- char * srcPtr = (char *)(FAKE_PNOR_START+i_pnorAddr);
+ char * srcPtr = (char *)(iv_fakeStart+i_pnorAddr);
+
+ if( (i_pnorAddr+i_size) > iv_fakeSize )
+ {
+ TRACFCOMP(g_trac_pnor,
+ "PnorDD read_fake_pnor> Read goes past end of fake-PNOR, skipping read. i_pnorAddr=0x%X, i_size=0x%X",
+ i_pnorAddr, i_size );
+ }
+ else
+ {
+ //copy data from memory into the buffer.
+ memcpy(o_buffer, srcPtr, i_size);
+ }
- //copy data from memory into the buffer.
- memcpy(o_buffer, srcPtr, i_size);
}
-void erase_fake_pnor( uint64_t i_pnorAddr, size_t i_size )
+
+/**
+ * @brief Erase chunk of fake PNOR
+ */
+void PnorDD::erase_fake_pnor( uint64_t i_pnorAddr,
+ size_t i_size )
{
//create a pointer to the offset start.
- char * srcPtr = (char *)(FAKE_PNOR_START+i_pnorAddr);
+ char * srcPtr = (char *)(iv_fakeStart+i_pnorAddr);
- //copy data from memory into the buffer.
- memset( srcPtr, 0, i_size );
+ if( (i_pnorAddr+i_size) > iv_fakeSize )
+ {
+ TRACFCOMP(g_trac_pnor,
+ "PnorDD erase_fake_pnor> Erase goes past end of fake-PNOR, skipping erase. i_pnorAddr=0x%X, i_size=0x%X",
+ i_pnorAddr, i_size );
+ }
+ else
+ {
+ //Zero out memory
+ memset( srcPtr, 0, i_size );
+ }
}
diff --git a/src/usr/pnor/pnordd.H b/src/usr/pnor/pnordd.H
index 9e6ef64ea..c2f1589a1 100644
--- a/src/usr/pnor/pnordd.H
+++ b/src/usr/pnor/pnordd.H
@@ -1,26 +1,25 @@
-/* IBM_PROLOG_BEGIN_TAG
- * This is an automatically generated prolog.
- *
- * $Source: src/usr/pnor/pnordd.H $
- *
- * IBM CONFIDENTIAL
- *
- * COPYRIGHT International Business Machines Corp. 2011-2012
- *
- * p1
- *
- * Object Code Only (OCO) source materials
- * Licensed Internal Code Source Materials
- * IBM HostBoot Licensed Internal Code
- *
- * The source code for this program is not published or other-
- * wise divested of its trade secrets, irrespective of what has
- * been deposited with the U.S. Copyright Office.
- *
- * Origin: 30
- *
- * IBM_PROLOG_END_TAG
- */
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/pnor/pnordd.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2011,2012 */
+/* */
+/* p1 */
+/* */
+/* Object Code Only (OCO) source materials */
+/* Licensed Internal Code Source Materials */
+/* IBM HostBoot Licensed Internal Code */
+/* */
+/* The source code for this program is not published or otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
#ifndef __PNOR_PNORDD_H
#define __PNOR_PNORDD_H
@@ -84,7 +83,9 @@ class PnorDD
/**
* @brief Constructor
*/
- PnorDD( PnorMode_t i_mode = MODEL_UNKNOWN );
+ PnorDD( PnorMode_t i_mode = MODEL_UNKNOWN,
+ uint64_t i_fakeStart = 0,
+ uint64_t i_fakeSize = 0);
/**
@@ -451,6 +452,37 @@ class PnorDD
return blocks;
};
+ // These are used to cheat and use a chunk of our cache as a PNOR
+ // iv_mode == MODEL_MEMCPY,MODEL_LPC_MEM
+ /**
+ * @brief write to fake PNOR
+ *
+ * @parm i_pnorAddr Offset into fake PNOR
+ * @parm i_buffer Buffer of data to write
+ * @param i_size Amount to write.
+ */
+ void write_fake_pnor( uint64_t i_pnorAddr,
+ void* i_buffer, size_t i_size );
+
+ /**
+ * @brief Read from fake PNOR
+ *
+ * @parm i_pnorAddr Offset into fake PNOR
+ * @parm i_buffer Buffer to return read data
+ * @param i_size Amount to read.
+ */
+ void read_fake_pnor( uint64_t i_pnorAddr,
+ void* o_buffer,
+ size_t i_size );
+
+ /**
+ * @brief Erase fake PNOR
+ *
+ * @parm i_pnorAddr Offset to start erase
+ * @param i_size Amount to erase.
+ */
+ void erase_fake_pnor( uint64_t i_pnorAddr,
+ size_t i_size );
/**
* @brief ECCB Control Register Layout
@@ -538,6 +570,17 @@ class PnorDD
*/
static bool cv_sfcInitDone;
+ /**
+ * @brief Start of Fake PNOR address range..
+ *
+ */
+ uint64_t iv_fakeStart;
+
+ /**
+ * @brief Size of Fake PNOR address range..
+ *
+ */
+ uint64_t iv_fakeSize;
// Needed for testcases
friend class PnorDdTest;
diff --git a/src/usr/pnor/test/pnorddtest.H b/src/usr/pnor/test/pnorddtest.H
index f0775959a..eccb24dd4 100644
--- a/src/usr/pnor/test/pnorddtest.H
+++ b/src/usr/pnor/test/pnorddtest.H
@@ -1,26 +1,25 @@
-/* IBM_PROLOG_BEGIN_TAG
- * This is an automatically generated prolog.
- *
- * $Source: src/usr/pnor/test/pnorddtest.H $
- *
- * IBM CONFIDENTIAL
- *
- * COPYRIGHT International Business Machines Corp. 2011-2012
- *
- * p1
- *
- * Object Code Only (OCO) source materials
- * Licensed Internal Code Source Materials
- * IBM HostBoot Licensed Internal Code
- *
- * The source code for this program is not published or other-
- * wise divested of its trade secrets, irrespective of what has
- * been deposited with the U.S. Copyright Office.
- *
- * Origin: 30
- *
- * IBM_PROLOG_END_TAG
- */
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/pnor/test/pnorddtest.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2011,2012 */
+/* */
+/* p1 */
+/* */
+/* Object Code Only (OCO) source materials */
+/* Licensed Internal Code Source Materials */
+/* IBM HostBoot Licensed Internal Code */
+/* */
+/* The source code for this program is not published or otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
#ifndef __PNORDDTEST_H
#define __PNORDDTEST_H
@@ -454,26 +453,21 @@ class PnorDdTest : public CxxTest::TestSuite
void test_readwrite_modes(void)
{
PnorDD* pnordd = NULL;
+ uint8_t* fake_space = NULL;
size_t l_size = sizeof(uint64_t);
errlHndl_t l_err = NULL;
uint64_t fails = 0;
uint64_t total = 0;
+ uint64_t scratch_space = 0;
+ uint64_t sect_size = 0;
do{
TS_TRACE("PnorDdTest::test_readwrite_modes: starting");
- uint64_t base_address;
- uint64_t sect_size;
- if(!getTestSection(base_address, sect_size))
- {
- TRACFCOMP(g_trac_pnor, "PnorDdTest::test_readwrite_modes> Skipped due to not finding test section in PNOR" );
- break;
- }
-
// list of all modes to test
std::list<PnorDD::PnorMode_t> supported_modes;
- //supported_modes.push_back(PnorDD::MODEL_MEMCPY); (Enable with RTC: 44938)
- //supported_modes.push_back(PnorDD::MODEL_LPC_MEM); (Enable with RTC: 44938)
+ supported_modes.push_back(PnorDD::MODEL_MEMCPY);
+ supported_modes.push_back(PnorDD::MODEL_LPC_MEM);
if(!TARGETING::is_vpo())
{
@@ -482,21 +476,49 @@ class PnorDdTest : public CxxTest::TestSuite
supported_modes.push_back(PnorDD::MODEL_REAL_MMIO);
}
- uint64_t scratch_space = base_address;
-
// loop through all of the supported modes
for( std::list<PnorDD::PnorMode_t>::iterator m
= supported_modes.begin();
m != supported_modes.end();
++m )
- {
- scratch_space += 0x100;
-
+ {
if( pnordd )
{
delete pnordd;
}
- pnordd = new PnorDD(*m);
+
+ //Fake PNOR
+ if( (PnorDD::MODEL_MEMCPY == *m) ||
+ (PnorDD::MODEL_LPC_MEM == *m) )
+ {
+ //malloc some space to use as fake-PNOR
+ if( fake_space )
+ {
+ delete fake_space;
+ }
+ fake_space = new uint8_t[4 * KILOBYTE];
+ pnordd = new PnorDD(*m,
+ reinterpret_cast<uint64_t>(fake_space),
+ (4 * KILOBYTE));
+ //Adjusting the address by an arbitrary multiplier to keep
+ //successive tests from always using the same memory space.
+ scratch_space = (*m)*0x20;
+ }
+ //Real PNOR
+ else
+ {
+ pnordd = new PnorDD(*m);
+
+ if(!getTestSection(scratch_space, sect_size))
+ {
+ TRACFCOMP(g_trac_pnor,
+ "PnorDdTest::test_readwrite_modes> Skipped due to not finding test section in PNOR" );
+ continue;
+ }
+ //Adjusting the address by an arbitrary multiplier to keep
+ //successive tests from always using the same memory space.
+ scratch_space += (*m)*0x20;
+ }
// Perform PnorDD Write 1
uint64_t l_address = scratch_space;
@@ -613,6 +635,11 @@ class PnorDdTest : public CxxTest::TestSuite
{
delete pnordd;
}
+ if( fake_space )
+ {
+ delete fake_space;
+ }
+
}
/**
@@ -622,26 +649,21 @@ class PnorDdTest : public CxxTest::TestSuite
void test_smartwrite_modes(void)
{
PnorDD* pnordd = NULL;
+ uint8_t* fake_space = NULL;
size_t l_size = sizeof(uint64_t);
errlHndl_t l_err = NULL;
uint64_t fails = 0;
uint64_t total = 0;
+ uint64_t scratch_space = 0;
+ uint64_t sect_size = 0;
do{
TS_TRACE("PnorDdTest::test_smartwrite_modes: starting");
- uint64_t base_address;
- uint64_t sect_size;
- if(!getTestSection(base_address, sect_size))
- {
- TRACFCOMP(g_trac_pnor, "PnorDdTest::test_smartwrite_modes> Skipped due to not finding test section in PNOR" );
- break;
- }
-
// list of all modes to test
std::list<PnorDD::PnorMode_t> supported_modes;
- //supported_modes.push_back(PnorDD::MODEL_MEMCPY); (Enable with RTC: 44938)
- //supported_modes.push_back(PnorDD::MODEL_LPC_MEM); (Enable with RTC: 44938)
+ supported_modes.push_back(PnorDD::MODEL_MEMCPY);
+ supported_modes.push_back(PnorDD::MODEL_LPC_MEM);
if(!TARGETING::is_vpo())
{
@@ -650,21 +672,51 @@ class PnorDdTest : public CxxTest::TestSuite
supported_modes.push_back(PnorDD::MODEL_REAL_MMIO);
}
- uint64_t scratch_space = base_address;
-
// loop through all of the supported modes
for( std::list<PnorDD::PnorMode_t>::iterator m
= supported_modes.begin();
m != supported_modes.end();
++m )
{
- scratch_space += 0x100;
-
if( pnordd )
{
delete pnordd;
}
- pnordd = new PnorDD(*m);
+
+ //Fake PNOR
+ if( (PnorDD::MODEL_MEMCPY == *m) ||
+ (PnorDD::MODEL_LPC_MEM == *m) )
+ {
+ //malloc some space to use as fake-PNOR
+ if( fake_space )
+ {
+ delete fake_space;
+ }
+ fake_space = new uint8_t[4 * KILOBYTE];
+ pnordd = new PnorDD(*m,
+ reinterpret_cast<uint64_t>(fake_space),
+ (4 * KILOBYTE));
+
+ //Adjusting the address by an arbitrary multiplier to keep
+ //successive tests from always using the same memory space.
+ scratch_space = (*m)*0x30;
+
+ }
+ //Real PNOR
+ else
+ {
+ pnordd = new PnorDD(*m);
+
+ if(!getTestSection(scratch_space, sect_size))
+ {
+ TRACFCOMP(g_trac_pnor,
+ "PnorDdTest::test_readwrite_modes> Skipped due to not finding test section in PNOR" );
+ continue;
+ }
+ //Adjusting the address by an arbitrary multiplier to keep
+ //successive tests from always using the same memory space.
+ scratch_space += (*m)*0x30;
+ }
// Perform PnorDD Write 1
uint64_t l_address = scratch_space+0x20;
@@ -773,6 +825,10 @@ class PnorDdTest : public CxxTest::TestSuite
{
delete pnordd;
}
+ if( fake_space )
+ {
+ delete fake_space;
+ }
TRACFCOMP(g_trac_pnor, "PnorDdTest::test_smartwrite> %d/%d fails", fails, total );
}
@@ -784,26 +840,21 @@ class PnorDdTest : public CxxTest::TestSuite
void test_crossblock_modes(void)
{
PnorDD* pnordd = NULL;
+ uint8_t* fake_space = NULL;
size_t l_size = sizeof(uint64_t);
errlHndl_t l_err = NULL;
uint64_t fails = 0;
uint64_t total = 0;
+ uint64_t scratch_space = 0;
+ uint64_t sect_size = 0;
do{
TS_TRACE("PnorDdTest::test_crossblock_modes: starting");
- uint64_t base_address;
- uint64_t sect_size;
- if(!getTestSection(base_address, sect_size))
- {
- TRACFCOMP(g_trac_pnor, "PnorDdTest::test_crossblock_modes> Skipped due to not finding test section in PNOR" );
- break;
- }
-
// list of all modes to test
std::list<PnorDD::PnorMode_t> supported_modes;
- //supported_modes.push_back(PnorDD::MODEL_MEMCPY); (Enable with RTC: 44938)
- //supported_modes.push_back(PnorDD::MODEL_LPC_MEM); (Enable with RTC: 44938)
+ supported_modes.push_back(PnorDD::MODEL_MEMCPY);
+ supported_modes.push_back(PnorDD::MODEL_LPC_MEM);
if(!TARGETING::is_vpo())
{
@@ -812,33 +863,62 @@ class PnorDdTest : public CxxTest::TestSuite
supported_modes.push_back(PnorDD::MODEL_REAL_MMIO);
}
- uint64_t scratch_space = base_address;
-
// loop through all of the supported modes
for( std::list<PnorDD::PnorMode_t>::iterator m
= supported_modes.begin();
m != supported_modes.end();
++m )
{
- scratch_space += 4096;
-
if( pnordd )
{
delete pnordd;
}
- pnordd = new PnorDD(*m);
+
+
+ //Fake PNOR
+ if( (PnorDD::MODEL_MEMCPY == *m) ||
+ (PnorDD::MODEL_LPC_MEM == *m) )
+ {
+ //malloc some space to use as fake-PNOR
+ if( fake_space )
+ {
+ delete fake_space;
+ }
+ fake_space = new uint8_t[8 * KILOBYTE];
+ pnordd = new PnorDD(*m,
+ reinterpret_cast<uint64_t>(fake_space),
+ (8 * KILOBYTE));
+ scratch_space = 0;
+ sect_size = 8 * KILOBYTE;
+ }
+ //Real PNOR
+ else
+ {
+ pnordd = new PnorDD(*m);
+
+ if(!getTestSection(scratch_space, sect_size))
+ {
+ TRACFCOMP(g_trac_pnor,
+ "PnorDdTest::test_readwrite_modes> Skipped due to not finding test section in PNOR" );
+ continue;
+ }
+ }
// Find the nearest erase-block (4K) boundary
- uint64_t l_boundary = (base_address+4096)
- - (base_address%4096);
+ uint64_t l_boundary = (scratch_space+4096)
+ - (scratch_space%4096);
uint64_t l_address = 0;
//make sure we don't go past the end of the section
- if(l_boundary+0x4 > base_address+sect_size)
+ if(l_boundary+0x4 > scratch_space+sect_size)
{
TS_FAIL("PnorDdTest::test_crossblock_modes: Test Case went beyond allocated space in test section.");
- TRACFCOMP(g_trac_pnor, "PnorDdTest::test_crossblock_modes: Test Case went beyond allocated space in test section.l_boundary=0x%X, base_address=0x%X, sect_size=0x%X", l_boundary, base_address, sect_size);
- TRACFCOMP(g_trac_pnor, "PnorDdTest::test_crossblock_modes: sect_size=0x%X", sect_size);
+ TRACFCOMP(g_trac_pnor,
+ "PnorDdTest::test_crossblock_modes: Test Case went beyond allocated space in test section.l_boundary=0x%X, scratch_space=0x%X, sect_size=0x%X",
+ l_boundary, scratch_space, sect_size);
+ TRACFCOMP(g_trac_pnor,
+ "PnorDdTest::test_crossblock_modes: sect_size=0x%X",
+ sect_size);
break;
}
@@ -884,6 +964,10 @@ class PnorDdTest : public CxxTest::TestSuite
{
delete pnordd;
}
+ if( fake_space )
+ {
+ delete fake_space;
+ }
TRACFCOMP(g_trac_pnor, "PnorDdTest::test_crossblock_modes> %d/%d fails", fails, total );
}
OpenPOWER on IntegriCloud