From: John Fastabend <john.fastabend@gmail.com>
To: Tiezhu Yang <yangtiezhu@loongson.cn>,
John Fastabend <john.fastabend@gmail.com>,
Huacai Chen <chenhuacai@kernel.org>
Cc: loongarch@lists.linux.dev, bpf@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] LoongArch: BPF: Sign-extend return values
Date: Sat, 23 Nov 2024 07:57:32 -0800 [thread overview]
Message-ID: <6741fb6c516cc_c6be20839@john.notmuch> (raw)
In-Reply-To: <4f6c74e0-dd22-8460-96fa-f408291a3ef8@loongson.cn>
Tiezhu Yang wrote:
> On 11/22/2024 08:41 AM, John Fastabend wrote:
> > Tiezhu Yang wrote:
> >> (1) Description of Problem:
> >>
> >> When testing BPF JIT with the latest compiler toolchains on LoongArch,
> >> there exist some strange failed test cases, dmesg shows something like
> >> this:
> >>
> >> # dmesg -t | grep FAIL | head -1
> >> ... ret -3 != -3 (0xfffffffd != 0xfffffffd)FAIL ...
>
> ...
>
> >>
> >> (5) Final Solution:
> >>
> >> Keep a5 zero-extended, but explicitly sign-extend a0 (which is used
> >> outside BPF land). Because libbpf currently defines the return value
> >> of an ebpf program as a 32-bit unsigned integer, just use addi.w to
> >> extend bit 31 into bits 63 through 32 of a5 to a0. This is similar
> >> with commit 2f1b0d3d7331 ("riscv, bpf: Sign-extend return values").
> >>
> >> Fixes: 5dc615520c4d ("LoongArch: Add BPF JIT support")
> >> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
> >> ---
> >> arch/loongarch/net/bpf_jit.c | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/arch/loongarch/net/bpf_jit.c b/arch/loongarch/net/bpf_jit.c
> >> index 7dbefd4ba210..dd350cba1252 100644
> >> --- a/arch/loongarch/net/bpf_jit.c
> >> +++ b/arch/loongarch/net/bpf_jit.c
> >> @@ -179,7 +179,7 @@ static void __build_epilogue(struct jit_ctx *ctx, bool is_tail_call)
> >>
> >> if (!is_tail_call) {
> >> /* Set return value */
> >> - move_reg(ctx, LOONGARCH_GPR_A0, regmap[BPF_REG_0]);
> >> + emit_insn(ctx, addiw, LOONGARCH_GPR_A0, regmap[BPF_REG_0], 0);
> >
> > Not overly familiar with this JIT but just to check this wont be used
> > for BPF 2 BPF calls correct?
>
> I am not sure I understand your comment correctly, but with and without
> this patch, the LoongArch JIT uses a5 as a dedicated register for BPF
> return values, a5 is kept as zero-extended for bpf2bpf, just make a0
> (which is used outside BPF land) as sign-extend, all of the test cases
> in test_bpf.ko passed with "echo 1 > /proc/sys/net/core/bpf_jit_enable".
>
> Thanks,
> Tiezhu
>
Got it.
Acked-by: John Fastabend <john.fastabend@gmail.com>
next prev parent reply other threads:[~2024-11-23 15:57 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-19 6:52 [PATCH] LoongArch: BPF: Sign-extend return values Tiezhu Yang
2024-11-22 0:41 ` John Fastabend
2024-11-22 7:39 ` Tiezhu Yang
2024-11-23 15:57 ` John Fastabend [this message]
2024-11-24 5:33 ` Huacai Chen
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=6741fb6c516cc_c6be20839@john.notmuch \
--to=john.fastabend@gmail.com \
--cc=bpf@vger.kernel.org \
--cc=chenhuacai@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=loongarch@lists.linux.dev \
--cc=yangtiezhu@loongson.cn \
/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.