On Thu, Aug 28, 2025 at 5:26 PM Huacai Chen <chenhuacai@xxxxxxxxxx> wrote: > > 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 > Tiezhu's patch does not work for now unless we fix the module_attach issue. > 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 > > > > > >