On Mon, Mar 22, 2021 at 9:37 AM Christophe Leroy
<christophe.leroy@xxxxxxxxxx> 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?