diff options
| author | Matt Derksen <mderkse1@us.ibm.com> | 2017-06-19 08:07:16 -0500 |
|---|---|---|
| committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-07-11 15:52:08 -0400 |
| commit | 61f38bd338cfc056cb9e6d4f407b9279c437c4ab (patch) | |
| tree | 103586a446f86f5ba2be04989404260d50d8f2c9 /src/usr/util/runtime | |
| parent | 06b6c5e9291f0f25979e9ee1dbda1c780c9a98f0 (diff) | |
| download | talos-hostboot-61f38bd338cfc056cb9e6d4f407b9279c437c4ab.tar.gz talos-hostboot-61f38bd338cfc056cb9e6d4f407b9279c437c4ab.zip | |
Enable HDAT HB reserved memory when supported by FSP
Change-Id: Id0b156282e0197c6a8ed32d2e60066cb5c149edd
RTC: 169478
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/42077
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@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/util/runtime')
| -rw-r--r-- | src/usr/util/runtime/makefile | 1 | ||||
| -rw-r--r-- | src/usr/util/runtime/util_rt.C | 48 |
2 files changed, 19 insertions, 30 deletions
diff --git a/src/usr/util/runtime/makefile b/src/usr/util/runtime/makefile index 6512606d2..c9bc4b0ef 100644 --- a/src/usr/util/runtime/makefile +++ b/src/usr/util/runtime/makefile @@ -34,6 +34,7 @@ OBJS += utilfile.o OBJS += utillidpnor.o OBJS += rt_cmds.o OBJS += util_rt.o +OBJS += utilrsvdmem.o SUBDIRS += test.d diff --git a/src/usr/util/runtime/util_rt.C b/src/usr/util/runtime/util_rt.C index 633456248..aee9b4871 100644 --- a/src/usr/util/runtime/util_rt.C +++ b/src/usr/util/runtime/util_rt.C @@ -25,8 +25,10 @@ #include <targeting/common/trace.H> #include <trace/interface.H> #include <runtime/interface.h> +#include <util/utilrsvdmem.H> #include <util/runtime/util_rt.H> + /** * @brief Get the address of a reserved hostboot memory region by its label * @param[in] i_label HBRT_MEM_LABEL_ constant @@ -35,22 +37,22 @@ * @return virtual address of region or 0 * @platform FSP, OpenPOWER **/ -uint64_t hb_get_rt_rsvd_mem(hbrt_mem_label_t i_label, +uint64_t hb_get_rt_rsvd_mem(Util::hbrt_mem_label_t i_label, uint32_t i_instance, uint64_t & o_size) { uint64_t l_label_data_addr = 0; o_size = 0; - TRACFCOMP(TARGETING::g_trac_targeting, ENTER_MRK"hb_get_rt_rsvd_mem(0x%llX, %d, %ld) -> 0x%X", - i_label,i_instance, o_size,l_label_data_addr); + TRACFCOMP(TARGETING::g_trac_targeting, + ENTER_MRK"hb_get_rt_rsvd_mem(0x%llX, %d)", i_label, i_instance); switch(i_label) { - case HBRT_MEM_LABEL_VPD: - case HBRT_MEM_LABEL_ATTR: - case HBRT_MEM_LABEL_ATTROVER: - case HBRT_MEM_LABEL_PADDING: + case Util::HBRT_MEM_LABEL_VPD: + case Util::HBRT_MEM_LABEL_ATTR: + case Util::HBRT_MEM_LABEL_ATTROVER: + case Util::HBRT_MEM_LABEL_PADDING: if( (g_hostInterfaces != NULL) && (g_hostInterfaces->get_reserved_mem) ) { @@ -59,27 +61,12 @@ uint64_t hb_get_rt_rsvd_mem(hbrt_mem_label_t i_label, i_instance); if (0 != hb_data_addr) { - hbrtTableOfContents_t * toc_ptr = - reinterpret_cast<hbrtTableOfContents_t *>(hb_data_addr); - - // Find offset of label section - for (uint16_t i = 0; i < toc_ptr->total_entries; i++) - { - if (toc_ptr->entry[i].label == i_label) - { - l_label_data_addr = hb_data_addr + - toc_ptr->entry[i].offset; - o_size = toc_ptr->entry[i].size; - TRACFCOMP(TARGETING::g_trac_targeting, "hb_get_rt_rsvd_mem: Entry found at 0x%.16llX, size %ld", - l_label_data_addr, o_size); - break; - } - } - - if (0 == o_size) - { - TRACFCOMP(TARGETING::g_trac_targeting, "hb_get_rt_rsvd_mem: Entry %.16llX not found", i_label); - } + Util::hbrtTableOfContents_t * toc_ptr = + reinterpret_cast<Util::hbrtTableOfContents_t *>( + hb_data_addr); + l_label_data_addr = Util::hb_find_rsvd_mem_label(i_label, + toc_ptr, + o_size); } else { @@ -100,8 +87,9 @@ uint64_t hb_get_rt_rsvd_mem(hbrt_mem_label_t i_label, break; } - TRACFCOMP(TARGETING::g_trac_targeting, EXIT_MRK"hb_get_rt_rsvd_mem(0x%X, %d, %ld) -> 0x%X", - i_label,i_instance, o_size,l_label_data_addr); + TRACFCOMP(TARGETING::g_trac_targeting, + EXIT_MRK"hb_get_rt_rsvd_mem(0x%X, %d, %ld) -> 0x%.16llX", + i_label, i_instance, o_size,l_label_data_addr); return l_label_data_addr; } |

