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>
This commit is contained in:
parent
f6a7809de8
commit
a122041be1
|
@ -66,6 +66,16 @@ config OPENSBI_TEXT_START
|
|||
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
|
||||
|
|
|
@ -20,6 +20,8 @@ void run_opensbi(const int hart_id,
|
|||
.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);
|
||||
|
|
Loading…
Reference in New Issue