v5: 1. Modify the internal implementation of larch_insn_text_copy by removing the while loop processing. There is a while loop inside copy_to_kernel_nofault that handles and copies all data. 2. text_mutex has been added to all usage contexts of larch_insn_text_copy, and the relevant tests have passed. ----------------------------------------------------------------------- Historical Version: v4: 1. Delete the #3 patch of version V3. 2. Add 5 NOP instructions in build_prologue(). Reserve space for the move_imm + jirl instruction. 3. Differentiate between direct jumps and ftrace jumps of trampoline: direct jumps skip 5 instructions. ftrace jumps skip 2 instructions. 4. Remove the generation of BL jump instructions in emit_jump_and_link(). After the trampoline ends, it will jump to the specified register. The BL instruction writes PC+4 to r1 instead of allowing the specification of rd. URL for version v4: https://lore.kernel.org/all/20250724141929.691853-1-duanchenghao@xxxxxxxxxx/ --------- v3: 1. Patch 0003 adds EXECMEM_BPF memory type to the execmem subsystem. 2. Align the size calculated by arch_bpf_trampoline_size to page boundaries. 3. Add the flush icache operation to larch_insn_text_copy. 4. Unify the implementation of bpf_arch_xxx into the patch "0004-LoongArch-BPF-Add-bpf_arch_xxxxx-support-for-Loong.patch". 5. Change the patch order. Move the patch "0002-LoongArch-BPF-Update-the-code-to-rename-validate_.patch" before "0005-LoongArch-BPF-Add-bpf-trampoline-support-for-Loon.patch". URL for version v3: https://lore.kernel.org/all/20250709055029.723243-1-duanchenghao@xxxxxxxxxx/ --------- v2: 1. Change the fixmap in the instruction copy function to set_memory_xxx. 2. Change the implementation method of the following code. - arch_alloc_bpf_trampoline - arch_free_bpf_trampoline Use the BPF core's allocation and free functions. - bpf_arch_text_invalidate Operate with the function larch_insn_text_copy that carries memory attribute modifications. 3. Correct the incorrect code formatting. URL for version v2: https://lore.kernel.org/all/20250618105048.1510560-1-duanchenghao@xxxxxxxxxx/ --------- v1: Support trampoline for LoongArch. The following feature tests have been completed: 1. fentry 2. fexit 3. fmod_ret TODO: The support for the struct_ops feature will be provided in subsequent patches. URL for version v1: https://lore.kernel.org/all/20250611035952.111182-1-duanchenghao@xxxxxxxxxx/ ----------------------------------------------------------------------- Chenghao Duan (4): LoongArch: Add larch_insn_gen_{beq,bne} helpers LoongArch: BPF: Update the code to rename validate_code to validate_ctx LoongArch: BPF: Implement dynamic code modification support LoongArch: BPF: Add bpf trampoline support for Loongarch Tiezhu Yang (1): LoongArch: BPF: Add struct ops support for trampoline arch/loongarch/include/asm/inst.h | 3 + arch/loongarch/kernel/inst.c | 54 +++ arch/loongarch/net/bpf_jit.c | 527 +++++++++++++++++++++++++++++- arch/loongarch/net/bpf_jit.h | 6 + 4 files changed, 589 insertions(+), 1 deletion(-) -- 2.25.1