Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3630233pxf; Mon, 22 Mar 2021 10:56:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyOAhT1OnE4dodqUdTRHrWUM3w/nILXV8uILxjt4uZZ4nA5wHYwvpu1AKGude3fVQE5HM86 X-Received: by 2002:a17:906:7194:: with SMTP id h20mr1015624ejk.154.1616435767371; Mon, 22 Mar 2021 10:56:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616435767; cv=none; d=google.com; s=arc-20160816; b=lNHa6prkyC4XscbfC06K900TE/y5tfeQLMFW9H+hFaPtgiZTHDkcW/3uTy1aQXqQYn qRf4gK9FdXC0/nGRSHwFGRc1gOwoosRcG+JmAEWVLYh5m7/aforDUaknoVZxkM7wvtP8 drcCrvDaqKl2sm+Of66B48MT4OnS/ukKGGhQ8fcdEUk3YWcO1Fv2rJ1RIs+d59QFKYXT YNkPwjwArXLHY2o4+Z96cm0eSUudCP0rODXrNeoZX6GN7jSrBl13Cs8pW3xnrr+7+WGu D0zo2HMgnw4Roy6h5VCasasZzTkGo/ATcxaZhGJVIgIeE1N0eTNreyhOolndyfnfcglv mWgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=LDxueTAdL2AWLL01bMdPUnnD4HpNdzZ8wxBaFyudbww=; b=ZbVdDEHmcxXbAACkEVhmGEo7yoJxuVC5AJcUjgqIaHCdRKNh0ct74YozUfMyJypuZd ckxlOj+WnQg5vdBhnyIlRtQDwjWFk/j4hk1tj+9mErQk7gzBJ4U00EKAr6KvPiyu6AU1 G2PPvW1PYp3ySFpCAHhupaUhewzDnbEpYRaKY/gqOnHF9i4ddpeiffz+tikMBKBDNtS2 YuWZ0AC1qDtACKvDjBI/0Stu9yC+u3stTBY1WpMGE0J0IDlHo37FVZfnIdMiKRto7sBA KEQ37aSXC/S/AxnXknF/Nz23tH1WRecxNTFIf/wHVdj04kaWX6LUjh4IqaxnmeSZ2nml 1vTQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=GD0yghqn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x10si10804697ejw.389.2021.03.22.10.55.44; Mon, 22 Mar 2021 10:56:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=GD0yghqn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230232AbhCVRyD (ORCPT + 99 others); Mon, 22 Mar 2021 13:54:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37244 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230369AbhCVRxf (ORCPT ); Mon, 22 Mar 2021 13:53:35 -0400 Received: from mail-yb1-xb2a.google.com (mail-yb1-xb2a.google.com [IPv6:2607:f8b0:4864:20::b2a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 189F3C061574; Mon, 22 Mar 2021 10:53:35 -0700 (PDT) Received: by mail-yb1-xb2a.google.com with SMTP id i9so7474347ybp.4; Mon, 22 Mar 2021 10:53:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=LDxueTAdL2AWLL01bMdPUnnD4HpNdzZ8wxBaFyudbww=; b=GD0yghqnscxyOcEfRGbu64M3NgeRrenUULJiEi5bCLXNE3wNB54a0uKIwAzyRLE79Q i7Psp/g1lRRzYuPcpO1EYWr6pPnrDf8CYcbLJZXFAyhlMZPs20msacukrWM+V8klkGBn S7GEp+0D24bDkhJjS/7j7nsC4HJUVPutq8aobGVCiGcQRiMDsENSWwK3nZiakusrfzNh StTlo3VkkAAojKRwNXTB/lHkD8xigej+brwiTtfDoiWMwAiEIEboHv1vNEriHsBi7lFw U9Xc5vGW7AODw0+EPj2Iq3WFH5teenIb5l0iSeGD3aYFHD6lQ0fUd9OR52Bn3n16zcq0 takQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=LDxueTAdL2AWLL01bMdPUnnD4HpNdzZ8wxBaFyudbww=; b=b/030+WTK/JV3CkKrVA+U64CdzkWsWPn9+EnFAaEkmSgrPUeiszxZp3PBNCsy2fLw3 zbBnyTlZb9rAeYPewzEETX9KE8aWmy2S7gGVu9fIphWBWZAXW3CDiKbZMybr252k4euS HnIR0k+QSDupno1nQIb9G66Hc6gE3T0q28hqwop2OVrFO0dlP5HHy+5Q9P4W1X3HkES6 B6otT0JwJ8gvv6swDC5Myf2g+2rueBlnCBjdFRD64K6JvyH/lrdO2ncX+bdf+KvivgZ7 +X522YuCJniWt+TfeKiAbwsMlLQ/Swx9h2lz6ldEXanCmdsE6rszdNQUHAaa1uTxQzU8 KTxA== X-Gm-Message-State: AOAM531hkLT9LYORzmdhPkQb1/DuuN7i80IfG+9C5N+yOO5HoewdhHHG 5t5tddzHenkJKdak+NfiT+Xb0WUyZysTELXyKas= X-Received: by 2002:a25:7d07:: with SMTP id y7mr838725ybc.425.1616435614417; Mon, 22 Mar 2021 10:53:34 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Andrii Nakryiko Date: Mon, 22 Mar 2021 10:53:23 -0700 Message-ID: Subject: Re: [PATCH v2 0/8] Implement EBPF on powerpc32 To: Christophe Leroy Cc: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin Lau , Song Liu , Yonghong Song , john fastabend , KP Singh , naveen.n.rao@linux.ibm.com, sandipan@linux.ibm.com, open list , linuxppc-dev@lists.ozlabs.org, Networking , bpf Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Mar 22, 2021 at 9:37 AM Christophe Leroy wrote: > > This series implements extended BPF on powerpc32. For the implementation > details, see the patch before the last. > > The following operations are not implemented: > > case BPF_ALU64 | BPF_DIV | BPF_X: /* dst /= src */ > case BPF_ALU64 | BPF_MOD | BPF_X: /* dst %= src */ > case BPF_STX | BPF_XADD | BPF_DW: /* *(u64 *)(dst + off) += src */ > > The following operations are only implemented for power of two constants: > > case BPF_ALU64 | BPF_MOD | BPF_K: /* dst %= imm */ > case BPF_ALU64 | BPF_DIV | BPF_K: /* dst /= imm */ > > Below are the results on a powerpc 885: > - with the patch, with and without bpf_jit_enable > - without the patch, with bpf_jit_enable (ie with CBPF) > > With the patch, with bpf_jit_enable = 1 : > > [ 60.826529] test_bpf: Summary: 378 PASSED, 0 FAILED, [354/366 JIT'ed] > [ 60.832505] test_bpf: test_skb_segment: Summary: 2 PASSED, 0 FAILED > > With the patch, with bpf_jit_enable = 0 : > > [ 75.186337] test_bpf: Summary: 378 PASSED, 0 FAILED, [0/366 JIT'ed] > [ 75.192325] test_bpf: test_skb_segment: Summary: 2 PASSED, 0 FAILED > > Without the patch, with bpf_jit_enable = 1 : > > [ 186.112429] test_bpf: Summary: 371 PASSED, 7 FAILED, [119/366 JIT'ed] > > Couldn't run test_progs because it doesn't build (clang 11 crashes during the build). Can you please try checking out the latest clang from sources and use that one instead? > > Changes in v2: > - Simplify 16 bits swap > - Rework tailcall, use stack for tailcall counter > - Fix handling of BPF_REG_FP: > - must be handler like any other register allthough only the lower 32 bits part is used as a pointer. > - r18 was TMP_REG, r17/r18 become de BPF_REG_FP > - r31 was BPF_REG_FP, it is now TMP_REG > - removed bpf_jit32.h > - Reorder register allocation dynamically to use the volatile registers as much as possible when not doing function calls (last patch - new) > > Christophe Leroy (8): > powerpc/bpf: Remove classical BPF support for PPC32 > powerpc/bpf: Change register numbering for bpf_set/is_seen_register() > powerpc/bpf: Move common helpers into bpf_jit.h > powerpc/bpf: Move common functions into bpf_jit_comp.c > powerpc/bpf: Change values of SEEN_ flags > powerpc/asm: Add some opcodes in asm/ppc-opcode.h for PPC32 eBPF > powerpc/bpf: Implement extended BPF on PPC32 > powerpc/bpf: Reallocate BPF registers to volatile registers when > possible on PPC32 > > Documentation/admin-guide/sysctl/net.rst | 2 +- > arch/powerpc/Kconfig | 3 +- > arch/powerpc/include/asm/ppc-opcode.h | 12 + > arch/powerpc/net/Makefile | 6 +- > arch/powerpc/net/bpf_jit.h | 61 ++ > arch/powerpc/net/bpf_jit32.h | 139 --- > arch/powerpc/net/bpf_jit64.h | 21 +- > arch/powerpc/net/bpf_jit_asm.S | 226 ----- > arch/powerpc/net/bpf_jit_comp.c | 782 ++++----------- > arch/powerpc/net/bpf_jit_comp32.c | 1095 ++++++++++++++++++++++ > arch/powerpc/net/bpf_jit_comp64.c | 295 +----- > 11 files changed, 1372 insertions(+), 1270 deletions(-) > delete mode 100644 arch/powerpc/net/bpf_jit32.h > delete mode 100644 arch/powerpc/net/bpf_jit_asm.S > create mode 100644 arch/powerpc/net/bpf_jit_comp32.c > > -- > 2.25.0 >