diff options
author | Marty Gloff <mgloff@us.ibm.com> | 2017-05-04 11:49:53 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2017-05-08 17:37:12 -0400 |
commit | 8d2f642444d8581ea7dda1219f2ffccc79a63dce (patch) | |
tree | b4e923d4f96d4792f41c8209d78cda82bc91d4ad /src/include/bootloader | |
parent | 8527fc2b9549b9b6782fdffde29ff8713e677bc4 (diff) | |
download | talos-hostboot-8d2f642444d8581ea7dda1219f2ffccc79a63dce.tar.gz talos-hostboot-8d2f642444d8581ea7dda1219f2ffccc79a63dce.zip |
Bootloader updates to support remapped memory - Initial pass
Add support to BlToHbData structure and create new version.
Put in TODOs for pending p9_sbe_hb_structures.H changes.
Move selected Bootloader data out of image due to size issues.
Update BlTrace tool for new location of trace data.
Change-Id: Ic513a95b8f4054d467537c4623d5a7b7aa09e25e
RTC:173526
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/40096
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: William G. Hoffa <wghoffa@us.ibm.com>
Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include/bootloader')
-rw-r--r-- | src/include/bootloader/bootloader.H | 5 | ||||
-rw-r--r-- | src/include/bootloader/bootloader_data.H | 79 | ||||
-rw-r--r-- | src/include/bootloader/bootloader_trace.H | 8 | ||||
-rw-r--r-- | src/include/bootloader/bootloaderif.H | 12 |
4 files changed, 97 insertions, 7 deletions
diff --git a/src/include/bootloader/bootloader.H b/src/include/bootloader/bootloader.H index 81515d4b9..ddd39bb0b 100644 --- a/src/include/bootloader/bootloader.H +++ b/src/include/bootloader/bootloader.H @@ -40,6 +40,7 @@ #include <kernel/hbterminatetypes.H> #include <bootloader/bootloaderif.H> #include <bootloader/bootloader_trace.H> +#include <bootloader/bootloader_data.H> #include <bootloader/hbblreasoncodes.H> extern "C" void task_end_stub(); @@ -225,6 +226,10 @@ namespace Bootloader{ /** Location of working copy of HBB without ECC */ #define HBB_WORKING_ADDR (getHRMOR() - ( 1*MEGABYTE)) + /** Location of HBBL data */ +#define HBBL_DATA_ADDR (getHRMOR() + HBBL_EXCEPTION_VECTOR_SIZE \ + + MAX_HBBL_SIZE) + /** Location of HBBL scratch space */ #define HBBL_SCRATCH_SPACE_ADDR (getHRMOR() + (64*KILOBYTE)) diff --git a/src/include/bootloader/bootloader_data.H b/src/include/bootloader/bootloader_data.H new file mode 100644 index 000000000..a28ea74cd --- /dev/null +++ b/src/include/bootloader/bootloader_data.H @@ -0,0 +1,79 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/include/bootloader/bootloader_data.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2017 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ + +#ifndef __BOOTLOADER_DATA_H +#define __BOOTLOADER_DATA_H + +/** + * @file bootloader_data.H + * + * Data struct for Bootloader data placed outside of Bootloader image. + */ + +#include <bootloader/bootloader_trace.H> +#include <bootloader/bootloaderif.H> +#include <bootloader/bl_pnorAccess.H> +#include <kernel/hbterminatetypes.H> + + +namespace Bootloader{ + typedef struct blData + { + // @name bl_trace + // @brief Buffer for Bootloader Trace data + // Buffer with bootloader trace entries. There are 64 one-byte entries + // in the buffer. They are used to track events that have occurred in + // the bootloader code. After all entries have been used, the buffer + // wraps and the oldest entry is overwritten by the newest trace data. + uint8_t bl_trace[BOOTLOADER_TRACE_SIZE]; + + // @name bl_trace_index + // @brief Index for Bootloader Trace entries + // One-byte index for next entry to use in bootloader_trace. + uint8_t bl_trace_index; + + // Object that will be stored where the SBE HB structure indicates + BlToHbData blToHbData; + + // Bool indicating if the secureROM is valid. Toggles verification. + bool secureRomValid; + + // Buffer to save HBB PNOR section data + PNOR::SectionData_t bl_hbbSection; + + // Instance of the TI Data Area + HB_TI_DataArea bl_TIDataArea; + } blData_t; + + /** + * @brief Pointer to bootloader external data + * + * Pointer to location in main storage which bootloader uses for + * storing data + */ + extern blData_t *g_blData; +} // end namespace Bootloader + +#endif diff --git a/src/include/bootloader/bootloader_trace.H b/src/include/bootloader/bootloader_trace.H index 2747e0d97..df6887890 100644 --- a/src/include/bootloader/bootloader_trace.H +++ b/src/include/bootloader/bootloader_trace.H @@ -38,8 +38,7 @@ #define BOOTLOADER_TRACE_SIZE 64 #endif -extern uint8_t bootloader_trace_index; -extern uint8_t bootloader_trace[BOOTLOADER_TRACE_SIZE]; +#include <bootloader/bootloader_data.H> // include after trace size is set /** @enum BootloaderTraces * @brief List of Hostboot Bootloader Trace values. @@ -187,8 +186,9 @@ enum BootloaderTraces #ifndef BOOTLOADER_TRACE #define BOOTLOADER_TRACE(trace_value) \ { \ - bootloader_trace[bootloader_trace_index++] = trace_value; \ - bootloader_trace_index %= BOOTLOADER_TRACE_SIZE; \ + Bootloader::g_blData->bl_trace[Bootloader::g_blData->bl_trace_index++] = \ + trace_value; \ + Bootloader::g_blData->bl_trace_index %= BOOTLOADER_TRACE_SIZE; \ lwsync(); \ } #endif diff --git a/src/include/bootloader/bootloaderif.H b/src/include/bootloader/bootloaderif.H index e4d422d20..9c7b73201 100644 --- a/src/include/bootloader/bootloaderif.H +++ b/src/include/bootloader/bootloaderif.H @@ -53,8 +53,9 @@ const uint64_t BLTOHB_EYECATCHER = 0x23626C746F686200; // #BLTOHB\0 enum BlToHbDataVersion { // [release:4][version:4] - BLTOHB_INIT = 0x0000000900000001, - BLTOHB_SAB = 0x0000000900000002 + BLTOHB_INIT = 0x0000000900000001, + BLTOHB_SAB = 0x0000000900000002, + BLTOHB_MMIOBARS = 0x0000000900000003 }; @@ -73,7 +74,8 @@ struct BlToHbData branchtableOffset(0), secureRom(nullptr), secureRomSize(0), hwKeysHash(nullptr), hwKeysHashSize(0), hbbHeader(nullptr), - hbbHeaderSize(0), secureAccessBit(false) {} + hbbHeaderSize(0), secureAccessBit(false), + xscomBAR(0), lpcBAR(0) {} // Simple way to tell if data is valid uint64_t eyeCatch; @@ -95,6 +97,10 @@ struct BlToHbData size_t hbbHeaderSize; // Secure Access Bit bool secureAccessBit; + // XSCOM MMIO BAR + uint64_t xscomBAR; + // LPC MMIO BAR + uint64_t lpcBAR; } __attribute__((packed)); /** |