Hi Andrew, On Tue, 4 Mar 2025 at 13:02, Andrew Jones <ajones@xxxxxxxxxxxxxxxx> wrote: > Allow skipping scalar and vector unaligned access speed tests. This > is useful for testing alternative code paths and to skip the tests in > environments where they run too slowly. All CPUs must have the same > unaligned access speed. > > The code movement is because we now need the scalar cpu hotplug > callback to always run, so we need to bring it and its supporting > functions out of CONFIG_RISCV_PROBE_UNALIGNED_ACCESS. > > Signed-off-by: Andrew Jones <ajones@xxxxxxxxxxxxxxxx> > --- a/arch/riscv/kernel/unaligned_access_speed.c > +++ b/arch/riscv/kernel/unaligned_access_speed.c > static int __init check_unaligned_access_all_cpus(void) > { > int cpu; > > - if (!check_unaligned_access_emulated_all_cpus()) > + if (unaligned_scalar_speed_param == RISCV_HWPROBE_MISALIGNED_SCALAR_UNKNOWN && > + !check_unaligned_access_emulated_all_cpus()) { > check_unaligned_access_speed_all_cpus(); > - > - if (!has_vector()) { > + } else { > + pr_info("scalar unaligned access speed set to '%s' by command line\n", > + speed_str[unaligned_scalar_speed_param]); > for_each_online_cpu(cpu) > - per_cpu(vector_misaligned_access, cpu) = RISCV_HWPROBE_MISALIGNED_VECTOR_UNSUPPORTED; > - } else if (!check_vector_unaligned_access_emulated_all_cpus() && > - IS_ENABLED(CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS)) { > + per_cpu(misaligned_access_speed, cpu) = unaligned_scalar_speed_param; > + } > + > + if (!has_vector()) > + unaligned_vector_speed_param = RISCV_HWPROBE_MISALIGNED_VECTOR_UNSUPPORTED; > + > + if (unaligned_vector_speed_param == RISCV_HWPROBE_MISALIGNED_VECTOR_UNKNOWN && > + !check_vector_unaligned_access_emulated_all_cpus() && > + IS_ENABLED(CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS)) { > kthread_run(vec_check_unaligned_access_speed_all_cpus, > NULL, "vec_check_unaligned_access_speed_all_cpus"); > + } else { > + pr_info("vector unaligned access speed set to '%s' by command line\n", > + speed_str[unaligned_vector_speed_param]); On SiPEED MAiXBiT, unaligned_scalar_speed_param is zero, and it prints: scalar unaligned access speed set to '(null)' by command line > + for_each_online_cpu(cpu) > + per_cpu(vector_misaligned_access, cpu) = unaligned_vector_speed_param; > } > Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds