From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933069AbcFGNds (ORCPT ); Tue, 7 Jun 2016 09:33:48 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:17781 "EHLO mx0b-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932697AbcFGNdl (ORCPT ); Tue, 7 Jun 2016 09:33:41 -0400 X-IBM-Helo: d28dlp03.in.ibm.com X-IBM-MailFrom: naveen.n.rao@linux.vnet.ibm.com X-IBM-RcptTo: linux-kernel@vger.kernel.org;netdev@vger.kernel.org From: "Naveen N. Rao" To: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, netdev@vger.kernel.org, mpe@ellerman.id.au Cc: "Matt Evans" , Denis Kirjanov , "Paul Mackerras" , "Alexei Starovoitov" , Daniel Borkmann , "David S. Miller" , "Ananth N Mavinakayanahalli" Subject: [PATCH 0/6] eBPF JIT for PPC64 Date: Tue, 7 Jun 2016 19:02:17 +0530 X-Mailer: git-send-email 2.8.2 X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16060713-0056-0000-0000-0000026053AF X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16060713-0057-0000-0000-00000E149C54 Message-Id: X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-06-07_07:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1604210000 definitions=main-1606070155 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Implement extended BPF JIT for ppc64. We retain the classic BPF JIT for ppc32 and move ppc64 BE/LE to use the new JIT. Classic BPF filters will be converted to extended BPF (see convert_filter()) and JIT'ed with the new compiler. Most of the existing macros are retained and fixed/enhanced where appropriate. Patches 1-4 are geared towards this. Patch 5 breaks out the classic BPF JIT specifics into a separate bpf_jit32.h header file, while retaining all the generic instruction macros in bpf_jit.h. Patch 6 implements eBPF JIT for ppc64. Since the RFC patchset [1], powerpc JIT has now gained support for skb access helpers and now passes all tests in test_bpf.ko. Review comments on the RFC patches have been addressed (use of an ABI macro [2] and use of bpf_jit_binary_alloc()), along with a few other generic fixes and updates. Prominent TODOs: - implement BPF tail calls - support for BPF constant blinding Please note that patch [2] is a pre-requisite for this patchset, and is not yet upstream. - Naveen [1] http://thread.gmane.org/gmane.linux.kernel/2188694 [2] http://thread.gmane.org/gmane.linux.ports.ppc.embedded/96514 Naveen N. Rao (6): ppc: bpf/jit: Fix/enhance 32-bit Load Immediate implementation ppc: bpf/jit: Optimize 64-bit Immediate loads ppc: bpf/jit: Introduce rotate immediate instructions ppc: bpf/jit: A few cleanups ppc: bpf/jit: Isolate classic BPF JIT specifics into a separate header ppc: ebpf/jit: Implement JIT compiler for extended BPF arch/powerpc/Kconfig | 3 +- arch/powerpc/include/asm/asm-compat.h | 2 + arch/powerpc/include/asm/ppc-opcode.h | 22 +- arch/powerpc/net/Makefile | 4 + arch/powerpc/net/bpf_jit.h | 235 ++++----- arch/powerpc/net/bpf_jit32.h | 139 +++++ arch/powerpc/net/bpf_jit64.h | 102 ++++ arch/powerpc/net/bpf_jit_asm.S | 2 +- arch/powerpc/net/bpf_jit_asm64.S | 180 +++++++ arch/powerpc/net/bpf_jit_comp.c | 10 +- arch/powerpc/net/bpf_jit_comp64.c | 956 ++++++++++++++++++++++++++++++++++ 11 files changed, 1504 insertions(+), 151 deletions(-) create mode 100644 arch/powerpc/net/bpf_jit32.h 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.c -- 2.8.2