Attention is currently required from: Philipp Hug, ron minnich.
Maximilian Brune has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/79948?usp=email )
Change subject: arch/riscv: Add OPENSBI_FW_DYNAMIC_BOOT_HART option ......................................................................
arch/riscv: Add OPENSBI_FW_DYNAMIC_BOOT_HART option
This adds another option to tell OpenSBI which hart to use for booting.
Test: Start hifive-unmatched board and see that Hart 1 (instead of 0) is used for running OpenSBI.
Signed-off-by: Maximilian Brune maximilian.brune@9elements.com Change-Id: Id58bd6ae3b55a5ef3f1a5c97dfa07c79aa4c78d0 --- M src/arch/riscv/Kconfig M src/arch/riscv/opensbi.c 2 files changed, 12 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/48/79948/1
diff --git a/src/arch/riscv/Kconfig b/src/arch/riscv/Kconfig index 2578b12..d3f27c7 100644 --- a/src/arch/riscv/Kconfig +++ b/src/arch/riscv/Kconfig @@ -66,6 +66,16 @@ help The linking address used to build opensbi.
+config OPENSBI_FW_DYNAMIC_BOOT_HART + int + default RISCV_WORKING_HARTID + help + This specifies the hart that OpenSBI will use to boot the payload. If set to + value -1, OpenSBI will use a 'lottery' scheme to figure it out itself. + This hart must be able to execute in the Supervisor priviledged mode, since + that is the mode usually used for the payload. It is not OpenSBI will again + figure it out itself. + config ARCH_RISCV_U # U (user) mode is for programs. bool diff --git a/src/arch/riscv/opensbi.c b/src/arch/riscv/opensbi.c index 48f0f2a..bf26b22 100644 --- a/src/arch/riscv/opensbi.c +++ b/src/arch/riscv/opensbi.c @@ -20,6 +20,8 @@ .version = FW_DYNAMIC_INFO_VERSION_MAX, .next_mode = payload_mode, .next_addr = (uintptr_t)payload, + .options = 0, + .boot_hart = CONFIG_OPENSBI_FW_DYNAMIC_BOOT_HART, };
csr_write(mepc, opensbi);