arch/riscv: Allow adding OpenSBI as external blob

The reasoning is that even though vendors currently tend to open source
their OpenSBI implementation, they often do so in their own repository.
So instead of adding all possible source repositories as submodules, we
shall allow specifying a path to an already compiled OpenSBI ELF file.
This is similar of what we currently do on ARM64 with the BL31 binary.

Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com>
Change-Id: I6592ad90a254ca4ac9a6cee89404ad49274f0dea
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83284
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Alicja Michalska <ahplka19@gmail.com>
Reviewed-by: ron minnich <rminnich@gmail.com>
This commit is contained in:
Maximilian Brune 2024-06-29 01:41:47 +02:00
commit 6c063250b5
2 changed files with 24 additions and 3 deletions

View file

@ -55,15 +55,29 @@ config RISCV_OPENSBI
Load OpenSBI after payload has been loaded and use it to
provide the SBI and to handover control to payload.
if RISCV_OPENSBI
config OPENSBI_BLOB
bool "Include OpenSBI ELF binary blob"
depends on RISCV_OPENSBI
help
If enabled it allows to specify a file path to an already compiled OpenSBI binary.
If disabled the OpenSBI binary will be compiled from upstream OpenSBI repository.
This option is discouraged as compatibility with out-of-tree blobs may break anytime.
config OPENSBI_BLOB_PATH
string "Path to external opensbi.elf"
depends on OPENSBI_BLOB
help
Absolute (or relative to coreboot directory) path to the OpenSBI ELF file.
config OPENSBI_PLATFORM
string
depends on RISCV_HAS_OPENSBI
help
The OpenSBI platform to build for.
config OPENSBI_TEXT_START
hex
depends on RISCV_HAS_OPENSBI
help
The linking address used to build opensbi.
@ -77,6 +91,8 @@ config OPENSBI_FW_DYNAMIC_BOOT_HART
that is the mode usually used for the payload. If the hart does not support
Supervisor mode OpenSBI will again look for a hart that does support it.
endif # RISCV_OPENSBI
config ARCH_RISCV_U
# U (user) mode is for programs.
bool

View file

@ -159,7 +159,12 @@ $(OPENSBI_TARGET): $(obj)/config.h | $(OPENSBI_SOURCE)
FW_PAYLOAD=n \
FW_TEXT_START=$(CONFIG_OPENSBI_TEXT_START)
$(OPENSBI): $(OPENSBI_TARGET)
# build upstream OpenSBI source tree
opensbi-source-y = $(OPENSBI_TARGET)
# get OpenSBI from specified binary
opensbi-source-$(CONFIG_OPENSBI_BLOB) = $(call strip_quotes,$(CONFIG_OPENSBI_BLOB_PATH))
$(OPENSBI): $(opensbi-source-y)
cp $< $@
OPENSBI_CBFS := $(CONFIG_CBFS_PREFIX)/opensbi