diff options
-rw-r--r-- | src/arch/riscv/Kconfig | 10 | ||||
-rw-r--r-- | src/arch/riscv/opensbi.c | 2 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/arch/riscv/Kconfig b/src/arch/riscv/Kconfig index 2578b1250c..e4668049f5 100644 --- a/src/arch/riscv/Kconfig +++ b/src/arch/riscv/Kconfig @@ -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 diff --git a/src/arch/riscv/opensbi.c b/src/arch/riscv/opensbi.c index 48f0f2a9cd..bf26b2279e 100644 --- a/src/arch/riscv/opensbi.c +++ b/src/arch/riscv/opensbi.c @@ -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); |