[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aJR/+4cl8NzhIsQU@linux.ibm.com>
Date: Thu, 7 Aug 2025 15:59:15 +0530
From: Saket Kumar Bhaskar <skb99@...ux.ibm.com>
To: Christophe Leroy <christophe.leroy@...roup.eu>
Cc: Venkat Rao Bagalkote <venkat88@...ux.ibm.com>, bpf@...r.kernel.org,
linuxppc-dev@...ts.ozlabs.org, linux-kselftest@...r.kernel.org,
linux-kernel@...r.kernel.org, hbathini@...ux.ibm.com,
sachinpb@...ux.ibm.com, andrii@...nel.org, eddyz87@...il.com,
mykolal@...com, ast@...nel.org, daniel@...earbox.net,
martin.lau@...ux.dev, song@...nel.org, yonghong.song@...ux.dev,
john.fastabend@...il.com, kpsingh@...nel.org, sdf@...ichev.me,
haoluo@...gle.com, jolsa@...nel.org, naveen@...nel.org,
maddy@...ux.ibm.com, mpe@...erman.id.au, npiggin@...il.com,
memxor@...il.com, iii@...ux.ibm.com, shuah@...nel.org
Subject: Re: [bpf-next 1/6] bpf,powerpc: Introduce
bpf_jit_emit_probe_mem_store() to emit store instructions
On Wed, Aug 06, 2025 at 08:59:59AM +0200, Christophe Leroy wrote:
>
>
> Le 05/08/2025 à 13:59, Venkat Rao Bagalkote a écrit :
> >
> > On 05/08/25 1:04 pm, Christophe Leroy wrote:
> > >
> > >
> > > Le 05/08/2025 à 08:27, Saket Kumar Bhaskar a écrit :
> > > > bpf_jit_emit_probe_mem_store() is introduced to emit instructions for
> > > > storing memory values depending on the size (byte, halfword,
> > > > word, doubleword).
> > >
> > > Build break with this patch
> > >
> > > CC arch/powerpc/net/bpf_jit_comp64.o
> > > arch/powerpc/net/bpf_jit_comp64.c:395:12: error:
> > > 'bpf_jit_emit_probe_mem_store' defined but not used [-Werror=unused-
> > > function]
> > > static int bpf_jit_emit_probe_mem_store(struct codegen_context
> > > *ctx, u32 src_reg, s16 off,
> > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > cc1: all warnings being treated as errors
> > > make[4]: *** [scripts/Makefile.build:287: arch/powerpc/net/
> > > bpf_jit_comp64.o] Error 1
> > >
> > I tried this on top of bpf-next, and for me build passed.
>
> Build of _this_ patch (alone) passed ?
>
> This patch defines a static function but doesn't use it, so the build must
> breaks because of that, unless you have set CONFIG_PPC_DISABLE_WERROR.
>
> Following patch starts using this function so then the build doesn't break
> anymore. But until next patch is applied the build doesn't work. Both
> patches have to be squashed together in order to not break bisectability of
> the kernel.
>
> Christophe
>
Got it Chris, will squash both the patches together in v2.
> >
> > Note: I applied https://eur01.safelinks.protection.outlook.com/?
> > url=https%3A%2F%2Flore.kernel.org%2Fbpf%2F20250717202935.29018-2- puranjay%40kernel.org%2F&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C0468473019834e07ef2b08ddd4179b9c%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C638899920058624267%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=iZLg9NUWxtH3vO1STI8wRYLzwvhohd2KKTAGYDe3WnM%3D&reserved=0
> > before applying current patch.
> >
> > gcc version 14.2.1 20250110
> >
> > uname -r: 6.16.0-gf2844c7fdb07
> >
> > bpf-next repo: https://eur01.safelinks.protection.outlook.com/? url=https%3A%2F%2Fkernel.googlesource.com%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fbpf%2Fbpf-next&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C0468473019834e07ef2b08ddd4179b9c%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C638899920058644309%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=OrMauttrzPbaFYhzKdkH5l%2FltISc95MwitnUC7YLhJQ%3D&reserved=0
> >
> > HEAD:
> >
> > commit f3af62b6cee8af9f07012051874af2d2a451f0e5 (origin/master, origin/
> > HEAD)
> > Author: Tao Chen <chen.dylane@...ux.dev>
> > Date: Wed Jul 23 22:44:42 2025 +0800
> >
> > bpftool: Add bash completion for token argument
> >
> >
> > Build Success logs:
> >
> > TEST-OBJ [test_progs-cpuv4] xdp_vlan.test.o
> > TEST-OBJ [test_progs-cpuv4] xdpwall.test.o
> > TEST-OBJ [test_progs-cpuv4] xfrm_info.test.o
> > BINARY bench
> > BINARY test_maps
> > BINARY test_progs
> > BINARY test_progs-no_alu32
> > BINARY test_progs-cpuv4
> >
> >
> > Regards,
> >
> > Venkat.
> >
> > >
> > > >
> > > > Signed-off-by: Saket Kumar Bhaskar <skb99@...ux.ibm.com>
> > > > ---
> > > > arch/powerpc/net/bpf_jit_comp64.c | 30 ++++++++++++++++++++++++++++++
> > > > 1 file changed, 30 insertions(+)
> > > >
> > > > diff --git a/arch/powerpc/net/bpf_jit_comp64.c
> > > > b/arch/powerpc/net/ bpf_jit_comp64.c
> > > > index 025524378443..489de21fe3d6 100644
> > > > --- a/arch/powerpc/net/bpf_jit_comp64.c
> > > > +++ b/arch/powerpc/net/bpf_jit_comp64.c
> > > > @@ -409,6 +409,36 @@ asm (
> > > > " blr ;"
> > > > );
> > > > +static int bpf_jit_emit_probe_mem_store(struct
> > > > codegen_context *ctx, u32 src_reg, s16 off,
> > > > + u32 code, u32 *image)
> > > > +{
> > > > + u32 tmp1_reg = bpf_to_ppc(TMP_REG_1);
> > > > + u32 tmp2_reg = bpf_to_ppc(TMP_REG_2);
> > > > +
> > > > + switch (BPF_SIZE(code)) {
> > > > + case BPF_B:
> > > > + EMIT(PPC_RAW_STB(src_reg, tmp1_reg, off));
> > > > + break;
> > > > + case BPF_H:
> > > > + EMIT(PPC_RAW_STH(src_reg, tmp1_reg, off));
> > > > + break;
> > > > + case BPF_W:
> > > > + EMIT(PPC_RAW_STW(src_reg, tmp1_reg, off));
> > > > + break;
> > > > + case BPF_DW:
> > > > + if (off % 4) {
> > > > + EMIT(PPC_RAW_LI(tmp2_reg, off));
> > > > + EMIT(PPC_RAW_STDX(src_reg, tmp1_reg, tmp2_reg));
> > > > + } else {
> > > > + EMIT(PPC_RAW_STD(src_reg, tmp1_reg, off));
> > > > + }
> > > > + break;
> > > > + default:
> > > > + return -EINVAL;
> > > > + }
> > > > + return 0;
> > > > +}
> > > > +
> > > > static int emit_atomic_ld_st(const struct bpf_insn insn,
> > > > struct codegen_context *ctx, u32 *image)
> > > > {
> > > > u32 code = insn.code;
> > >
>
Powered by blists - more mailing lists