Re: [PATCH v2 3/3] LoongArch: BPF: No support of struct argument in trampoline programs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>
>
>





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux