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 cleger@rivosinc.com Reviewed-by: Andrew Jones ajones@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-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv