From: Menglong Dong <menglong.dong@linux.dev>
To: Menglong Dong <menglong8.dong@gmail.com>,
Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: ast@kernel.org, andrii@kernel.org, daniel@iogearbox.net,
martin.lau@linux.dev, eddyz87@gmail.com, song@kernel.org,
yonghong.song@linux.dev, john.fastabend@gmail.com,
kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com,
jolsa@kernel.org, davem@davemloft.net, dsahern@kernel.org,
tglx@linutronix.de, mingo@redhat.com, jiang.biao@linux.dev,
bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org,
hpa@zytor.com, bpf@vger.kernel.org, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH bpf-next v9 06/11] bpf,x86: introduce emit_store_stack_imm64() for trampoline
Date: Wed, 14 Jan 2026 10:31:22 +0800 [thread overview]
Message-ID: <8672423.NyiUUSuA9g@7940hx> (raw)
In-Reply-To: <CAEf4BzbKKmNnqQP0g8OVSgwqb2DTidBpKBjyi-QQJBRJ+-6SWg@mail.gmail.com>
On 2026/1/14 09:22 Andrii Nakryiko <andrii.nakryiko@gmail.com> write:
> On Sat, Jan 10, 2026 at 6:12 AM Menglong Dong <menglong8.dong@gmail.com> wrote:
> >
> > Introduce the helper emit_store_stack_imm64(), which is used to store a
> > imm64 to the stack with the help of r0.
> >
> > Signed-off-by: Menglong Dong <dongml2@chinatelecom.cn>
> > ---
> > v9:
> > - rename emit_st_r0_imm64() to emit_store_stack_imm64()
> > ---
> > arch/x86/net/bpf_jit_comp.c | 15 +++++++++++----
> > 1 file changed, 11 insertions(+), 4 deletions(-)
> >
> > diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
> > index e3b1c4b1d550..d94f7038c441 100644
> > --- a/arch/x86/net/bpf_jit_comp.c
> > +++ b/arch/x86/net/bpf_jit_comp.c
> > @@ -1300,6 +1300,15 @@ static void emit_st_r12(u8 **pprog, u32 size, u32 dst_reg, int off, int imm)
> > emit_st_index(pprog, size, dst_reg, X86_REG_R12, off, imm);
> > }
> >
> > +static void emit_store_stack_imm64(u8 **pprog, int stack_off, u64 imm64)
> > +{
> > + /* mov rax, imm64
> > + * mov QWORD PTR [rbp - stack_off], rax
> > + */
> > + emit_mov_imm64(pprog, BPF_REG_0, imm64 >> 32, (u32) imm64);
>
> maybe make the caller pass BPF_REG_0 explicitly, it will be more
> generic but also more explicit that BPF_REG_0 is used as temporary
> register?
OK! I were worried about that it wasn't explicit that BPF_REG_0 is
used too.
>
> > + emit_stx(pprog, BPF_DW, BPF_REG_FP, BPF_REG_0, -stack_off);
>
> why are you negating stack offset here and not in the caller?..
>
> > +}
> > +
> > static int emit_atomic_rmw(u8 **pprog, u32 atomic_op,
> > u32 dst_reg, u32 src_reg, s16 off, u8 bpf_size)
> > {
> > @@ -3352,16 +3361,14 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_im
> > * mov rax, nr_regs
> > * mov QWORD PTR [rbp - nregs_off], rax
> > */
> > - emit_mov_imm64(&prog, BPF_REG_0, 0, (u32) nr_regs);
> > - emit_stx(&prog, BPF_DW, BPF_REG_FP, BPF_REG_0, -nregs_off);
> > + emit_store_stack_imm64(&prog, nregs_off, nr_regs);
> >
> > if (flags & BPF_TRAMP_F_IP_ARG) {
> > /* Store IP address of the traced function:
> > * movabsq rax, func_addr
> > * mov QWORD PTR [rbp - ip_off], rax
> > */
> > - emit_mov_imm64(&prog, BPF_REG_0, (long) func_addr >> 32, (u32) (long) func_addr);
> > - emit_stx(&prog, BPF_DW, BPF_REG_FP, BPF_REG_0, -ip_off);
> > + emit_store_stack_imm64(&prog, ip_off, (long)func_addr);
>
> see above, I'd pass BPF_REG_0 and -ip_off (and -nregs_off) explicitly,
> too many small transformations are hidden inside
> emit_store_stack_imm64(), IMO
ACK. The negating offset in emit_store_stack_imm64() indeed implicit.
I'll use this way in the next version.
Thanks!
Menglong Dong
>
>
> > }
> >
> > save_args(m, &prog, regs_off, false, flags);
> > --
> > 2.52.0
> >
>
next prev parent reply other threads:[~2026-01-14 2:31 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-10 14:11 [PATCH bpf-next v9 00/11] bpf: fsession support Menglong Dong
2026-01-10 14:11 ` [PATCH bpf-next v9 01/11] bpf: add " Menglong Dong
2026-01-14 1:22 ` Andrii Nakryiko
2026-01-14 2:10 ` Menglong Dong
2026-01-14 18:56 ` Andrii Nakryiko
2026-01-15 2:05 ` Menglong Dong
2026-01-15 8:33 ` Menglong Dong
2026-01-10 14:11 ` [PATCH bpf-next v9 02/11] bpf: use last 8-bits for the nr_args in trampoline Menglong Dong
2026-01-14 1:22 ` Andrii Nakryiko
2026-01-14 2:19 ` Menglong Dong
2026-01-14 9:52 ` David Laight
2026-01-10 14:11 ` [PATCH bpf-next v9 03/11] bpf: change prototype of bpf_session_{cookie,is_return} Menglong Dong
2026-01-14 1:22 ` Andrii Nakryiko
2026-01-14 2:19 ` Menglong Dong
2026-01-10 14:11 ` [PATCH bpf-next v9 04/11] bpf: support fsession for bpf_session_is_return Menglong Dong
2026-01-14 1:22 ` Andrii Nakryiko
2026-01-14 2:25 ` Menglong Dong
2026-01-10 14:11 ` [PATCH bpf-next v9 05/11] bpf: support fsession for bpf_session_cookie Menglong Dong
2026-01-10 14:42 ` bot+bpf-ci
2026-01-11 1:54 ` Menglong Dong
2026-01-14 1:22 ` Andrii Nakryiko
2026-01-14 2:33 ` Alexei Starovoitov
2026-01-14 2:38 ` Menglong Dong
2026-01-14 2:48 ` Menglong Dong
2026-01-10 14:11 ` [PATCH bpf-next v9 06/11] bpf,x86: introduce emit_store_stack_imm64() for trampoline Menglong Dong
2026-01-14 1:22 ` Andrii Nakryiko
2026-01-14 2:31 ` Menglong Dong [this message]
2026-01-10 14:11 ` [PATCH bpf-next v9 07/11] bpf,x86: add fsession support for x86_64 Menglong Dong
2026-01-14 1:25 ` Andrii Nakryiko
2026-01-14 3:27 ` Menglong Dong
2026-01-14 3:35 ` Menglong Dong
2026-01-14 19:05 ` Andrii Nakryiko
2026-01-15 2:12 ` Menglong Dong
2026-01-10 14:11 ` [PATCH bpf-next v9 08/11] libbpf: add fsession support Menglong Dong
2026-01-14 1:24 ` Andrii Nakryiko
2026-01-14 3:27 ` Menglong Dong
2026-01-10 14:11 ` [PATCH bpf-next v9 09/11] selftests/bpf: add testcases for fsession Menglong Dong
2026-01-10 14:11 ` [PATCH bpf-next v9 10/11] selftests/bpf: add testcases for fsession cookie Menglong Dong
2026-01-10 14:11 ` [PATCH bpf-next v9 11/11] selftests/bpf: test fsession mixed with fentry and fexit Menglong Dong
2026-01-14 2:28 ` [PATCH bpf-next v9 00/11] bpf: fsession support Alexei Starovoitov
2026-01-14 2:52 ` Menglong Dong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8672423.NyiUUSuA9g@7940hx \
--to=menglong.dong@linux.dev \
--cc=andrii.nakryiko@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bp@alien8.de \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=dave.hansen@linux.intel.com \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=eddyz87@gmail.com \
--cc=haoluo@google.com \
--cc=hpa@zytor.com \
--cc=jiang.biao@linux.dev \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=menglong8.dong@gmail.com \
--cc=mingo@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=sdf@fomichev.me \
--cc=song@kernel.org \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
--cc=yonghong.song@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.