summaryrefslogtreecommitdiffstats
path: root/src/include/bootloader
diff options
context:
space:
mode:
authorMarty Gloff <mgloff@us.ibm.com>2017-05-04 11:49:53 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-05-08 17:37:12 -0400
commit8d2f642444d8581ea7dda1219f2ffccc79a63dce (patch)
treeb4e923d4f96d4792f41c8209d78cda82bc91d4ad /src/include/bootloader
parent8527fc2b9549b9b6782fdffde29ff8713e677bc4 (diff)
downloadtalos-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.H5
-rw-r--r--src/include/bootloader/bootloader_data.H79
-rw-r--r--src/include/bootloader/bootloader_trace.H8
-rw-r--r--src/include/bootloader/bootloaderif.H12
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));
/**
OpenPOWER on IntegriCloud