Re: [PATCH 6/6] ppc: ebpf/jit: Implement JIT compiler for extended BPF
From: Naveen N. Rao <hidden>
Date: 2016-06-08 17:19:45
Also in:
linuxppc-dev, lkml
On 2016/06/07 03:56PM, Alexei Starovoitov wrote:
On Tue, Jun 07, 2016 at 07:02:23PM +0530, Naveen N. Rao wrote:quoted
PPC64 eBPF JIT compiler. Enable with: echo 1 > /proc/sys/net/core/bpf_jit_enable or echo 2 > /proc/sys/net/core/bpf_jit_enable ... to see the generated JIT code. This can further be processed with tools/net/bpf_jit_disasm. With CONFIG_TEST_BPF=m and 'modprobe test_bpf': test_bpf: Summary: 305 PASSED, 0 FAILED, [297/297 JIT'ed] ... on both ppc64 BE and LE.Nice. That's even better than on x64 which cannot jit one test: test_bpf: #262 BPF_MAXINSNS: Jump, gap, jump, ... jited:0 168 PASS which was designed specifically to hit x64 jit pass limit. ppc jit has predicatble number of passes and doesn't have this problem as expected. Great.
Yes, that's thanks to the clever handling of conditional branches by Matt -- we always emit 2 instructions for this reason (encoded in PPC_BCC() macro).
quoted
The details of the approach are documented through various comments in the code. Cc: Matt Evans <redacted> Cc: Denis Kirjanov <redacted> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Paul Mackerras <redacted> Cc: Alexei Starovoitov <redacted> Cc: Daniel Borkmann <daniel@iogearbox.net> Cc: "David S. Miller" <davem@davemloft.net> Cc: Ananth N Mavinakayanahalli <redacted> Signed-off-by: Naveen N. Rao <redacted> --- arch/powerpc/Kconfig | 3 +- arch/powerpc/include/asm/asm-compat.h | 2 + arch/powerpc/include/asm/ppc-opcode.h | 20 +- arch/powerpc/net/Makefile | 4 + arch/powerpc/net/bpf_jit.h | 53 +- arch/powerpc/net/bpf_jit64.h | 102 ++++ arch/powerpc/net/bpf_jit_asm64.S | 180 +++++++ arch/powerpc/net/bpf_jit_comp64.c | 956 ++++++++++++++++++++++++++++++++++ 8 files changed, 1317 insertions(+), 3 deletions(-) create mode 100644 arch/powerpc/net/bpf_jit64.h create mode 100644 arch/powerpc/net/bpf_jit_asm64.S create mode 100644 arch/powerpc/net/bpf_jit_comp64.cdon't see any issues with the code. Thank you for working on this. Acked-by: Alexei Starovoitov <ast@kernel.org>
Thanks, Alexei! Regards, Naveen