Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752024AbcDASfI (ORCPT ); Fri, 1 Apr 2016 14:35:08 -0400 Received: from www62.your-server.de ([213.133.104.62]:35385 "EHLO www62.your-server.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750808AbcDASfG (ORCPT ); Fri, 1 Apr 2016 14:35:06 -0400 Message-ID: <56FEBF51.7090608@iogearbox.net> Date: Fri, 01 Apr 2016 20:34:57 +0200 From: Daniel Borkmann User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Alexei Starovoitov , "Naveen N. Rao" , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org CC: oss@buserror.net, Matt Evans , Michael Ellerman , Paul Mackerras , "David S. Miller" , Ananth N Mavinakayanahalli , netdev@vger.kernel.org Subject: Re: [RFC PATCH 6/6] ppc: ebpf/jit: Implement JIT compiler for extended BPF References: <56FEB9AD.2080401@fb.com> In-Reply-To: <56FEB9AD.2080401@fb.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Authenticated-Sender: daniel@iogearbox.net Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2253 Lines: 59 On 04/01/2016 08:10 PM, Alexei Starovoitov wrote: > On 4/1/16 2:58 AM, Naveen N. Rao wrote: >> PPC64 eBPF JIT compiler. Works for both ABIv1 and ABIv2. >> >> 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: 291 PASSED, 0 FAILED, [234/283 JIT'ed] >> >> ... on both ppc64 BE and LE. >> >> The details of the approach are documented through various comments in >> the code, as are the TODOs. Some of the prominent TODOs include >> implementing BPF tail calls and skb loads. >> >> Cc: Matt Evans >> Cc: Michael Ellerman >> Cc: Paul Mackerras >> Cc: Alexei Starovoitov >> Cc: "David S. Miller" >> Cc: Ananth N Mavinakayanahalli >> Signed-off-by: Naveen N. Rao >> --- >> arch/powerpc/include/asm/ppc-opcode.h | 19 +- >> arch/powerpc/net/Makefile | 4 + >> arch/powerpc/net/bpf_jit.h | 66 ++- >> arch/powerpc/net/bpf_jit64.h | 58 +++ >> arch/powerpc/net/bpf_jit_comp64.c | 828 ++++++++++++++++++++++++++++++++++ >> 5 files changed, 973 insertions(+), 2 deletions(-) >> create mode 100644 arch/powerpc/net/bpf_jit64.h >> create mode 100644 arch/powerpc/net/bpf_jit_comp64.c > ... >> -#ifdef CONFIG_PPC64 >> +#if defined(CONFIG_PPC64) && (!defined(_CALL_ELF) || _CALL_ELF != 2) > > impressive stuff! +1, awesome to see another one! > Everything nicely documented. Could you add few words for the above > condition as well ? > Or may be a new macro, since it occurs many times? > What are these _CALL_ELF == 2 and != 2 conditions mean? ppc ABIs ? > Will there ever be v3 ? Minor TODO would also be to convert to use bpf_jit_binary_alloc() and bpf_jit_binary_free() API for the image, which is done by other eBPF jits, too. > So far most of the bpf jits were going via net-next tree, but if > in this case no changes to the core is necessary then I guess it's fine > to do it via powerpc tree. What's your plan? >