* [PATCH v3 3/8] RISC-V: Check scalar unaligned access on all CPUs [not found] <20240625005001.37901-1-jesse@rivosinc.com> @ 2024-06-25 0:49 ` Jesse Taube 2024-07-10 15:55 ` Evan Green 0 siblings, 1 reply; 3+ messages in thread From: Jesse Taube @ 2024-06-25 0:49 UTC (permalink / raw) To: linux-riscv Cc: Jonathan Corbet, Paul Walmsley, Palmer Dabbelt, Albert Ou, Conor Dooley, Rob Herring, Krzysztof Kozlowski, Clément Léger, Evan Green, Andrew Jones, Jesse Taube, Charlie Jenkins, Xiao Wang, Andy Chiu, Eric Biggers, Greentime Hu, Björn Töpel, Heiko Stuebner, Costa Shulyupin, Andrew Morton, Baoquan He, Anup Patel, Zong Li, Sami Tolvanen, Ben Dooks, Alexandre Ghiti, Gustavo A. R. Silva, Erick Archer, Joel Granados, linux-doc, linux-kernel, devicetree, stable Originally, the check_unaligned_access_emulated_all_cpus function only checked the boot hart. This fixes the function to check all harts. Fixes: 71c54b3d169d ("riscv: report misaligned accesses emulation to hwprobe") Signed-off-by: Jesse Taube <jesse@rivosinc.com> Cc: stable@vger.kernel.org --- V1 -> V2: - New patch V2 -> V3: - Split patch --- arch/riscv/kernel/traps_misaligned.c | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/arch/riscv/kernel/traps_misaligned.c b/arch/riscv/kernel/traps_misaligned.c index b62d5a2f4541..8fadbe00dd62 100644 --- a/arch/riscv/kernel/traps_misaligned.c +++ b/arch/riscv/kernel/traps_misaligned.c @@ -526,31 +526,17 @@ int handle_misaligned_store(struct pt_regs *regs) return 0; } -static bool check_unaligned_access_emulated(int cpu) +static void check_unaligned_access_emulated(struct work_struct *unused) { + int cpu = smp_processor_id(); long *mas_ptr = per_cpu_ptr(&misaligned_access_speed, cpu); unsigned long tmp_var, tmp_val; - bool misaligned_emu_detected; *mas_ptr = RISCV_HWPROBE_MISALIGNED_UNKNOWN; __asm__ __volatile__ ( " "REG_L" %[tmp], 1(%[ptr])\n" : [tmp] "=r" (tmp_val) : [ptr] "r" (&tmp_var) : "memory"); - - misaligned_emu_detected = (*mas_ptr == RISCV_HWPROBE_MISALIGNED_EMULATED); - /* - * If unaligned_ctl is already set, this means that we detected that all - * CPUS uses emulated misaligned access at boot time. If that changed - * when hotplugging the new cpu, this is something we don't handle. - */ - if (unlikely(unaligned_ctl && !misaligned_emu_detected)) { - pr_crit("CPU misaligned accesses non homogeneous (expected all emulated)\n"); - while (true) - cpu_relax(); - } - - return misaligned_emu_detected; } bool check_unaligned_access_emulated_all_cpus(void) @@ -562,8 +548,11 @@ bool check_unaligned_access_emulated_all_cpus(void) * accesses emulated since tasks requesting such control can run on any * CPU. */ + schedule_on_each_cpu(check_unaligned_access_emulated); + for_each_online_cpu(cpu) - if (!check_unaligned_access_emulated(cpu)) + if (per_cpu(misaligned_access_speed, cpu) + != RISCV_HWPROBE_MISALIGNED_EMULATED) return false; unaligned_ctl = true; -- 2.45.2 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v3 3/8] RISC-V: Check scalar unaligned access on all CPUs 2024-06-25 0:49 ` [PATCH v3 3/8] RISC-V: Check scalar unaligned access on all CPUs Jesse Taube @ 2024-07-10 15:55 ` Evan Green 2024-07-11 20:25 ` Jesse Taube 0 siblings, 1 reply; 3+ messages in thread From: Evan Green @ 2024-07-10 15:55 UTC (permalink / raw) To: Jesse Taube Cc: linux-riscv, Jonathan Corbet, Paul Walmsley, Palmer Dabbelt, Albert Ou, Conor Dooley, Rob Herring, Krzysztof Kozlowski, Clément Léger, Andrew Jones, Charlie Jenkins, Xiao Wang, Andy Chiu, Eric Biggers, Greentime Hu, Björn Töpel, Heiko Stuebner, Costa Shulyupin, Andrew Morton, Baoquan He, Anup Patel, Zong Li, Sami Tolvanen, Ben Dooks, Alexandre Ghiti, Gustavo A. R. Silva, Erick Archer, Joel Granados, linux-doc, linux-kernel, devicetree, stable On Mon, Jun 24, 2024 at 5:51 PM Jesse Taube <jesse@rivosinc.com> wrote: > > Originally, the check_unaligned_access_emulated_all_cpus function > only checked the boot hart. This fixes the function to check all > harts. > > Fixes: 71c54b3d169d ("riscv: report misaligned accesses emulation to hwprobe") > Signed-off-by: Jesse Taube <jesse@rivosinc.com> > Cc: stable@vger.kernel.org > --- > V1 -> V2: > - New patch > V2 -> V3: > - Split patch > --- > arch/riscv/kernel/traps_misaligned.c | 23 ++++++----------------- > 1 file changed, 6 insertions(+), 17 deletions(-) > > diff --git a/arch/riscv/kernel/traps_misaligned.c b/arch/riscv/kernel/traps_misaligned.c > index b62d5a2f4541..8fadbe00dd62 100644 > --- a/arch/riscv/kernel/traps_misaligned.c > +++ b/arch/riscv/kernel/traps_misaligned.c > @@ -526,31 +526,17 @@ int handle_misaligned_store(struct pt_regs *regs) > return 0; > } > > -static bool check_unaligned_access_emulated(int cpu) > +static void check_unaligned_access_emulated(struct work_struct *unused) > { > + int cpu = smp_processor_id(); > long *mas_ptr = per_cpu_ptr(&misaligned_access_speed, cpu); > unsigned long tmp_var, tmp_val; > - bool misaligned_emu_detected; > > *mas_ptr = RISCV_HWPROBE_MISALIGNED_UNKNOWN; > > __asm__ __volatile__ ( > " "REG_L" %[tmp], 1(%[ptr])\n" > : [tmp] "=r" (tmp_val) : [ptr] "r" (&tmp_var) : "memory"); > - > - misaligned_emu_detected = (*mas_ptr == RISCV_HWPROBE_MISALIGNED_EMULATED); > - /* > - * If unaligned_ctl is already set, this means that we detected that all > - * CPUS uses emulated misaligned access at boot time. If that changed > - * when hotplugging the new cpu, this is something we don't handle. > - */ > - if (unlikely(unaligned_ctl && !misaligned_emu_detected)) { > - pr_crit("CPU misaligned accesses non homogeneous (expected all emulated)\n"); > - while (true) > - cpu_relax(); > - } This chunk was meant to detect and refuse to run on a system where a heterogeneous CPU is hotplugged into a previously homogenous system. The commit message doesn't mention this change, how come you deleted it? > - > - return misaligned_emu_detected; > } > > bool check_unaligned_access_emulated_all_cpus(void) > @@ -562,8 +548,11 @@ bool check_unaligned_access_emulated_all_cpus(void) > * accesses emulated since tasks requesting such control can run on any > * CPU. > */ > + schedule_on_each_cpu(check_unaligned_access_emulated); > + > for_each_online_cpu(cpu) > - if (!check_unaligned_access_emulated(cpu)) > + if (per_cpu(misaligned_access_speed, cpu) > + != RISCV_HWPROBE_MISALIGNED_EMULATED) > return false; > > unaligned_ctl = true; > -- > 2.45.2 > ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v3 3/8] RISC-V: Check scalar unaligned access on all CPUs 2024-07-10 15:55 ` Evan Green @ 2024-07-11 20:25 ` Jesse Taube 0 siblings, 0 replies; 3+ messages in thread From: Jesse Taube @ 2024-07-11 20:25 UTC (permalink / raw) To: Evan Green Cc: linux-riscv, Jonathan Corbet, Paul Walmsley, Palmer Dabbelt, Albert Ou, Conor Dooley, Rob Herring, Krzysztof Kozlowski, Clément Léger, Andrew Jones, Charlie Jenkins, Xiao Wang, Andy Chiu, Eric Biggers, Greentime Hu, Björn Töpel, Heiko Stuebner, Costa Shulyupin, Andrew Morton, Baoquan He, Anup Patel, Zong Li, Sami Tolvanen, Ben Dooks, Alexandre Ghiti, Gustavo A. R. Silva, Erick Archer, Joel Granados, linux-doc, linux-kernel, devicetree, stable On 7/10/24 11:55, Evan Green wrote: > On Mon, Jun 24, 2024 at 5:51 PM Jesse Taube <jesse@rivosinc.com> wrote: >> >> Originally, the check_unaligned_access_emulated_all_cpus function >> only checked the boot hart. This fixes the function to check all >> harts. >> >> Fixes: 71c54b3d169d ("riscv: report misaligned accesses emulation to hwprobe") >> Signed-off-by: Jesse Taube <jesse@rivosinc.com> >> Cc: stable@vger.kernel.org >> --- >> V1 -> V2: >> - New patch >> V2 -> V3: >> - Split patch >> --- >> arch/riscv/kernel/traps_misaligned.c | 23 ++++++----------------- >> 1 file changed, 6 insertions(+), 17 deletions(-) >> >> diff --git a/arch/riscv/kernel/traps_misaligned.c b/arch/riscv/kernel/traps_misaligned.c >> index b62d5a2f4541..8fadbe00dd62 100644 >> --- a/arch/riscv/kernel/traps_misaligned.c >> +++ b/arch/riscv/kernel/traps_misaligned.c >> @@ -526,31 +526,17 @@ int handle_misaligned_store(struct pt_regs *regs) >> return 0; >> } >> >> -static bool check_unaligned_access_emulated(int cpu) >> +static void check_unaligned_access_emulated(struct work_struct *unused) >> { >> + int cpu = smp_processor_id(); >> long *mas_ptr = per_cpu_ptr(&misaligned_access_speed, cpu); >> unsigned long tmp_var, tmp_val; >> - bool misaligned_emu_detected; >> >> *mas_ptr = RISCV_HWPROBE_MISALIGNED_UNKNOWN; >> >> __asm__ __volatile__ ( >> " "REG_L" %[tmp], 1(%[ptr])\n" >> : [tmp] "=r" (tmp_val) : [ptr] "r" (&tmp_var) : "memory"); >> - >> - misaligned_emu_detected = (*mas_ptr == RISCV_HWPROBE_MISALIGNED_EMULATED); >> - /* >> - * If unaligned_ctl is already set, this means that we detected that all >> - * CPUS uses emulated misaligned access at boot time. If that changed >> - * when hotplugging the new cpu, this is something we don't handle. >> - */ >> - if (unlikely(unaligned_ctl && !misaligned_emu_detected)) { >> - pr_crit("CPU misaligned accesses non homogeneous (expected all emulated)\n"); >> - while (true) >> - cpu_relax(); >> - } > > This chunk was meant to detect and refuse to run on a system where a > heterogeneous CPU is hotplugged into a previously homogenous system. > The commit message doesn't mention this change, how come you > deleted it? Sorry for the long wait. I do not remember why I removed this. Your right it shouldn't be removed, I added it back. Thanks, Jesse Taube > > >> - >> - return misaligned_emu_detected; >> } >> >> bool check_unaligned_access_emulated_all_cpus(void) >> @@ -562,8 +548,11 @@ bool check_unaligned_access_emulated_all_cpus(void) >> * accesses emulated since tasks requesting such control can run on any >> * CPU. >> */ >> + schedule_on_each_cpu(check_unaligned_access_emulated); >> + >> for_each_online_cpu(cpu) >> - if (!check_unaligned_access_emulated(cpu)) >> + if (per_cpu(misaligned_access_speed, cpu) >> + != RISCV_HWPROBE_MISALIGNED_EMULATED) >> return false; >> >> unaligned_ctl = true; >> -- >> 2.45.2 >> ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-07-11 20:25 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20240625005001.37901-1-jesse@rivosinc.com>
2024-06-25 0:49 ` [PATCH v3 3/8] RISC-V: Check scalar unaligned access on all CPUs Jesse Taube
2024-07-10 15:55 ` Evan Green
2024-07-11 20:25 ` Jesse Taube
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox