Felix Held submitted this change.

View Change

Approvals: build bot (Jenkins): Verified Arthur Heymans: Looks good to me, approved Philipp Hug: Looks good to me, but someone else must approve Felix Held: Looks good to me, but someone else must approve
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
Reviewed-on: https://review.coreboot.org/c/coreboot/+/79948
Reviewed-by: Philipp Hug <philipp@hug.cx>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
---
M src/arch/riscv/Kconfig
M src/arch/riscv/opensbi.c
2 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/src/arch/riscv/Kconfig b/src/arch/riscv/Kconfig
index 2578b12..e466804 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. If the hart does not support
+ Supervisor mode OpenSBI will again look for a hart that does support it.
+
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);

To view, visit change 79948. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: main
Gerrit-Change-Id: Id58bd6ae3b55a5ef3f1a5c97dfa07c79aa4c78d0
Gerrit-Change-Number: 79948
Gerrit-PatchSet: 3
Gerrit-Owner: Maximilian Brune <maximilian.brune@9elements.com>
Gerrit-Reviewer: Arthur Heymans <arthur@aheymans.xyz>
Gerrit-Reviewer: Benjamin Doron <benjamin.doron00@gmail.com>
Gerrit-Reviewer: Felix Held <felix-coreboot@felixheld.de>
Gerrit-Reviewer: Patrick Rudolph <patrick.rudolph@9elements.com>
Gerrit-Reviewer: Philipp Hug <philipp@hug.cx>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-Reviewer: ron minnich <rminnich@gmail.com>
Gerrit-CC: Lean Sheng Tan <sheng.tan@9elements.com>
Gerrit-MessageType: merged