From patchwork Fri Jan 12 22:06:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 860216 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="vN62nR0p"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zJH0H5Zc8z9t2c for ; Sat, 13 Jan 2018 09:06:55 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965228AbeALWGx (ORCPT ); Fri, 12 Jan 2018 17:06:53 -0500 Received: from mail-pg0-f68.google.com ([74.125.83.68]:42368 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965133AbeALWGw (ORCPT ); Fri, 12 Jan 2018 17:06:52 -0500 Received: by mail-pg0-f68.google.com with SMTP id q67so5416359pga.9 for ; Fri, 12 Jan 2018 14:06:51 -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=pEPvE+GVEVSn3V/BnVebd16iiW5Uf9du92VfapqpP+k=; b=vN62nR0pD8ZqSjlLqqXgejnQH0JKJYyR835yMpPdUCuL1u8Iz3wspOlNQp2uUrZ9O0 If0RJKiLvChYJYsvfLDDKhAbFLUYS7OfBp9QNUc5XkAK2WoAQZC6AWXEPhbp2Zu/0jj+ /nGbWncM75Qv1bNFZ2B4wSRfJHETHzwFgZzo2XMOEIyqeaT7FfsR7qa1DKs9m8tBO9fJ yqzC1YKpIlvUzMHvOmwNV7kxuC7XUfIQYIgycbgeDwEDa22DOzEgUyCpSIlT3bnpCv1M IVSHS3GIumMrqZKGCA/o+AX8fE3/5qRyBwB1jpdG6F/NwadV92b5GsSQyDB2gG8iGeZd kn9g== 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=pEPvE+GVEVSn3V/BnVebd16iiW5Uf9du92VfapqpP+k=; b=UC98mEldFXRcO4kZ37ibMzqmdH/mhQ+Rr0umvzCNBVYEIx60bG/jaEbWgOYSSVcJIp xZYnqG4jpBe41928ZwM24v1wp0pOcrDJ/40U6Aqcr4/KC9ZYudio+ty+0u4bfd0HLYr/ Dj5yZQ522EUL1EJmnF/MXY7H6a9OJ80IZ6w1RjPHBwheJOu9tnFSrjCQyDuyvNEs2xCU YGPGilTrTZaD/UDTpwCIL/4XnfoBFCokxK5qCH54s7dJAUf5ltNwOQwp9YoeWnOHL49h Eq1CTVTrraMPEWd5uDBgVBlxEligxEb9wHRF1GekB5U5YT0kycCvhCIjtZMf+n7t2pM+ gkWw== X-Gm-Message-State: AKGB3mIL3amRvC/UgVlWWxNMs2FxpCYjHVLDV2WYns5+4zeGqEq+yyom SeKyLWra6YGdMmDyiVh2B04h7FA1 X-Google-Smtp-Source: ACJfBos3l22/iik2reiuDAZhOuZ+fun3GRKMzN1VFWhuI6dmD0tHO4hkj2qhsXN9hryL8jhLzTlQ+g== X-Received: by 10.84.195.131 with SMTP id j3mr15956471pld.320.1515794811481; Fri, 12 Jan 2018 14:06:51 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id w19sm45994848pfa.127.2018.01.12.14.06.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 12 Jan 2018 14:06:50 -0800 (PST) From: Jakub Kicinski To: daniel@iogearbox.net, alexei.starovoitov@gmail.com Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, Jiong Wang Subject: [RFC bpf-next 1/2] nfp: bpf: set new jit info fields Date: Fri, 12 Jan 2018 14:06:23 -0800 Message-Id: <20180112220624.14424-1-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <44d1b7e5-53f1-65b6-fd0b-fbda8467aa6b@iogearbox.net> References: <44d1b7e5-53f1-65b6-fd0b-fbda8467aa6b@iogearbox.net> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiong Wang This patch set those new jit info fields introduced in previous patch for NFP. Signed-off-by: Jiong Wang --- drivers/net/ethernet/netronome/nfp/bpf/main.h | 2 ++ drivers/net/ethernet/netronome/nfp/bpf/offload.c | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/netronome/nfp/bpf/main.h b/drivers/net/ethernet/netronome/nfp/bpf/main.h index 66381afee2a9..41ee68eb7ddc 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/main.h +++ b/drivers/net/ethernet/netronome/nfp/bpf/main.h @@ -42,6 +42,8 @@ #include "../nfp_asm.h" +#define NFP_ARCH_NAME "NFP-6xxx" + /* For relocation logic use up-most byte of branch instruction as scratch * area. Remember to clear this before sending instructions to HW! */ diff --git a/drivers/net/ethernet/netronome/nfp/bpf/offload.c b/drivers/net/ethernet/netronome/nfp/bpf/offload.c index 320b2250d29a..8862d1e50bf5 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/offload.c +++ b/drivers/net/ethernet/netronome/nfp/bpf/offload.c @@ -124,6 +124,7 @@ static int nfp_bpf_translate(struct nfp_net *nn, struct bpf_prog *prog) struct nfp_prog *nfp_prog = prog->aux->offload->dev_priv; unsigned int stack_size; unsigned int max_instr; + int err; stack_size = nn_readb(nn, NFP_NET_CFG_BPF_STACK_SZ) * 64; if (prog->aux->stack_depth > stack_size) { @@ -140,7 +141,16 @@ static int nfp_bpf_translate(struct nfp_net *nn, struct bpf_prog *prog) if (!nfp_prog->prog) return -ENOMEM; - return nfp_bpf_jit(nfp_prog); + err = nfp_bpf_jit(nfp_prog); + if (err) + return err; + + prog->aux->offload->jited_len = nfp_prog->prog_len * sizeof(u64); + prog->aux->offload->jited_image = nfp_prog->prog; + memcpy(prog->aux->offload->jited_arch_name, NFP_ARCH_NAME, + sizeof(NFP_ARCH_NAME)); + + return 0; } static int nfp_bpf_destroy(struct nfp_net *nn, struct bpf_prog *prog) From patchwork Fri Jan 12 22:06:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 860215 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="oxsAvuvs"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zJH0M1vJTz9t2l for ; Sat, 13 Jan 2018 09:06:59 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965261AbeALWG4 (ORCPT ); Fri, 12 Jan 2018 17:06:56 -0500 Received: from mail-pf0-f196.google.com ([209.85.192.196]:40865 "EHLO mail-pf0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965193AbeALWGw (ORCPT ); Fri, 12 Jan 2018 17:06:52 -0500 Received: by mail-pf0-f196.google.com with SMTP id i66so5371962pfd.7 for ; Fri, 12 Jan 2018 14:06:52 -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=HjOYk3S67RKSaJ8tnveBjvvqP3uQwJFwLL+A9+ykh6M=; b=oxsAvuvsZVWzgsMlVc8CQBn37QMsL1lSNYGBFPZRZpLFgccUwR6qGxqtYuUXBdI1Js KHY/yDStUug3pomOZxrv3jhD/yF45yEi3Q1pkYnz7z1uglbuNHJzn73c7IoumkYnsNQr q3ZAMtR8QmQzBLc4ZvU+P6VgOmZHOiUfcXL63qM4j/YKhKjeJ8bgHHq8Oz0uV7vUr7nY 26IYkRKmVogi7w6OnsXD7ZXBXM0DVG1bLZqhU7+rffmMZ2LDnJyqIVS+Q5caciWA/mkl NwU16Be6vzedSrm+tzZjwROhvhUyrgD+R3b3Zm34p24jOvTqATnURHLhKNrLfYGAxImk Aq/g== 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=HjOYk3S67RKSaJ8tnveBjvvqP3uQwJFwLL+A9+ykh6M=; b=EAN/eb6vGmDLjQjDqGku0397kaBQ5TmqE8v2x0qRONvCZ2At8r65NDySyceqFDUayN hqX3t9lLxRsYUi+UOL90bva3zle1QyWocBpDMoMI9BTGDisvdX8h7hG4345Oh9BckgyA mte683K4L0H8DgHWHXQPB+YA+X1L3PYkiNv1HdCjRFaT0gQBPzcyEPdDYk5hWobaKZFp BlGPL6BsvMlWyRrRFFUAcMRPMW53Ob5y2S4cHqf+shSV1d3xMq/mNAP0+lDOF0Aowyn9 F0H18KvssfMrKO8rdfIyrZXTTpJDs+FNI8CMMj+0AQZZDuJiZaK75EzCW3JP+3DEtY7C vpig== X-Gm-Message-State: AKwxytfL2HKB+Ds8fH01INW4H748KmItXrfcsDAtc3U3cmbwKmi/7yev sLKjIJLY2IVDP8uBBPMX+GWrrA== X-Google-Smtp-Source: ACJfBosecrKnipXf6Bh4XaO6NDG7jdoDUasnKJUuVB1z5o0wDcw0WT64tQYvSkLmaBbD927tzwkLfA== X-Received: by 10.159.242.203 with SMTP id x11mr7070633plw.298.1515794812397; Fri, 12 Jan 2018 14:06:52 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id w19sm45994848pfa.127.2018.01.12.14.06.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 12 Jan 2018 14:06:51 -0800 (PST) From: Jakub Kicinski To: daniel@iogearbox.net, alexei.starovoitov@gmail.com Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, Jiong Wang Subject: [RFC bpf-next 2/2] tools: bpftool: improve architecture detection by using offload arch info Date: Fri, 12 Jan 2018 14:06:24 -0800 Message-Id: <20180112220624.14424-2-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180112220624.14424-1-jakub.kicinski@netronome.com> References: <44d1b7e5-53f1-65b6-fd0b-fbda8467aa6b@iogearbox.net> <20180112220624.14424-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiong Wang The current architecture detection method in bpftool is designed for host case. For offload case, we can't use the architecture of "bpftool" itself. We use the new arch name field in bpf_prog_info and use bfd_scan_arch to return the correct bfd arch. Signed-off-by: Jiong Wang --- tools/bpf/bpftool/jit_disasm.c | 16 +++++++++++++++- tools/bpf/bpftool/main.h | 3 ++- tools/bpf/bpftool/prog.c | 7 ++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/tools/bpf/bpftool/jit_disasm.c b/tools/bpf/bpftool/jit_disasm.c index 57d32e8a1391..a54fc0695a50 100644 --- a/tools/bpf/bpftool/jit_disasm.c +++ b/tools/bpf/bpftool/jit_disasm.c @@ -76,7 +76,8 @@ static int fprintf_json(void *out, const char *fmt, ...) return 0; } -void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes) +void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes, + char *arch) { disassembler_ftype disassemble; struct disassemble_info info; @@ -100,6 +101,19 @@ void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes) else init_disassemble_info(&info, stdout, (fprintf_ftype) fprintf); + + /* Update architecture info for offload. */ + if (arch) { + const bfd_arch_info_type *inf = bfd_scan_arch(arch); + + if (inf) { + bfdf->arch_info = inf; + } else { + p_err("No libfd support for %s", arch); + return; + } + } + info.arch = bfd_get_arch(bfdf); info.mach = bfd_get_mach(bfdf); info.buffer = image; diff --git a/tools/bpf/bpftool/main.h b/tools/bpf/bpftool/main.h index 65b526fe6e7e..0c2898a68340 100644 --- a/tools/bpf/bpftool/main.h +++ b/tools/bpf/bpftool/main.h @@ -121,7 +121,8 @@ int do_cgroup(int argc, char **arg); int prog_parse_fd(int *argc, char ***argv); -void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes); +void disasm_print_insn(unsigned char *image, ssize_t len, int opcodes, + char *arch); void print_hex_data_json(uint8_t *data, size_t len); #endif diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c index c6a28be4665c..97c2649f71f8 100644 --- a/tools/bpf/bpftool/prog.c +++ b/tools/bpf/bpftool/prog.c @@ -775,7 +775,12 @@ static int do_dump(int argc, char **argv) } } else { if (member_len == &info.jited_prog_len) { - disasm_print_insn(buf, *member_len, opcodes); + if (info.ifindex) + disasm_print_insn(buf, *member_len, opcodes, + info.offload_arch_name); + else + disasm_print_insn(buf, *member_len, opcodes, + NULL); } else { kernel_syms_load(&dd); if (json_output)