50139d00bd
It's hidden behind the configuration option `CONFIG_ROMSTAGE_LIBHWBASE'. This also adds some glue code to use the coreboot console for debug output and our monotonic timer framework as timer backend. Running Ada code in romstage and more particular libhwbase brings a few challenges as global initialized variables are not supported in Cache-As-Ram mode. 1. The libhwbase dynamic mmio driver implementation makes the Gnat compiler generate some global initialized variables. For this reason, when compiled for romstage or for romstage and ramstage the static mmio driver is enforced (`HWBASE_STATIC_MMIO'). 2. The Gnat compiler generates elaboration functions to initialize program data at runtime. These elaboration functions are called by the romstage_adainit() function. The data references symbols suffixed by `_E'. Even though these symbols, at compilation time, do not contain any data and are filled with zeros, the Gnat compiler installs them in the .data section. Since these symbols are actually filled with zeros, it is safe to install them in the .bss section. cf. https://docs.adacore.com/gnat_ugn-docs/html/gnat_ugn/gnat_ugn/elaboration_order_handling_in_gnat.html#elaboration-code This patch requires the libhwbase https://review.coreboot.org/c/libhwbase/+/69854 CL. BUG=b:252792591 BRANCH=firmware-brya-14505.B TEST=libhwbae compiles for romstage and loads successfully Change-Id: I670249d33506e886a683e55d1589cb2bf9b16aa3 Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/70275 Reviewed-by: Boris Mittelberg <bmbm@google.com> Reviewed-by: Nick Vaccaro <nvaccaro@google.com> Reviewed-by: Tarun Tuli <taruntuli@google.com> Reviewed-by: Zhixing Ma <zhixing.ma@intel.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
145 lines
3.3 KiB
Text
145 lines
3.3 KiB
Text
config MISSING_BOARD_RESET
|
|
bool
|
|
help
|
|
Selected by boards that don't provide a do_board_reset()
|
|
implementation. This activates a stub that logs the missing
|
|
board reset and halts execution.
|
|
|
|
config ROMSTAGE_ADA
|
|
bool
|
|
help
|
|
Selected by features that use Ada code in romstage.
|
|
|
|
config RAMSTAGE_ADA
|
|
bool
|
|
help
|
|
Selected by features that use Ada code in ramstage.
|
|
|
|
config RAMSTAGE_LIBHWBASE
|
|
bool
|
|
select RAMSTAGE_ADA
|
|
help
|
|
Selected by features that require `libhwbase` in ramstage.
|
|
|
|
config ROMSTAGE_LIBHWBASE
|
|
bool
|
|
select ROMSTAGE_ADA
|
|
help
|
|
Selected by features that require `libhwbase` in romstage.
|
|
|
|
config FLATTENED_DEVICE_TREE
|
|
bool
|
|
help
|
|
Selected by features that require to parse and manipulate a flattened
|
|
devicetree in ramstage.
|
|
|
|
config HAVE_SPD_IN_CBFS
|
|
bool
|
|
help
|
|
If enabled, add support for adding spd.hex files in cbfs as spd.bin
|
|
and locating it runtime to load SPD.
|
|
|
|
config DIMM_MAX
|
|
int
|
|
default 4
|
|
help
|
|
Total number of memory DIMM slots available on motherboard.
|
|
It is multiplication of number of channel to number of DIMMs per
|
|
channel
|
|
|
|
config DIMM_SPD_SIZE
|
|
int
|
|
default 256
|
|
help
|
|
Total SPD size that will be used for DIMM.
|
|
Ex: DDR3 256, DDR4 512.
|
|
|
|
config SPD_READ_BY_WORD
|
|
bool
|
|
|
|
config SPD_CACHE_IN_FMAP
|
|
bool
|
|
default n
|
|
help
|
|
Enables capability to cache DIMM SPDs in a dedicated FMAP region
|
|
to speed loading of SPD data. Currently requires board-level
|
|
romstage implementation to read/write/utilize cached SPD data.
|
|
When the default FMAP is used, will create a region named RW_SPD_CACHE
|
|
to store the cached SPD data.
|
|
|
|
config SPD_CACHE_FMAP_NAME
|
|
string
|
|
depends on SPD_CACHE_IN_FMAP
|
|
default "RW_SPD_CACHE"
|
|
help
|
|
Name of the FMAP region created in the default FMAP to cache SPD data.
|
|
|
|
if RAMSTAGE_LIBHWBASE && !ROMSTAGE_LIBHWBASE
|
|
|
|
config HWBASE_DYNAMIC_MMIO
|
|
def_bool y
|
|
|
|
endif
|
|
|
|
if ROMSTAGE_LIBHWBASE
|
|
|
|
config HWBASE_STATIC_MMIO
|
|
def_bool y
|
|
|
|
endif
|
|
|
|
if RAMSTAGE_LIBHWBASE || ROMSTAGE_LIBHWBASE
|
|
|
|
config HWBASE_DEFAULT_MMCONF
|
|
hex
|
|
default ECAM_MMCONF_BASE_ADDRESS
|
|
|
|
config HWBASE_DIRECT_PCIDEV
|
|
def_bool y
|
|
|
|
endif
|
|
|
|
config NO_FMAP_CACHE
|
|
bool
|
|
help
|
|
If your platform really doesn't want to use an FMAP cache (e.g. due to
|
|
space constraints), you can select this to disable warnings and save
|
|
a bit more code.
|
|
|
|
config ESPI_DEBUG
|
|
bool
|
|
help
|
|
This option enables eSPI library helper functions for displaying debug
|
|
information.
|
|
|
|
config NO_CBFS_MCACHE
|
|
bool
|
|
help
|
|
Disables the CBFS metadata cache. This means that your platform does
|
|
not need to provide a CBFS_MCACHE section in memlayout and can save
|
|
the associated CAR/SRAM size. In that case every single CBFS file
|
|
lookup must re-read the same CBFS directory entries from flash to find
|
|
the respective file.
|
|
|
|
config CBFS_CACHE_ALIGN
|
|
int
|
|
default 8
|
|
help
|
|
Sets the alignment of the buffers returned by the cbfs_cache.
|
|
|
|
config CBFS_PRELOAD
|
|
bool
|
|
depends on COOP_MULTITASKING
|
|
help
|
|
When enabled it will be possible to preload CBFS files into the
|
|
cbfs_cache. This helps reduce boot time by loading the files
|
|
in the background before they are actually required. This feature
|
|
depends on the read-only boot_device having a DMA controller to
|
|
perform the background transfer.
|
|
|
|
config DECOMPRESS_OFAST
|
|
bool
|
|
depends on COMPILER_GCC
|
|
default y
|
|
help
|
|
Compile the decompressing function in -Ofast instead of standard -Os
|