diff options
author | crgeddes <crgeddes@us.ibm.com> | 2017-08-14 16:39:58 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-08-23 16:33:12 -0400 |
commit | b0da5312bac172bdea608371f647fd1bafb87bce (patch) | |
tree | d0ee329f92519757f2f8c42e16d81a7948d67bc6 /src/usr/targeting | |
parent | a44497d63a86a610b8c4c09fbb45dab99a811fbf (diff) | |
download | talos-hostboot-b0da5312bac172bdea608371f647fd1bafb87bce.tar.gz talos-hostboot-b0da5312bac172bdea608371f647fd1bafb87bce.zip |
Use keyAddr stash chipop to pass rsv mem addr through SBE for MPIPL
Previously we were relying on the reservedMem section to be a certain
address for the attrrp to find after an MPIPL. With this change the
address is passed through the SBE so the reservedMem data can be
anywhere
RTC: 165369
Change-Id: I06521c049088c4a53a8c0a51fa07e5200da09483
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/44624
Tested-by: Jenkins Server <pfd-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: Brian E. Bakke <bbakke@us.ibm.com>
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/targeting')
-rwxr-xr-x | src/usr/targeting/attrrp.C | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/usr/targeting/attrrp.C b/src/usr/targeting/attrrp.C index 2c9f0b6fe..b4d5ce155 100755 --- a/src/usr/targeting/attrrp.C +++ b/src/usr/targeting/attrrp.C @@ -53,6 +53,9 @@ #include <targeting/attrPlatOverride.H> #include <config.h> #include <secureboot/service.H> +#include <kernel/bltohbdatamgr.H> +#include <bootloader/bootloaderif.H> +#include <sbeio/sbeioif.H> using namespace INITSERVICE; using namespace ERRORLOG; @@ -377,8 +380,25 @@ namespace TARGETING uint64_t l_attr_data_size = 0; // Setup physical TOC address - uint64_t l_toc_addr = cpu_spr_value(CPU_SPR_HRMOR) + - VMM_HB_DATA_TOC_START_OFFSET; + uint64_t l_toc_addr = 0; + + Bootloader::keyAddrPair_t l_keyAddrPairs = + g_BlToHbDataManager.getKeyAddrPairs(); + + for (uint8_t keyIndex = 0; keyIndex < MAX_ROW_COUNT; keyIndex++) + { + if(l_keyAddrPairs.key[keyIndex] == SBEIO::RSV_MEM_ATTR_ADDR) + { + l_toc_addr = l_keyAddrPairs.addr[keyIndex]; + } + } + + if(!l_toc_addr) + { + // Setup physical TOC address to hardcoded value + l_toc_addr = cpu_spr_value(CPU_SPR_HRMOR) + + VMM_HB_DATA_TOC_START_OFFSET; + } // Now map the TOC to find the ATTR label address & size Util::hbrtTableOfContents_t * l_toc_ptr = |