[PATCH bpf-next 0/8] bpf, riscv64: Support load-acquire and store-release instructions
Pu Lehui
pulehui at huawei.com
Tue Apr 29 20:56:03 PDT 2025
On 2025/4/30 8:48, Peilin Ye wrote:
> Hi all!
>
> Patchset [1] introduced BPF load-acquire (BPF_LOAD_ACQ) and
> store-release (BPF_STORE_REL) instructions, and added x86-64 and arm64
> JIT compiler support. As a follow-up, this patchset supports
> load-acquire and store-release instructions for the riscv64 JIT
> compiler, and introduces some related selftests/ changes.
>
> Specifically:
>
> * PATCH 1 makes insn_def_regno() handle load-acquires properly for
> bpf_jit_needs_zext() (true for riscv64) architectures
> * PATCH 2, 3 from Andrea Parri add the actual support to the riscv64
> JIT compiler
> * PATCH 4 optimizes code emission by skipping redundant zext
> instructions inserted by the verifier
> * PATCH 5, 6 and 7 are minor selftest/ improvements
> * PATCH 8 enables (non-arena) load-acquire/store-release selftests for
> riscv64
>
> Please refer to individual patches for details. Thanks!
>
> [1] https://lore.kernel.org/all/cover.1741049567.git.yepeilin@google.com/
>
> Andrea Parri (2):
> bpf, riscv64: Introduce emit_load_*() and emit_store_*()
> bpf, riscv64: Support load-acquire and store-release instructions
>
> Peilin Ye (6):
> bpf/verifier: Handle BPF_LOAD_ACQ instructions in insn_def_regno()
> bpf, riscv64: Skip redundant zext instruction after load-acquire
> selftests/bpf: Use CAN_USE_LOAD_ACQ_STORE_REL when appropriate
> selftests/bpf: Avoid passing out-of-range values to __retval()
> selftests/bpf: Verify zero-extension behavior in load-acquire tests
> selftests/bpf: Enable non-arena load-acquire/store-release selftests
> for riscv64
>
> arch/riscv/net/bpf_jit.h | 15 +
> arch/riscv/net/bpf_jit_comp64.c | 334 ++++++++++++------
> arch/riscv/net/bpf_jit_core.c | 3 +-
> kernel/bpf/verifier.c | 11 +-
> tools/testing/selftests/bpf/progs/bpf_misc.h | 5 +-
> .../bpf/progs/verifier_load_acquire.c | 48 ++-
> .../selftests/bpf/progs/verifier_precision.c | 5 +-
> .../bpf/progs/verifier_store_release.c | 39 +-
> 8 files changed, 314 insertions(+), 146 deletions(-)
>
Hi Peilin, good to see the implementation of load-acquire and
store-release instructions on RV64! But I'm about to start my vacation,
so I'll test it once I'm back.
More information about the linux-riscv
mailing list