Subject: [PATCH] RFC: arm: eBPF JIT compiler

From: [email-masked] (Andrew Lunn)
Date: Thu, 25 May 2017 19:22:55 +0200

On Thu, May 25, 2017 at 07:00:51PM +0200, Andrew Lunn wrote:
> On Thu, May 25, 2017 at 02:01:36AM +0530, Shubham Bansal wrote:
> > Hi Andrew,
> > 
> > I am attaching the latest patch which should work on ARMv5 , ARMv6 and ARMv7.
> > 
> > Please test on your machines. Apologies for the last patch. This patch
> > should work though.
> 
> andrew at shuttle:~/linux$ make -s -j 16
> arch/arm/net/bpf_jit_32.c:1755:12: warning: ???validate_code??? defined but not used [-Wunused-function]
>  static int validate_code(struct jit_ctx *ctx)
>             ^~~~~~~~~~~~~
> arch/arm/net/bpf_jit_32.c:1724:12: warning: ???build_body??? defined but not used [-Wunused-function]
>  static int build_body(struct jit_ctx *ctx)
>             ^~~~~~~~~~
> arch/arm/net/bpf_jit_32.c:1122:13: warning: ???build_epilogue??? defined but not used [-Wunused-function]
>  static void build_epilogue(struct jit_ctx *ctx)
>              ^~~~~~~~~~~~~~
> arch/arm/net/bpf_jit_32.c:1049:13: warning: ???build_prologue??? defined but not used [-Wunused-function]
>  static void build_prologue(struct jit_ctx *ctx)
>              ^~~~~~~~~~~~~~
> arch/arm/net/bpf_jit_32.c:174:13: warning: ???jit_fill_hole??? defined but not used [-Wunused-function]
>  static void jit_fill_hole(void *area, unsigned int size)
>              ^~~~~~~~~~~~~
> 
> I _think_ this is because CONFIG_CPU_LITTLE_ENDIAN is not set. But it
> is a little endian machine/configuration. ARM does not seem to use
> CONFIG_CPU_LITTLE_ENDIAN, it just has CPU_BIG_ENDIAN.

After removing the #ifdef:

test_bpf: Summary: 314 PASSED, 0 FAILED, [272/306 JIT'ed]

Each test prints:

ARM version : 5
ARM version : 5

So the code needs some cleanup, but seems to basically work.

   Andrew