Commit 77d707a3 authored by Palmer Dabbelt's avatar Palmer Dabbelt

RISC-V: Only default to spinwait on SBI-0.1 and M-mode

The spinwait boot method has been superseded by the SBI HSM extension
for some time now, but it still enabled by default.  This causes some
issues on large hart count systems, which will hang if a physical hart
exists that is larger than NR_CPUS.

Users on modern SBI implementation don't need spinwait, and while it's
probably possible to deal with some of the spinwait issues let's just
restrict the default to systems that are likely to actually use it.
Signed-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
Reviewed-by: default avatarAtish Patra <atishp@rivosinc.com>
Reviewed-by: default avatarAnup Patel <anup@brainfault.org>
Link: https://lore.kernel.org/r/20220421170354.10555-1-palmer@rivosinc.comSigned-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
parent 2981deb8
...@@ -396,7 +396,7 @@ config RISCV_SBI_V01 ...@@ -396,7 +396,7 @@ config RISCV_SBI_V01
config RISCV_BOOT_SPINWAIT config RISCV_BOOT_SPINWAIT
bool "Spinwait booting method" bool "Spinwait booting method"
depends on SMP depends on SMP
default y default y if RISCV_SBI_V01 || RISCV_M_MODE
help help
This enables support for booting Linux via spinwait method. In the This enables support for booting Linux via spinwait method. In the
spinwait method, all cores randomly jump to Linux. One of the cores spinwait method, all cores randomly jump to Linux. One of the cores
...@@ -407,6 +407,12 @@ config RISCV_BOOT_SPINWAIT ...@@ -407,6 +407,12 @@ config RISCV_BOOT_SPINWAIT
rely on ordered booting via SBI HSM extension which gets chosen rely on ordered booting via SBI HSM extension which gets chosen
dynamically at runtime if the firmware supports it. dynamically at runtime if the firmware supports it.
Since spinwait is incompatible with sparse hart IDs, it requires
NR_CPUS be large enough to contain the physical hart ID of the first
hart to enter Linux.
If unsure what to do here, say N.
config KEXEC config KEXEC
bool "Kexec system call" bool "Kexec system call"
select KEXEC_CORE select KEXEC_CORE
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment