Hi Andrew, On Tue, 8 Apr 2025 at 15:03, Andrew Jones <ajones@xxxxxxxxxxxxxxxx> wrote: > On Tue, Apr 08, 2025 at 02:25:12PM +0200, Geert Uytterhoeven wrote: > > 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 > > Thanks, Geert. I think unaligned_scalar_speed_param is likely 1 in this > case and we should be printing 'emulated', but I neglected to add that > string to speed_str[]. No, the value of unaligned_scalar_speed_param is zero. > I'll fix this too. Thanks! 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