On Thu, May 15, 2025 at 10:22:10AM +0200, Clément Léger wrote: > Split the code that check for the uniformity of misaligned accesses > performance on all cpus from check_unaligned_access_emulated_all_cpus() > to its own function which will be used for delegation check. No > functional changes intended. > > Signed-off-by: Clément Léger <cle...@rivosinc.com> > Reviewed-by: Andrew Jones <ajo...@ventanamicro.com> > --- > arch/riscv/kernel/traps_misaligned.c | 20 ++++++++++++++------ > 1 file changed, 14 insertions(+), 6 deletions(-) > > diff --git a/arch/riscv/kernel/traps_misaligned.c > b/arch/riscv/kernel/traps_misaligned.c > index e551ba17f557..287ec37021c8 100644 > --- a/arch/riscv/kernel/traps_misaligned.c > +++ b/arch/riscv/kernel/traps_misaligned.c > @@ -647,6 +647,18 @@ bool __init > check_vector_unaligned_access_emulated_all_cpus(void) > } > #endif > > +static bool all_cpus_unaligned_scalar_access_emulated(void) > +{ > + int cpu; > + > + for_each_online_cpu(cpu) > + if (per_cpu(misaligned_access_speed, cpu) !=
misaligned_access_speed is only defined when CONFIG_RISCV_SCALAR_MISALIGNED. This function should return false when !CONFIG_RISCV_SCALAR_MISALIGNED and only use this logic otherwise. - Charlie > + RISCV_HWPROBE_MISALIGNED_SCALAR_EMULATED) > + return false; > + > + return true; > +} > + > #ifdef CONFIG_RISCV_SCALAR_MISALIGNED > > static bool unaligned_ctl __read_mostly; > @@ -685,8 +697,6 @@ static int > cpu_online_check_unaligned_access_emulated(unsigned int cpu) > > bool __init check_unaligned_access_emulated_all_cpus(void) > { > - int cpu; > - > /* > * We can only support PR_UNALIGN controls if all CPUs have misaligned > * accesses emulated since tasks requesting such control can run on any > @@ -694,10 +704,8 @@ bool __init > check_unaligned_access_emulated_all_cpus(void) > */ > on_each_cpu(check_unaligned_access_emulated, NULL, 1); > > - for_each_online_cpu(cpu) > - if (per_cpu(misaligned_access_speed, cpu) > - != RISCV_HWPROBE_MISALIGNED_SCALAR_EMULATED) > - return false; > + if (!all_cpus_unaligned_scalar_access_emulated()) > + return false; > > unaligned_ctl = true; > return true; > -- > 2.49.0 > > > _______________________________________________ > linux-riscv mailing list > linux-ri...@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv