From: Chen Pei <cp0613@linux.alibaba.com>
To: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org,
memxor@gmail.com, bjorn@kernel.org, puranjay@kernel.org
Cc: ihor.solodrai@linux.dev, eddyz87@gmail.com, martin.lau@linux.dev,
song@kernel.org, yonghong.song@linux.dev, jolsa@kernel.org,
emil@etsalapatis.com, pulehui@huawei.com, pjw@kernel.org,
palmer@dabbelt.com, shuah@kernel.org, guoren@kernel.org,
bpf@vger.kernel.org, linux-riscv@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: [PATCH bpf-next 0/2] bpf, riscv: Add support for indirect jumps
Date: Wed, 23 Sep 2026 21:08:54 +0800 [thread overview]
Message-ID: <20260923130856.1157-1-cp0613@linux.alibaba.com> (raw)
The indirect jump instruction (BPF_JMP | BPF_JA | BPF_X, "gotox") and the
BPF_MAP_TYPE_INSN_ARRAY jump tables it consumes are core features: the
verifier accepts them on every architecture, and the x86-64, arm64 and
powerpc JITs implement them. On riscv64 a program using gotox passes
verification and then fails to load, because the JIT does not know the
opcode and CONFIG_BPF_JIT_ALWAYS_ON leaves no interpreter to fall back
onto.
This series adds the riscv64 support and turns the existing selftests on
for that architecture.
Patch 1 emits "jalr zero, rd, 0" for gotox and publishes the xlated to
jitted offsets through bpf_prog_update_insn_ptrs(), which is what fills
in the jump table addresses. Patch 2 widens the arch guard in
verifier_gotox.c to riscv64, the same way arm64 and powerpc were enabled.
Testing
=======
Environment: QEMU virt rv64, with CONFIG_BPF_JIT=y,
CONFIG_BPF_JIT_ALWAYS_ON=y, CONFIG_DEBUG_INFO_BTF=y; selftests
cross-built with clang 22.
- test_progs -t verifier_gotox: 27/27 subtests pass on bpf-next, 13 of
them executed through BPF_PROG_TEST_RUN.
- test_progs-cpuv4 -t bpf_gotox: 14/14 subtests pass, none skipped.
The cpuv4 flavor is needed here because bpf_gotox gates its subtests
on __BPF_FEATURE_GOTOX, which clang only defines for -mcpu=v4.
Chen Pei (2):
bpf, riscv: Add support for indirect jumps
selftests/bpf: Enable gotox tests for riscv64
arch/riscv/net/bpf_jit_comp64.c | 5 +++++
arch/riscv/net/bpf_jit_core.c | 16 ++++++++++++++--
.../testing/selftests/bpf/progs/verifier_gotox.c | 8 ++++++--
3 files changed, 25 insertions(+), 4 deletions(-)
--
2.50.1
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
WARNING: multiple messages have this Message-ID (diff)
From: Chen Pei <cp0613@linux.alibaba.com>
To: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org,
memxor@gmail.com, bjorn@kernel.org, puranjay@kernel.org
Cc: ihor.solodrai@linux.dev, eddyz87@gmail.com, martin.lau@linux.dev,
song@kernel.org, yonghong.song@linux.dev, jolsa@kernel.org,
emil@etsalapatis.com, pulehui@huawei.com, pjw@kernel.org,
palmer@dabbelt.com, shuah@kernel.org, guoren@kernel.org,
bpf@vger.kernel.org, linux-riscv@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: [PATCH bpf-next 0/2] bpf, riscv: Add support for indirect jumps
Date: Wed, 23 Sep 2026 21:08:54 +0800 [thread overview]
Message-ID: <20260923130856.1157-1-cp0613@linux.alibaba.com> (raw)
The indirect jump instruction (BPF_JMP | BPF_JA | BPF_X, "gotox") and the
BPF_MAP_TYPE_INSN_ARRAY jump tables it consumes are core features: the
verifier accepts them on every architecture, and the x86-64, arm64 and
powerpc JITs implement them. On riscv64 a program using gotox passes
verification and then fails to load, because the JIT does not know the
opcode and CONFIG_BPF_JIT_ALWAYS_ON leaves no interpreter to fall back
onto.
This series adds the riscv64 support and turns the existing selftests on
for that architecture.
Patch 1 emits "jalr zero, rd, 0" for gotox and publishes the xlated to
jitted offsets through bpf_prog_update_insn_ptrs(), which is what fills
in the jump table addresses. Patch 2 widens the arch guard in
verifier_gotox.c to riscv64, the same way arm64 and powerpc were enabled.
Testing
=======
Environment: QEMU virt rv64, with CONFIG_BPF_JIT=y,
CONFIG_BPF_JIT_ALWAYS_ON=y, CONFIG_DEBUG_INFO_BTF=y; selftests
cross-built with clang 22.
- test_progs -t verifier_gotox: 27/27 subtests pass on bpf-next, 13 of
them executed through BPF_PROG_TEST_RUN.
- test_progs-cpuv4 -t bpf_gotox: 14/14 subtests pass, none skipped.
The cpuv4 flavor is needed here because bpf_gotox gates its subtests
on __BPF_FEATURE_GOTOX, which clang only defines for -mcpu=v4.
Chen Pei (2):
bpf, riscv: Add support for indirect jumps
selftests/bpf: Enable gotox tests for riscv64
arch/riscv/net/bpf_jit_comp64.c | 5 +++++
arch/riscv/net/bpf_jit_core.c | 16 ++++++++++++++--
.../testing/selftests/bpf/progs/verifier_gotox.c | 8 ++++++--
3 files changed, 25 insertions(+), 4 deletions(-)
--
2.50.1
next reply other threads:[~2026-09-23 13:10 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-23 13:08 Chen Pei [this message]
2026-09-23 13:08 ` [PATCH bpf-next 0/2] bpf, riscv: Add support for indirect jumps Chen Pei
2026-09-23 13:08 ` [PATCH bpf-next 1/2] " Chen Pei
2026-09-23 13:08 ` Chen Pei
2026-09-23 13:56 ` bot+bpf-ci
2026-09-23 13:56 ` bot+bpf-ci
2026-09-23 13:08 ` [PATCH bpf-next 2/2] selftests/bpf: Enable gotox tests for riscv64 Chen Pei
2026-09-23 13:08 ` Chen Pei
2026-09-23 13:13 ` sashiko-bot
2026-09-24 2:39 ` [PATCH bpf-next 0/2] bpf, riscv: Add support for indirect jumps Chen Pei
2026-09-24 2:39 ` Chen Pei
2026-09-24 15:03 ` Björn Töpel
2026-09-24 15:03 ` Björn Töpel
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=20260923130856.1157-1-cp0613@linux.alibaba.com \
--to=cp0613@linux.alibaba.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bjorn@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=emil@etsalapatis.com \
--cc=guoren@kernel.org \
--cc=ihor.solodrai@linux.dev \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=martin.lau@linux.dev \
--cc=memxor@gmail.com \
--cc=palmer@dabbelt.com \
--cc=pjw@kernel.org \
--cc=pulehui@huawei.com \
--cc=puranjay@kernel.org \
--cc=shuah@kernel.org \
--cc=song@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.