[PW_SID:1148328] bpf, riscv: Add support for signed arena loads - #2494
[PW_SID:1148328] bpf, riscv: Add support for signed arena loads#2494linux-riscv-bot wants to merge 2 commits into
Conversation
Signed loads from arena memory are currently rejected on riscv64, as bpf_jit_supports_insn() refuses BPF_MEMSX loads when in_arena is set, while x86 and arm64 gained support for them in v6.18. Compilers such as GCC-14 are free to generate signed loads into arena memory, which breaks loading of otherwise valid BPF programs on riscv64. Implement BPF_PROBE_MEM32SX support in the RV64 JIT by reusing the existing arena handling: the arena base (RV_REG_ARENA) is added to the source register and the load is emitted with sign extension (lb/lh/lw). Add BPF_PROBE_MEM32SX to the add_exception_handler() mode gate so that faulting loads get an exception table entry which clears the destination register and resumes execution. Since BPF_PROBE_MEM32SX shares its mode value (0xc0) with BPF_ATOMIC, the gate accepts it only for LDX class instructions so that plain atomic instructions do not register exception table entries. Verified by running the arena LDSX selftests (arena_ldsx_disasm, arena_ldsx_exception, arena_ldsx_s8/s16/s32) and the full arena_atomics test suite on riscv64 QEMU, all passing. Signed-off-by: Chen Pei <cp0613@linux.alibaba.com> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
Now that the riscv64 JIT supports signed arena loads (BPF_PROBE_MEM32SX), enable the arena LDSX tests on riscv64: add JIT disassembly assertions for arena_ldsx_disasm (arena base in s7, add into t2, sign-extending lw/lh/lb loads) and run arena_ldsx_exception and arena_ldsx_s8/s16/s32 on riscv64. Reviewed-by: Pu Lehui <pulehui@huawei.com> Signed-off-by: Chen Pei <cp0613@linux.alibaba.com> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
|
Patch 1: "[bpf-next,v2,1/2] bpf, riscv: Add support for signed arena loads" |
|
Patch 1: "[bpf-next,v2,1/2] bpf, riscv: Add support for signed arena loads" |
|
Patch 1: "[bpf-next,v2,1/2] bpf, riscv: Add support for signed arena loads" |
|
Patch 1: "[bpf-next,v2,1/2] bpf, riscv: Add support for signed arena loads" |
|
Patch 1: "[bpf-next,v2,1/2] bpf, riscv: Add support for signed arena loads" |
|
Patch 1: "[bpf-next,v2,1/2] bpf, riscv: Add support for signed arena loads" |
|
Patch 1: "[bpf-next,v2,1/2] bpf, riscv: Add support for signed arena loads" |
|
Patch 1: "[bpf-next,v2,1/2] bpf, riscv: Add support for signed arena loads" |
|
Patch 1: "[bpf-next,v2,1/2] bpf, riscv: Add support for signed arena loads" |
|
Patch 1: "[bpf-next,v2,1/2] bpf, riscv: Add support for signed arena loads" |
|
Patch 1: "[bpf-next,v2,1/2] bpf, riscv: Add support for signed arena loads" |
|
Patch 1: "[bpf-next,v2,1/2] bpf, riscv: Add support for signed arena loads" |
|
Patch 2: "[bpf-next,v2,2/2] selftests/bpf: Enable arena LDSX tests for riscv64" |
|
Patch 2: "[bpf-next,v2,2/2] selftests/bpf: Enable arena LDSX tests for riscv64" |
|
Patch 2: "[bpf-next,v2,2/2] selftests/bpf: Enable arena LDSX tests for riscv64" |
|
Patch 2: "[bpf-next,v2,2/2] selftests/bpf: Enable arena LDSX tests for riscv64" |
|
Patch 2: "[bpf-next,v2,2/2] selftests/bpf: Enable arena LDSX tests for riscv64" |
|
Patch 2: "[bpf-next,v2,2/2] selftests/bpf: Enable arena LDSX tests for riscv64" |
|
Patch 2: "[bpf-next,v2,2/2] selftests/bpf: Enable arena LDSX tests for riscv64" |
|
Patch 2: "[bpf-next,v2,2/2] selftests/bpf: Enable arena LDSX tests for riscv64" |
|
Patch 2: "[bpf-next,v2,2/2] selftests/bpf: Enable arena LDSX tests for riscv64" |
|
Patch 2: "[bpf-next,v2,2/2] selftests/bpf: Enable arena LDSX tests for riscv64" |
|
Patch 2: "[bpf-next,v2,2/2] selftests/bpf: Enable arena LDSX tests for riscv64" |
|
Patch 2: "[bpf-next,v2,2/2] selftests/bpf: Enable arena LDSX tests for riscv64" |
PR for series 1148328 applied to workflow__riscv__fixes
Name: bpf, riscv: Add support for signed arena loads
URL: https://patchwork.kernel.org/project/linux-riscv/list/?series=1148328
Version: 2