Re: [PATCH v2 0/7] riscv: Various text patching improvements

Palmer Dabbelt
2024-05-22T16:35:39Z

On Wed, 27 Mar 2024 09:04:39 PDT (-0700), samuel.holland@sifive.com wrote:
> Here are a few changes to minimize calls to stop_machine() and
> flush_icache_*() in the various text patching functions, as well as
> to simplify the code.
>
> This series is based on "[PATCH v3 0/2] riscv: fix patching with IPI"[1].
>
> [1]: https://lore.kernel.org/linux-riscv/20240229121056.203419-1-alexghiti@rivosinc.com/
>
> Changes in v2:
> - Remove unnecessary line wrapping
> - Further simplify patch_insn_set()/patch_insn_write() loop conditions
> - Use min() instead of min_t() since both sides are unsigned long
>
> Samuel Holland (7):
> riscv: jump_label: Batch icache maintenance
> riscv: jump_label: Simplify assembly syntax
> riscv: kprobes: Use patch_text_nosync() for insn slots
> riscv: Simplify text patching loops
> riscv: Pass patch_text() the length in bytes
> riscv: Use offset_in_page() in text patching functions
> riscv: Remove extra variable in patch_text_nosync()
>
> arch/riscv/include/asm/jump_label.h | 4 +-
> arch/riscv/include/asm/patch.h | 2 +-
> arch/riscv/kernel/jump_label.c | 16 +++++--
> arch/riscv/kernel/patch.c | 69 ++++++++++++++---------------
> arch/riscv/kernel/probes/kprobes.c | 19 ++++----
> arch/riscv/net/bpf_jit_comp64.c | 7 +--
> 6 files changed, 63 insertions(+), 54 deletions(-)

I don't have any issues with this, but given that we've run into some
possible text patching bug with this ftrace thing I'm just going to hold
off until 6.11 for these. Maybe that's a bit too conservative, but with
the bug only manifesting on HW it might be tough to sort out.