From patchwork Wed Jan 10 12:25:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Quentin Monnet X-Patchwork-Id: 858245 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="m8KBOpr4"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zGpDn2qmDz9s7M for ; Wed, 10 Jan 2018 23:27:37 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934479AbeAJM1f (ORCPT ); Wed, 10 Jan 2018 07:27:35 -0500 Received: from mail-wr0-f194.google.com ([209.85.128.194]:34989 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934455AbeAJM11 (ORCPT ); Wed, 10 Jan 2018 07:27:27 -0500 Received: by mail-wr0-f194.google.com with SMTP id n9so7278545wrg.2 for ; Wed, 10 Jan 2018 04:27:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=dzoCeDJ4Hus/XIXNYCngzATPOGGJ3vjKYDCH/nrfoeI=; b=m8KBOpr4b0uG4QQ/gf2vQi8bNrNDwY1P/kYq6ZRNMq/mAXhis4l8xzcKwbB0TNNBiQ BaIOkKWjB0bS4X+fe13VEUAvdy2NuEu4OQlF14IVwVji0jv6wzs0pVz7VVF3H00AfYCe 9YZsDY9p01J33aOec8XUiH7R7kncUZBc9YaEq4EFnS556HDYdQNSe+7m6yt6Pa7TFhDV vAoP4mmWXPmEXoK9detzckuMFH+HE0vg8reCfUMFj1nxfK368aExVNtDT9mDJ/W7vmUy eXWo15ollMEFnzZT6lydvMtdY/gE6yZyotwGt9nR6kwcw9RGgg4CKbh8Z8qq6C4Hk7dg ON6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=dzoCeDJ4Hus/XIXNYCngzATPOGGJ3vjKYDCH/nrfoeI=; b=MP2bQBKCq4FKGxjxwyF7z9AzK/kwbfvJjYSPQBqmNelkjdtT5OghSBIOzGXtiZ5izB h10RQKLbEt4v26eBS4bm26CrgzquiSxMx7fK9XvNM7DZNvM6vq3mz6tVFg1wesixyxqv zsdbx3hNZCuzn5MZ7J+KZNPFPUQ6awJYtZ8n5OxhOmcpmYd37uVN6ugOrzIvYuCTfpd9 /iP2z0nistBs0YBggeKyC1HL/TceYqF3k/Po8YBXJ6hQHqnczlrHB313TmhjP3x+k9Bw yWM1eS18uNCWzpWe1WAmwqmO9y5d4qQMgyxPBdpI5sJ7J73BZiD1Vm+Rw7WJmfVHfo9d 5yNA== X-Gm-Message-State: AKGB3mKHZ0DdPwhYQyU/MPXkLKZn+qtrTRvORMRKQwszbOJ0uQZBqU5k zqgeOb2eDMPHY6ywEsxx8SW+2Hl5 X-Google-Smtp-Source: ACJfBossp0rnMRRKVzGtOwyWbT87kdqv22LvZq0ACKu3jXqo4oMZoOnocF3+ZA8h7bbs4ZvPQughGw== X-Received: by 10.223.136.110 with SMTP id e43mr6795807wre.98.1515587245875; Wed, 10 Jan 2018 04:27:25 -0800 (PST) Received: from cbtest8.netronome.com (host-79-78-33-110.static.as9105.net. [79.78.33.110]) by smtp.gmail.com with ESMTPSA id q186sm16907279wmb.6.2018.01.10.04.27.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 10 Jan 2018 04:27:25 -0800 (PST) From: Quentin Monnet To: daniel@iogearbox.net, alexei.starovoitov@gmail.com, netdev@vger.kernel.org Cc: oss-drivers@netronome.com, jakub.kicinski@netronome.com Subject: [PATCH bpf-next v2 06/14] nfp: bpf: move jump resolution to jit.c Date: Wed, 10 Jan 2018 12:25:59 +0000 Message-Id: <1515587167-1959-7-git-send-email-quentin.monnet@netronome.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515587167-1959-1-git-send-email-quentin.monnet@netronome.com> References: <1515587167-1959-1-git-send-email-quentin.monnet@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jakub Kicinski Jump target resolution should be in jit.c not offload.c. No functional changes. Signed-off-by: Jakub Kicinski Reviewed-by: Jiong Wang --- drivers/net/ethernet/netronome/nfp/bpf/jit.c | 23 +++++++++++++++++++++++ drivers/net/ethernet/netronome/nfp/bpf/main.h | 1 + drivers/net/ethernet/netronome/nfp/bpf/offload.c | 18 +----------------- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/bpf/jit.c b/drivers/net/ethernet/netronome/nfp/bpf/jit.c index 0de59f04da84..9caff3a7505a 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/jit.c +++ b/drivers/net/ethernet/netronome/nfp/bpf/jit.c @@ -2742,3 +2742,26 @@ int nfp_bpf_jit(struct nfp_prog *nfp_prog) return nfp_bpf_ustore_calc(nfp_prog, (__force __le64 *)nfp_prog->prog); } + +void nfp_bpf_jit_prepare(struct nfp_prog *nfp_prog, unsigned int cnt) +{ + struct nfp_insn_meta *meta; + + /* Another pass to record jump information. */ + list_for_each_entry(meta, &nfp_prog->insns, l) { + u64 code = meta->insn.code; + + if (BPF_CLASS(code) == BPF_JMP && BPF_OP(code) != BPF_EXIT && + BPF_OP(code) != BPF_CALL) { + struct nfp_insn_meta *dst_meta; + unsigned short dst_indx; + + dst_indx = meta->n + 1 + meta->insn.off; + dst_meta = nfp_bpf_goto_meta(nfp_prog, meta, dst_indx, + cnt); + + meta->jmp_dst = dst_meta; + dst_meta->flags |= FLAG_INSN_IS_JUMP_DST; + } + } +} diff --git a/drivers/net/ethernet/netronome/nfp/bpf/main.h b/drivers/net/ethernet/netronome/nfp/bpf/main.h index 89a9b6393882..0b1347f2afd1 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/main.h +++ b/drivers/net/ethernet/netronome/nfp/bpf/main.h @@ -236,6 +236,7 @@ struct nfp_bpf_vnic { struct bpf_prog *tc_prog; }; +void nfp_bpf_jit_prepare(struct nfp_prog *nfp_prog, unsigned int cnt); int nfp_bpf_jit(struct nfp_prog *prog); extern const struct bpf_prog_offload_ops nfp_bpf_analyzer_ops; diff --git a/drivers/net/ethernet/netronome/nfp/bpf/offload.c b/drivers/net/ethernet/netronome/nfp/bpf/offload.c index 8dbf13450bab..0ca6faaacc58 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/offload.c +++ b/drivers/net/ethernet/netronome/nfp/bpf/offload.c @@ -70,23 +70,7 @@ nfp_prog_prepare(struct nfp_prog *nfp_prog, const struct bpf_insn *prog, list_add_tail(&meta->l, &nfp_prog->insns); } - /* Another pass to record jump information. */ - list_for_each_entry(meta, &nfp_prog->insns, l) { - u64 code = meta->insn.code; - - if (BPF_CLASS(code) == BPF_JMP && BPF_OP(code) != BPF_EXIT && - BPF_OP(code) != BPF_CALL) { - struct nfp_insn_meta *dst_meta; - unsigned short dst_indx; - - dst_indx = meta->n + 1 + meta->insn.off; - dst_meta = nfp_bpf_goto_meta(nfp_prog, meta, dst_indx, - cnt); - - meta->jmp_dst = dst_meta; - dst_meta->flags |= FLAG_INSN_IS_JUMP_DST; - } - } + nfp_bpf_jit_prepare(nfp_prog, cnt); return 0; }