On Wed, Sep 3, 2025 at 10:52 PM Huacai Chen <chenhuacai@xxxxxxxxxx> wrote: > > Hi, Hengqi, > > On Wed, Sep 3, 2025 at 8:06 PM Hengqi Chen <hengqi.chen@xxxxxxxxx> wrote: > > > > The current implementation of bpf_arch_text_poke() requires 5 nops > > at patch site which is not applicable for kernel/module functions. > > With CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y, this can be done > > by ftrace instead. > Does this mean BPF trampoline can only work with FTRACE enabled? > IIUC, with CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=n, we could still trace BPF progs with BPF trampoline. > Huacai > > > > > See the following commit for details: > > * commit b91e014f078e ("bpf: Make BPF trampoline use register_ftrace_direct() API") > > * commit 9cdc3b6a299c ("LoongArch: ftrace: Add direct call support") > > > > Signed-off-by: Hengqi Chen <hengqi.chen@xxxxxxxxx> > > --- > > arch/loongarch/net/bpf_jit.c | 7 +++++-- > > 1 file changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/arch/loongarch/net/bpf_jit.c b/arch/loongarch/net/bpf_jit.c > > index 7b7e449b9ea9..35b13d91a979 100644 > > --- a/arch/loongarch/net/bpf_jit.c > > +++ b/arch/loongarch/net/bpf_jit.c > > @@ -1294,8 +1294,11 @@ int bpf_arch_text_poke(void *ip, enum bpf_text_poke_type poke_type, > > u32 old_insns[LOONGARCH_LONG_JUMP_NINSNS] = {[0 ... 4] = INSN_NOP}; > > u32 new_insns[LOONGARCH_LONG_JUMP_NINSNS] = {[0 ... 4] = INSN_NOP}; > > > > - if (!is_kernel_text((unsigned long)ip) && > > - !is_bpf_text_address((unsigned long)ip)) > > + if (!is_bpf_text_address((unsigned long)ip)) > > + /* Only poking bpf text is supported. Since kernel function > > + * entry is set up by ftrace, we reply on ftrace to poke kernel > > + * functions. > > + */ > > return -ENOTSUPP; > > > > ret = emit_jump_or_nops(old_addr, ip, old_insns, is_call); > > -- > > 2.43.5 > >