[RFC PATCH bpf-next 0/3] arm64 BPF JIT Optimizations

From: Luke Nelson
Date: Wed May 06 2020 - 21:05:13 EST


This patch series introduces several optimizations to the arm64 BPF JIT.
The optimizations make use of arm64 immediate instructions to avoid
loading BPF immediates to temporary registers, when possible.

In the process, we discovered two bugs in the logical immediate encoding
function in arch/arm64/kernel/insn.c using Serval. The series also fixes
the two bugs before introducing the optimizations.

Tested on aarch64 QEMU virt machine using test_bpf and test_verifier.

Luke Nelson (3):
arm64: insn: Fix two bugs in encoding 32-bit logical immediates
bpf, arm64: Optimize AND,OR,XOR,JSET BPF_K using arm64 logical
immediates
bpf, arm64: Optimize ADD,SUB,JMP BPF_K using arm64 add/sub immediates

arch/arm64/kernel/insn.c | 6 ++-
arch/arm64/net/bpf_jit.h | 22 +++++++++++
arch/arm64/net/bpf_jit_comp.c | 73 ++++++++++++++++++++++++++++-------
3 files changed, 85 insertions(+), 16 deletions(-)

Cc: Xi Wang <xi.wang@xxxxxxxxx>

--
2.17.1