From patchwork Wed Dec 19 22:44:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiong Wang X-Patchwork-Id: 1016374 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=none (p=none dis=none) header.from=netronome.com 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="ZIOVMMwQ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43KqhR5dKDz9sCh for ; Thu, 20 Dec 2018 09:44:39 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728995AbeLSWoh (ORCPT ); Wed, 19 Dec 2018 17:44:37 -0500 Received: from mail-wm1-f66.google.com ([209.85.128.66]:34051 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728170AbeLSWoh (ORCPT ); Wed, 19 Dec 2018 17:44:37 -0500 Received: by mail-wm1-f66.google.com with SMTP id y185so10572338wmd.1 for ; Wed, 19 Dec 2018 14:44:35 -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=cNbPYqrPtm/+FdgfAdJFi5nAujwWSKcs1imsX3RThmg=; b=ZIOVMMwQdF86JOgmJLt9LCAiCSzOCzv5eP6FYXQQb0bbto+OLWCnK2GlTLnehV0R+m gfOCwQLabhs5ZY2M8sodhxDQGYiFhoaS1A2Np1VlbW5yo/6I9Nd2zkNF5YsqPjcF/7JK oxCH1/nVFBjGflA42eLNR4YhcajAhYRnYHpcvsya5uXV8gAUg0QKFBgjcxBdeqhiyYcp Jtjij4bd9c2t4yEw7QPFnGkDOaUrcJOJI7tMayxF5LzKJ0k+Hf3FgADkDYAHVH4sa86s ufy31G7Ogvf1VfWfRLPdDoIwtbdSUaSOtup/rSUE7HzwsdbsKnzaI4K1svYx020EOPly FWjw== 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=cNbPYqrPtm/+FdgfAdJFi5nAujwWSKcs1imsX3RThmg=; b=LnbHh4xdYQi77w/tK0ctpa45cj7yAPFI76gW63/5fZG7OCsr8H7RxdOcd16BDGkDCZ rueAFQ/jbOqlgHMMNzYKoVqKMBy+Nw9OakGRuTDkx4lvAwyzX6jj3MMXitMmGdFRMFXE gsyW4S4L6em2VuJI18B+DidVAcygbkgl/D38F7ofudowfMS7l30dpVHd+YKT6+A0puFL 4CVoNnqw1voIM9bdO0kz8/PYXwWZLMQyXTFxlo4ObEXAd805M19ixIXDZzyLDqTXhE9p JcWHQPzny25RmNFXJb7ropFWCFAhSTADMowMhsce3u0f72smhCEvBoDhGmssPutgS079 dHPg== X-Gm-Message-State: AA+aEWaxNXsFiguU4QKWVLHDkd9NqQNByBR2mRoYEcjC8V7/G7tmY2HB K0W6+gbRxFanMzoaR4cRkI+n2w32yDKJYg== X-Google-Smtp-Source: AFSGD/UAUzNQVt61lJhHq6+2rl7OtnExiwfPkmX0lGUYPMRJ+WKR3ZqUE29HMRPFDJD9Bm0kwlGFuQ== X-Received: by 2002:a1c:c2d4:: with SMTP id s203mr8863524wmf.3.1545259475053; Wed, 19 Dec 2018 14:44:35 -0800 (PST) Received: from cbtest28.netronome.com ([217.38.71.146]) by smtp.gmail.com with ESMTPSA id o64sm5359188wmo.47.2018.12.19.14.44.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 19 Dec 2018 14:44:34 -0800 (PST) From: Jiong Wang To: ast@kernel.org, daniel@iogearbox.net Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, Jiong Wang Subject: [PATH bpf-next 01/13] bpf: encoding description and macros for JMP32 Date: Wed, 19 Dec 2018 17:44:08 -0500 Message-Id: <1545259460-13376-2-git-send-email-jiong.wang@netronome.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1545259460-13376-1-git-send-email-jiong.wang@netronome.com> References: <1545259460-13376-1-git-send-email-jiong.wang@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch update kernel BPF documents for JMP32 encoding. Two macros are added for JMP32 to easy programming. Signed-off-by: Jiong Wang --- Documentation/networking/filter.txt | 10 ++++++++++ include/uapi/linux/bpf.h | 4 ++++ tools/include/uapi/linux/bpf.h | 4 ++++ 3 files changed, 18 insertions(+) diff --git a/Documentation/networking/filter.txt b/Documentation/networking/filter.txt index 2196b82..5f6fafa 100644 --- a/Documentation/networking/filter.txt +++ b/Documentation/networking/filter.txt @@ -939,6 +939,16 @@ in eBPF means function exit only. The eBPF program needs to store return value into register R0 before doing a BPF_EXIT. Class 6 in eBPF is currently unused and reserved for future use. +And BPF_JMP has sub-opcode. When BPF_SRC(code) == BPF_X, the encoding is at +insn->imm, starting from LSB. When BPF_SRC(code) == BPF_K, the encoding is at +insn->src_reg, starting from LSB as well. Only one bit is used for sub-opcode at +the moment, all other bits in imm and src_reg are still reserved and should be +zeroed. The BPF_JMP sub-opcode is: + + BPF_JMP_SUBOP_32BIT 0x1 + +It means jump insn use 32-bit sub-register when doing comparison. + For load and store instructions the 8-bit 'code' field is divided as: +--------+--------+-------------------+ diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index e7d57e89..f30d646 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -42,6 +42,10 @@ #define BPF_CALL 0x80 /* function call */ #define BPF_EXIT 0x90 /* function return */ +/* jmp has sub-opcode */ +#define BPF_JMP_SUBOP_MASK 0x1 +#define BPF_JMP_SUBOP_32BIT 0x1 + /* Register numbers */ enum { BPF_REG_0 = 0, diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h index e7d57e89..f30d646 100644 --- a/tools/include/uapi/linux/bpf.h +++ b/tools/include/uapi/linux/bpf.h @@ -42,6 +42,10 @@ #define BPF_CALL 0x80 /* function call */ #define BPF_EXIT 0x90 /* function return */ +/* jmp has sub-opcode */ +#define BPF_JMP_SUBOP_MASK 0x1 +#define BPF_JMP_SUBOP_32BIT 0x1 + /* Register numbers */ enum { BPF_REG_0 = 0,