diff options
author | Marty Gloff <mgloff@us.ibm.com> | 2017-03-14 16:49:25 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-04-30 00:07:49 -0400 |
commit | 4dfeb42e05752fb81b699cb7022677d5511f664b (patch) | |
tree | bd8ed6d0cf493bb8669e02e9372d130ef1a808e8 /src/usr/testcore | |
parent | 75d116c859dfac3cf279fb99c35a8e18fb44c2db (diff) | |
download | talos-hostboot-4dfeb42e05752fb81b699cb7022677d5511f664b.tar.gz talos-hostboot-4dfeb42e05752fb81b699cb7022677d5511f664b.zip |
SBE message passing interface - Testing
Create testcase to test SBE message passing.
Change-Id: I596115d96d989dbee41070c4b9e419d2043494ae
RTC: 170764
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/38170
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Reviewed-by: Corey V. Swenson <cswenson@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/testcore')
-rw-r--r-- | src/usr/testcore/rtloader/loader.H | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/usr/testcore/rtloader/loader.H b/src/usr/testcore/rtloader/loader.H index a5167ff45..98b055f74 100644 --- a/src/usr/testcore/rtloader/loader.H +++ b/src/usr/testcore/rtloader/loader.H @@ -354,6 +354,8 @@ class RuntimeLoaderTest : public CxxTest::TestSuite return rt_get_targ(); else if (0 == strcmp(i_region, HBRT_RSVD_MEM__OVERRIDES)) return rt_get_targ_override(); + else if (0 == strcmp(i_region, HBRT_RSVD_MEM__SBE_COMM)) + return rt_get_comm(i_instance); else return 0; } @@ -545,6 +547,7 @@ class RuntimeLoaderTest : public CxxTest::TestSuite } + //-------------------------------------------------------------------- static uint64_t rt_get_targ() { if (cv_targ_addr != 0) @@ -562,6 +565,7 @@ class RuntimeLoaderTest : public CxxTest::TestSuite return cv_targ_addr; } + //-------------------------------------------------------------------- static uint64_t rt_get_targ_override() { using namespace TARGETING; @@ -605,6 +609,59 @@ class RuntimeLoaderTest : public CxxTest::TestSuite return cv_targ_over_addr; } + //-------------------------------------------------------------------- + static uint64_t rt_get_comm(uint32_t i_instance) + { + if (cv_comm_addr != 0) + { + TRACFCOMP(g_trac_hbrt, EXIT_MRK"rt_get_comm: " + "stored cv_comm_addr:%lld", + cv_comm_addr); + return cv_comm_addr; + } + + TARGETING::TargetHandleList procChips; + getAllChips(procChips, TARGETING::TYPE_PROC, true); + for (const auto & l_procChip: procChips) + { + uint64_t l_instance = + l_procChip->getAttr<TARGETING::ATTR_POSITION>(); + if(l_instance == i_instance) + { + cv_comm_addr = + l_procChip->getAttr<TARGETING::ATTR_SBE_COMM_ADDR>(); + if (cv_comm_addr != 0) + { + TRACFCOMP(g_trac_hbrt, EXIT_MRK"rt_get_comm: " + "retrieved attribute cv_comm_addr:%lld", + cv_comm_addr); + return cv_comm_addr; + } + } + } + + cv_comm_phys_addr = TARGETING::get_top_mem_addr(); + + assert (cv_comm_phys_addr != 0, + "bld_devtree: Top of memory was 0!"); + + cv_comm_phys_addr -= (VMM_RT_VPD_OFFSET + 64*KILOBYTE); + + uint8_t *comm_ptr = reinterpret_cast<uint8_t *>(cv_comm_phys_addr); + + void *cptr = mm_block_map(comm_ptr, PAGESIZE); + + assert(cptr != NULL,"rt_get_comm. Could not map SBE Comm memory"); + + cv_comm_addr = reinterpret_cast<uint64_t>(cptr); + + TRACFCOMP(g_trac_hbrt, EXIT_MRK"rt_get_comm: " + "calculated cv_comm_addr:%lld", + cv_comm_addr); + return cv_comm_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) @@ -637,6 +694,8 @@ class RuntimeLoaderTest : public CxxTest::TestSuite static uint64_t cv_targ_addr; static uint64_t cv_targ_phys_addr; static uint64_t cv_targ_over_addr; + static uint64_t cv_comm_addr; + static uint64_t cv_comm_phys_addr; }; @@ -647,6 +706,8 @@ 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; +uint64_t RuntimeLoaderTest::cv_comm_addr = 0; +uint64_t RuntimeLoaderTest::cv_comm_phys_addr = 0; |