-
Geert Uytterhoeven authored
If the boot CPU does not have the lowest hartid, "hartid - hbase" can become negative, leading to an incorrect hmask, causing userspace to crash with SEGV. This is observed on e.g. Starlight Beta, where cpuid 1 maps to hartid 0, and cpuid 0 maps to hartid 1. Fix this by detecting this case, and shifting the accumulated mask and updating hbase, if possible. Fixes: 26fb751c ("RISC-V: Do not use cpumask data structure for hartid bitmap") Signed-off-by:
Geert Uytterhoeven <geert@linux-m68k.org> Reviewed-by:
Atish Patra <atishp@rivosinc.com> Tested-by:
Atish Patra <atishp@rivosinc.com> Signed-off-by:
Palmer Dabbelt <palmer@rivosinc.com>
5feef64f