Attention is currently required from: Philipp Hug, Ron Minnich.
Maximilian Brune has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/83284?usp=email )
Change subject: arch/riscv: Allow adding OpenSBI as external blob ......................................................................
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 --- M src/arch/riscv/Kconfig M src/arch/riscv/Makefile.mk 2 files changed, 24 insertions(+), 3 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/84/83284/1
diff --git a/src/arch/riscv/Kconfig b/src/arch/riscv/Kconfig index b570b01..5d887ea 100644 --- a/src/arch/riscv/Kconfig +++ b/src/arch/riscv/Kconfig @@ -56,15 +56,29 @@ 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 + string "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.
@@ -78,6 +92,8 @@ 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 diff --git a/src/arch/riscv/Makefile.mk b/src/arch/riscv/Makefile.mk index d5defea..be8962a 100644 --- a/src/arch/riscv/Makefile.mk +++ b/src/arch/riscv/Makefile.mk @@ -169,7 +169,12 @@ 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-$(OPENSBI_BLOB) = $(call strip_quotes,$(OPENSBI_BLOB_PATH)) + +$(OPENSBI): $(opensbi-source-y) cp $< $@
OPENSBI_CBFS := $(CONFIG_CBFS_PREFIX)/opensbi