diff options
author | crgeddes <crgeddes@us.ibm.com> | 2017-08-09 13:42:03 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-08-18 10:26:41 -0400 |
commit | d53d9f226aaa8080eb65717ae895dac06a855bf8 (patch) | |
tree | f94c901f3704d12d5e0999345a76faf8401e203b /src/bootloader | |
parent | 6a040451c75c888ad1ecca9e10988c119cbbba84 (diff) | |
download | talos-hostboot-d53d9f226aaa8080eb65717ae895dac06a855bf8.tar.gz talos-hostboot-d53d9f226aaa8080eb65717ae895dac06a855bf8.zip |
Pass Key-Addr info through bootloader
RTC: 165369
Change-Id: If15f6ccc7a7c3649b8352467ae10173a15f3f501
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/44426
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>
Reviewed-by: Matt Derksen <mderkse1@us.ibm.com>
Reviewed-by: Martin Gloff <mgloff@us.ibm.com>
Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/bootloader')
-rw-r--r-- | src/bootloader/bootloader.C | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/bootloader/bootloader.C b/src/bootloader/bootloader.C index f3ba3d525..55969fa0b 100644 --- a/src/bootloader/bootloader.C +++ b/src/bootloader/bootloader.C @@ -110,6 +110,9 @@ namespace Bootloader{ switch(l_blConfigData->version) { // Add cases as additional versions are created + case ADDR_STASH_SUPPORT_ADDED: + g_blData->blToHbData.version = BLTOHB_KEYADDR; + break; default: g_blData->blToHbData.version = BLTOHB_SIZE; break; @@ -147,15 +150,33 @@ namespace Bootloader{ // Set Bootloader preceived size of structure g_blData->blToHbData.sizeOfStructure = sizeof(BlToHbData); } + } + + void setKeyAddrMapData(const void * i_pHbbSrc) + { + // Read SBE HB shared data. + const auto l_blConfigData = reinterpret_cast<BootloaderConfigData_t *>( + SBE_HB_COMM_ADDR); + // Set copy keyaddr stash data + // Ensure SBE to Bootloader structure has key addr stash info + if (l_blConfigData->version >= ADDR_STASH_SUPPORT_ADDED) + { + memcpy(&g_blData->blToHbData.keyAddrStashData, + &l_blConfigData->pair, + sizeof(keyAddrPair_t)); + } + } + + void copyBlToHbtoHbLocation() + { // Place BlToHb into proper location for HB to find memcpy(reinterpret_cast<void *>(BLTOHB_COMM_DATA_ADDR_LATEST | IGNORE_HRMOR_MASK), - &g_blData->blToHbData, - sizeof(BlToHbData)); + &g_blData->blToHbData, + sizeof(BlToHbData)); } - /** * @brief Verify Container against system hash keys * @@ -366,6 +387,11 @@ namespace Bootloader{ // Get Secure Data from SBE HBBL communication area setSecureData(l_src_addr); + // Get Key-Addr Mapping from SBE HBBL communication area + setKeyAddrMapData(l_src_addr); + + copyBlToHbtoHbLocation(); + // ROM verification of HBB image verifyContainer(l_src_addr); |