summaryrefslogtreecommitdiffstats
path: root/src/usr/testcore/rtloader
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/testcore/rtloader')
-rw-r--r--src/usr/testcore/rtloader/loader.H53
1 files changed, 51 insertions, 2 deletions
diff --git a/src/usr/testcore/rtloader/loader.H b/src/usr/testcore/rtloader/loader.H
index 8e07cf021..8914c709b 100644
--- a/src/usr/testcore/rtloader/loader.H
+++ b/src/usr/testcore/rtloader/loader.H
@@ -42,6 +42,8 @@
#include <devicefw/userif.H>
#include <pnor/ecc.H>
#include <ipmi/ipmiif.H>
+#include <targeting/common/attributeTank.H>
+
trace_desc_t* g_trac_hbrt = NULL;
TRAC_INIT(&g_trac_hbrt, "HBRT_TEST", 2*KILOBYTE);
@@ -331,10 +333,12 @@ class RuntimeLoaderTest : public CxxTest::TestSuite
static uint64_t rt_get_reserved_mem(const char* i_region,
uint32_t i_instance)
{
- if (0 == strcmp(i_region, "ibm,hbrt-vpd-image"))
+ if (0 == strcmp(i_region, HBRT_RSVD_MEM__VPD_CACHE))
return rt_get_vpd();
- else if (0 == strcmp(i_region, "ibm,hbrt-target-image"))
+ else if (0 == strcmp(i_region, HBRT_RSVD_MEM__ATTRIBUTES))
return rt_get_targ();
+ else if (0 == strcmp(i_region, HBRT_RSVD_MEM__OVERRIDES))
+ return rt_get_targ_override();
else
return 0;
}
@@ -543,6 +547,49 @@ class RuntimeLoaderTest : public CxxTest::TestSuite
return cv_targ_addr;
}
+ static uint64_t rt_get_targ_override()
+ {
+ using namespace TARGETING;
+ if (cv_targ_over_addr != 0)
+ {
+ return cv_targ_over_addr;
+ }
+
+ // add an override to use in a later test
+ AttributeTank* l_tank =
+ &Target::theTargOverrideAttrTank();
+ ATTR_SCRATCH_INT32_1_type l_val = -99;
+ l_tank->setAttribute(ATTR_SCRATCH_INT32_1,
+ TYPE_SYS,
+ AttributeTank::ATTR_POS_NA,
+ AttributeTank::ATTR_UNIT_POS_NA,
+ AttributeTank::ATTR_NODE_NA,
+ 0, sizeof(l_val), &l_val);
+
+ // copy overrides into local buffer
+ size_t l_actualSize = 64*KILOBYTE;
+ uint8_t* l_overrideData =
+ reinterpret_cast<uint8_t*>(malloc(l_actualSize));
+ errlHndl_t l_elog = TARGETING::AttrRP::saveOverrides(
+ l_overrideData,
+ l_actualSize );
+ if(l_elog)
+ {
+ TRACFCOMP( g_trac_hbrt, ERR_MRK" Attribute Overrides exceed allocated space" );
+ errlCommit( l_elog, CXXTEST_COMP_ID );
+ }
+ else if( l_actualSize == 0 )
+ {
+ TRACFCOMP( g_trac_hbrt, INFO_MRK" No Attribute Overrides Present" );
+ }
+ else
+ {
+ cv_targ_over_addr = reinterpret_cast<uint64_t>(l_overrideData);
+ }
+
+ return cv_targ_over_addr;
+ }
+
static int rt_ipmi_msg(uint8_t netfn, uint8_t cmd,
void *tx_buf, size_t tx_size,
void *rx_buf, size_t *rx_size)
@@ -574,6 +621,7 @@ class RuntimeLoaderTest : public CxxTest::TestSuite
static uint64_t cv_vpd_phys_addr;
static uint64_t cv_targ_addr;
static uint64_t cv_targ_phys_addr;
+ static uint64_t cv_targ_over_addr;
};
@@ -583,6 +631,7 @@ uint64_t RuntimeLoaderTest::cv_vpd_addr = 0;
uint64_t RuntimeLoaderTest::cv_vpd_phys_addr = 0;
uint64_t RuntimeLoaderTest::cv_targ_addr = 0;
uint64_t RuntimeLoaderTest::cv_targ_phys_addr = 0;
+uint64_t RuntimeLoaderTest::cv_targ_over_addr = 0;
OpenPOWER on IntegriCloud