On Wed, Aug 27, 2025 at 7:19 PM Hengqi Chen <hengqi.chen@xxxxxxxxx> wrote: > > The current implementation does not support struct argument. > This cause a oops when running bpf selftest: > > $ ./test_progs -a tracing_struct > CPU -1 Unable to handle kernel paging request at virtual address 0000000000000018, era == 90000000845659f4, ra == 90000000845659e8 > Oops[#1]: > CPU -1 Unable to handle kernel paging request at virtual address 0000000000000018, era == 9000000085bef268, ra == 90000000844f3938 > rcu: INFO: rcu_preempt detected stalls on CPUs/tasks: > rcu: 1-...0: (19 ticks this GP) idle=1094/1/0x4000000000000000 softirq=1380/1382 fqs=801 > rcu: (detected by 0, t=5252 jiffies, g=1197, q=52 ncpus=4) > Sending NMI from CPU 0 to CPUs 1: > rcu: rcu_preempt kthread starved for 2495 jiffies! g1197 f0x0 RCU_GP_DOING_FQS(6) ->state=0x0 ->cpu=2 > rcu: Unless rcu_preempt kthread gets sufficient CPU time, OOM is now expected behavior. > rcu: RCU grace-period kthread stack dump: > task:rcu_preempt state:I stack:0 pid:15 tgid:15 ppid:2 task_flags:0x208040 flags:0x00000800 > Stack : 9000000100423e80 0000000000000402 0000000000000010 90000001003b0680 > 9000000085d88000 0000000000000000 0000000000000040 9000000087159350 > 9000000085c2b9b0 0000000000000001 900000008704a000 0000000000000005 > 00000000ffff355b 00000000ffff355b 0000000000000000 0000000000000004 > 9000000085d90510 0000000000000000 0000000000000002 7b5d998f8281e86e > 00000000ffff355c 7b5d998f8281e86e 000000000000003f 9000000087159350 > 900000008715bf98 0000000000000005 9000000087036000 900000008704a000 > 9000000100407c98 90000001003aff80 900000008715c4c0 9000000085c2b9b0 > 00000000ffff355b 9000000085c33d3c 00000000000000b4 0000000000000000 > 9000000007002150 00000000ffff355b 9000000084615480 0000000007000002 > ... > Call Trace: > [<9000000085c2a868>] __schedule+0x410/0x1520 > [<9000000085c2b9ac>] schedule+0x34/0x190 > [<9000000085c33d38>] schedule_timeout+0x98/0x140 > [<90000000845e9120>] rcu_gp_fqs_loop+0x5f8/0x868 > [<90000000845ed538>] rcu_gp_kthread+0x260/0x2e0 > [<900000008454e8a4>] kthread+0x144/0x238 > [<9000000085c26b60>] ret_from_kernel_thread+0x28/0xc8 > [<90000000844f20e4>] ret_from_kernel_thread_asm+0xc/0x88 > > rcu: Stack dump where RCU GP kthread last ran: > Sending NMI from CPU 0 to CPUs 2: > NMI backtrace for cpu 2 skipped: idling at idle_exit+0x0/0x4 > > Reject it for now. Drop this patch or pick Tiezhu's patches as a single series? https://lore.kernel.org/loongarch/20250821144302.14010-1-yangtiezhu@xxxxxxxxxxx/T/#t Huacai > > Fixes: f9b6b41f0cf3 ("LoongArch: BPF: Add basic bpf trampoline support") > Acked-by: Tiezhu Yang <yangtiezhu@xxxxxxxxxxx> > Tested-by: Tiezhu Yang <yangtiezhu@xxxxxxxxxxx> > Tested-by: Vincent Li <vincent.mc.li@xxxxxxxxx> > Signed-off-by: Hengqi Chen <hengqi.chen@xxxxxxxxx> > --- > arch/loongarch/net/bpf_jit.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/arch/loongarch/net/bpf_jit.c b/arch/loongarch/net/bpf_jit.c > index c239e5ed0c92..66b102ed9874 100644 > --- a/arch/loongarch/net/bpf_jit.c > +++ b/arch/loongarch/net/bpf_jit.c > @@ -1514,6 +1514,12 @@ static int __arch_prepare_bpf_trampoline(struct jit_ctx *ctx, struct bpf_tramp_i > if (m->nr_args > LOONGARCH_MAX_REG_ARGS) > return -ENOTSUPP; > > + /* don't support struct argument */ > + for (i = 0; i < m->nr_args; i++) { > + if (m->arg_flags[i] & BTF_FMODEL_STRUCT_ARG) > + return -ENOTSUPP; > + } > + > if (flags & (BPF_TRAMP_F_ORIG_STACK | BPF_TRAMP_F_SHARE_IPMODIFY)) > return -ENOTSUPP; > > -- > 2.43.5 > > >