Le 22/03/2021 à 18:53, Andrii Nakryiko a écrit :
On Mon, Mar 22, 2021 at 9:37 AM Christophe Leroy
<christophe.le...@csgroup.eu> wrote:
This series implements extended BPF on powerpc32. For the implementation
details, see the patch before the last.
The following operations are not implemented:
case BPF_ALU64 | BPF_DIV | BPF_X: /* dst /= src */
case BPF_ALU64 | BPF_MOD | BPF_X: /* dst %= src */
case BPF_STX | BPF_XADD | BPF_DW: /* *(u64 *)(dst + off) +=
src */
The following operations are only implemented for power of two constants:
case BPF_ALU64 | BPF_MOD | BPF_K: /* dst %= imm */
case BPF_ALU64 | BPF_DIV | BPF_K: /* dst /= imm */
Below are the results on a powerpc 885:
- with the patch, with and without bpf_jit_enable
- without the patch, with bpf_jit_enable (ie with CBPF)
With the patch, with bpf_jit_enable = 1 :
[ 60.826529] test_bpf: Summary: 378 PASSED, 0 FAILED, [354/366 JIT'ed]
[ 60.832505] test_bpf: test_skb_segment: Summary: 2 PASSED, 0 FAILED
With the patch, with bpf_jit_enable = 0 :
[ 75.186337] test_bpf: Summary: 378 PASSED, 0 FAILED, [0/366 JIT'ed]
[ 75.192325] test_bpf: test_skb_segment: Summary: 2 PASSED, 0 FAILED
Without the patch, with bpf_jit_enable = 1 :
[ 186.112429] test_bpf: Summary: 371 PASSED, 7 FAILED, [119/366 JIT'ed]
Couldn't run test_progs because it doesn't build (clang 11 crashes during the
build).
Can you please try checking out the latest clang from sources and use
that one instead?
The crash is fixed, it builds one step more, then fails at:
[root@PC-server-ldb bpf]# make CROSS_COMPILE=ppc-linux- ARCH=powerpc V=1
/root/gen_ldb/linux-powerpc/tools/testing/selftests/bpf/host-tools/sbin/bpftool gen skeleton
/root/gen_ldb/linux-powerpc/tools/testing/selftests/bpf/atomic_bounds.o >
/root/gen_ldb/linux-powerpc/tools/testing/selftests/bpf/atomic_bounds.skel.h
libbpf: elf: endianness mismatch in atomic_bounds.
Error: failed to open BPF object file: Endian mismatch
I'm cross-building on x86 for powerpc/32
[root@PC-server-ldb bpf]# file atomic_bounds.o
atomic_bounds.o: ELF 64-bit MSB relocatable, eBPF, version 1 (SYSV), with
debug_info, not stripped
Christophe