riscv: Only check online cpus for emulated accesses
authorCharlie Jenkins <charlie@rivosinc.com>
Fri, 8 Mar 2024 18:25:56 +0000 (10:25 -0800)
committerPalmer Dabbelt <palmer@rivosinc.com>
Wed, 13 Mar 2024 14:30:29 +0000 (07:30 -0700)
The unaligned access checker only sets valid values for online cpus.
Check for these values on online cpus rather than on present cpus.

Signed-off-by: Charlie Jenkins <charlie@rivosinc.com>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Fixes: 71c54b3d169d ("riscv: report misaligned accesses emulation to hwprobe")
Tested-by: Samuel Holland <samuel.holland@sifive.com>
Link: https://lore.kernel.org/r/20240308-disable_misaligned_probe_config-v9-2-a388770ba0ce@rivosinc.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/kernel/traps_misaligned.c

index 8ded225e8c5b1313d800c8f87878212c48c9b250..c2ed4e689bf96d5d31a081ce4ab04483599dac8f 100644 (file)
@@ -632,7 +632,7 @@ void unaligned_emulation_finish(void)
         * accesses emulated since tasks requesting such control can run on any
         * CPU.
         */
-       for_each_present_cpu(cpu) {
+       for_each_online_cpu(cpu) {
                if (per_cpu(misaligned_access_speed, cpu) !=
                                        RISCV_HWPROBE_MISALIGNED_EMULATED) {
                        return;