[SRU][N:linux][PATCH v2 0/5] Fix BPF JIT for BPFv4 instructions on PPC64
Andrei Gherzan
andrei.gherzan at canonical.com
Tue Jun 30 17:55:57 UTC 2026
BugLink: https://bugs.launchpad.net/bugs/2072994
SRU Justification:
[ Impact ]
The test_bpf kernel module selftest fails on PPC64 architecture. 23 out of
1049 BPF tests fail because the PPC64 BPF JIT compiler is missing support
for BPFv4 instructions that were added in upstream kernel 6.0+.
The missing JIT support covers:
- ALU_MOVSX (sign-extended mov)
- ALU_SDIV/ALU_SMOD (signed division/modulo)
- BSWAP (unconditional byte swap)
- BPF_LDX_MEMSX (sign-extended load)
- JMP32_JA (32-bit offset jump)
[ Test Plan ]
1. Boot a Noble PPC64 instance with the patched kernel
2. Run the test_bpf module test:
$ sudo modprobe test_bpf
$ sudo dmesg | grep "test_bpf: Summary"
$ sudo modprobe -r test_bpf
Before fix:
test_bpf: Summary: 1026 PASSED, 23 FAILED, [1025/1025 JIT'ed]
After fix:
test_bpf: Summary: 1049 PASSED, 0 FAILED, [1037/1037 JIT'ed]
Verified on:
- Noble PPC64 (ppc64le): 1049 PASSED, 0 FAILED, [1037/1037 JIT'ed]
[ Where problems could occur ]
The changes add new JIT code generation paths in
arch/powerpc/net/bpf_jit_comp64.c and new opcodes in ppc-opcode.h.
Incorrect implementations could cause wrong results in BPF programs using
these instructions. However, the code is a clean cherry-pick from upstream
v6.11 with no modifications required.
Andrei Gherzan (5):
powerpc64/bpf: jit support for 32bit offset jmp instruction
powerpc64/bpf: jit support for unconditional byte swap
powerpc64/bpf: jit support for sign extended load
powerpc64/bpf: jit support for sign extended mov
powerpc64/bpf: jit support for signed division and modulo
arch/powerpc/include/asm/ppc-opcode.h | 2 +
arch/powerpc/net/bpf_jit_comp64.c | 118 +++++++++++++++++++-------
2 files changed, 90 insertions(+), 30 deletions(-)
--
2.43.0
More information about the kernel-team
mailing list