From patchwork Mon Aug 28 15:59:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Vernet X-Patchwork-Id: 13368128 X-Patchwork-Delegate: bpf@iogearbox.net Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C83BC134A6 for ; Mon, 28 Aug 2023 16:00:03 +0000 (UTC) Received: from mail-yw1-f178.google.com (mail-yw1-f178.google.com [209.85.128.178]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D17CC10B; Mon, 28 Aug 2023 09:00:01 -0700 (PDT) Received: by mail-yw1-f178.google.com with SMTP id 00721157ae682-58fae4a5285so40344587b3.0; Mon, 28 Aug 2023 09:00:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693238401; x=1693843201; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=l44VFUL+FDV3oNtmEFVudfrfsvVSq51rS4XMBKotbrE=; b=ja1p+PxdkbzzNSkhoQRCHXSkrOrIPpv/n3WmtUngDhGgHNiYmJB+CDDctveJba6Sl4 77MSFQigGQIpsK8dN/mDPDODMOT6Klc4KVv5Eh1xHwoM5KAw4I9CSx/04Hbo6Y1aaCKd 85Syr5Yl5e0San3UssSWyi4UCDkV52x9KKo0RjnnpQfvAafyJKamJ0hcQJLl5ePlmlUk 8HVM9dHBnXj774RIjY9ibrEzMERt1DloOnhcaWw+kF9br68NkFwx2aQYINCVq3ak2PHb /pBAZ5URc4copJ4c6WGMz2E8k1vdVmYF6GNY72chIFkOKEDPo0rZxaBG7fX4BW2mUVxf n6Pg== X-Gm-Message-State: AOJu0Yz9yJgBguQKUT6wE4kPrQVF4FWU37xkGawZVmDWuuYnf4XQ67QD PPInkaEO3TgVWXJuNSMX2Xp9ZBfNMoXv0A== X-Google-Smtp-Source: AGHT+IE9ibDLAltsnoNQ4RK6viZOGuq4TBDw1i/bdN3m/D01sFB2/zauT6bmKleDUlcGQ2gWGUKDuQ== X-Received: by 2002:a0d:ccd4:0:b0:58c:8b7e:a1e4 with SMTP id o203-20020a0dccd4000000b0058c8b7ea1e4mr29973302ywd.23.1693238400657; Mon, 28 Aug 2023 09:00:00 -0700 (PDT) Received: from localhost ([24.1.27.177]) by smtp.gmail.com with ESMTPSA id j125-20020a0df983000000b005772abf6234sm2203214ywf.11.2023.08.28.09.00.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 09:00:00 -0700 (PDT) From: David Vernet To: bpf@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, martin.lau@linux.dev, song@kernel.org, yonghong.song@linux.dev, john.fastabend@gmail.com, kpsingh@kernel.org, sdf@google.com, haoluo@google.com, jolsa@kernel.org, linux-kernel@vger.kernel.org, kernel-team@meta.com, hch@infradead.org, hawkinsw@obs.cr, dthaler@microsoft.com, bpf@ietf.org Subject: [PATCH bpf-next 1/3] bpf,docs: Move linux-notes.rst to root bpf docs tree Date: Mon, 28 Aug 2023 10:59:46 -0500 Message-ID: <20230828155948.123405-2-void@manifault.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230828155948.123405-1-void@manifault.com> References: <20230828155948.123405-1-void@manifault.com> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net X-Patchwork-Delegate: bpf@iogearbox.net In commit 4d496be9ca05 ("bpf,docs: Create new standardization subdirectory"), I added a standardization/ directory to the BPF documentation, which will contain the docs that will be standardized as part of the effort with the IETF. I included linux-notes.rst in that directory, but I shouldn't have. It doesn't contain anything that will be standardized. Let's move it back to Documentation/bpf. Signed-off-by: David Vernet --- Documentation/bpf/index.rst | 1 + Documentation/bpf/{standardization => }/linux-notes.rst | 0 Documentation/bpf/standardization/index.rst | 1 - 3 files changed, 1 insertion(+), 1 deletion(-) rename Documentation/bpf/{standardization => }/linux-notes.rst (100%) diff --git a/Documentation/bpf/index.rst b/Documentation/bpf/index.rst index 1ff177b89d66..aeaeb35e6d4a 100644 --- a/Documentation/bpf/index.rst +++ b/Documentation/bpf/index.rst @@ -29,6 +29,7 @@ that goes into great technical depth about the BPF Architecture. bpf_licensing test_debug clang-notes + linux-notes other redirect diff --git a/Documentation/bpf/standardization/linux-notes.rst b/Documentation/bpf/linux-notes.rst similarity index 100% rename from Documentation/bpf/standardization/linux-notes.rst rename to Documentation/bpf/linux-notes.rst diff --git a/Documentation/bpf/standardization/index.rst b/Documentation/bpf/standardization/index.rst index 09c6ba055fd7..d7b946f71261 100644 --- a/Documentation/bpf/standardization/index.rst +++ b/Documentation/bpf/standardization/index.rst @@ -12,7 +12,6 @@ for the working group charter, documents, and more. :maxdepth: 1 instruction-set - linux-notes .. Links: .. _IETF BPF Working Group: https://datatracker.ietf.org/wg/bpf/about/ From patchwork Mon Aug 28 15:59:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Vernet X-Patchwork-Id: 13368129 X-Patchwork-Delegate: bpf@iogearbox.net Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A0AF134A6 for ; Mon, 28 Aug 2023 16:00:04 +0000 (UTC) Received: from mail-yb1-f181.google.com (mail-yb1-f181.google.com [209.85.219.181]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 43A2FCA; Mon, 28 Aug 2023 09:00:03 -0700 (PDT) Received: by mail-yb1-f181.google.com with SMTP id 3f1490d57ef6-d78328bc2abso3069388276.2; Mon, 28 Aug 2023 09:00:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693238402; x=1693843202; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=luyLmajpmSyQ8FebgnWKEdKBcRafu1L+AJoXX7hfZQI=; b=IvOALZMMuIfD0W8khI8mAte4s1jW9Pb09uKT3i6AQp+lLkJYlLfa1RjqJF1jZFqizX yUYHKBjy5/Pi2tf0f16XfvVxZ/meZE7fy0odIwYbB5zDECmaiF/ix5I1jkbFqbLA0OdV FFrAaCRWtQ8RIVxZs6EoNktPJK8TBs72qKRd4LbhwBWu6OH9gOJ9fQ8SoJ7nWmsfrXX7 dhwu5jZ4mWlC2YFh/t6RjgCJ0rwXxRuSkft65GRkicIZcv67ojfKojEfmOTM06lvmwZh 6jcrVRI+ORfIGhbsEJCg+s20O6St9APms7cewAKapWPRH9uq//S0kCozmFYEMIC0Hr2E TzWQ== X-Gm-Message-State: AOJu0YxNLTxZk3AVTgKLBtmTESmOgWWRy4u9ymdmw8bpn/g+i+hag1Lv pCFabqJyS6IR/GjSyAnrOQ5lujczF9GUTg== X-Google-Smtp-Source: AGHT+IFKAhMgLqOjdorlnMf8KBNdknwsYtmf6Im5SJlixfCReU/29DcUaSpBUMJDWJM43ox04FmyQg== X-Received: by 2002:a25:a264:0:b0:d78:7e1:a715 with SMTP id b91-20020a25a264000000b00d7807e1a715mr10874158ybi.18.1693238402050; Mon, 28 Aug 2023 09:00:02 -0700 (PDT) Received: from localhost ([24.1.27.177]) by smtp.gmail.com with ESMTPSA id b19-20020a25cb13000000b00d20d4ffbbdbsm1747053ybg.0.2023.08.28.09.00.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 09:00:01 -0700 (PDT) From: David Vernet To: bpf@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, martin.lau@linux.dev, song@kernel.org, yonghong.song@linux.dev, john.fastabend@gmail.com, kpsingh@kernel.org, sdf@google.com, haoluo@google.com, jolsa@kernel.org, linux-kernel@vger.kernel.org, kernel-team@meta.com, hch@infradead.org, hawkinsw@obs.cr, dthaler@microsoft.com, bpf@ietf.org Subject: [PATCH bpf-next 2/3] bpf,docs: Add abi.rst document to standardization subdirectory Date: Mon, 28 Aug 2023 10:59:47 -0500 Message-ID: <20230828155948.123405-3-void@manifault.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230828155948.123405-1-void@manifault.com> References: <20230828155948.123405-1-void@manifault.com> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net X-Patchwork-Delegate: bpf@iogearbox.net As specified in the IETF BPF charter, the BPF working group has plans to add one or more informational documents that recommend conventions and guidelines for producing portable BPF program binaries. The instruction-set.rst document currently contains a "Registers and calling convention" subsection which dictates a calling convention that belongs in an ABI document, rather than an instruction set document. Let's move it to a new abi.rst document so we can clean it up. The abi.rst document will of course be significantly changed and expanded upon over time. For now, it's really just a placeholder which will contain ABI-specific language that doesn't belong in other documents. Signed-off-by: David Vernet --- Documentation/bpf/standardization/abi.rst | 25 +++++++++++++++++++ Documentation/bpf/standardization/index.rst | 1 + .../bpf/standardization/instruction-set.rst | 16 ------------ 3 files changed, 26 insertions(+), 16 deletions(-) create mode 100644 Documentation/bpf/standardization/abi.rst diff --git a/Documentation/bpf/standardization/abi.rst b/Documentation/bpf/standardization/abi.rst new file mode 100644 index 000000000000..0c2e10eeb89a --- /dev/null +++ b/Documentation/bpf/standardization/abi.rst @@ -0,0 +1,25 @@ +.. contents:: +.. sectnum:: + +=================================================== +BPF ABI Recommended Conventions and Guidelines v1.0 +=================================================== + +This is version 1.0 of an informational document containing recommended +conventions and guidelines for producing portable BPF program binaries. + +Registers and calling convention +================================ + +BPF has 10 general purpose registers and a read-only frame pointer register, +all of which are 64-bits wide. + +The BPF calling convention is defined as: + +* R0: return value from function calls, and exit value for BPF programs +* R1 - R5: arguments for function calls +* R6 - R9: callee saved registers that function calls will preserve +* R10: read-only frame pointer to access stack + +R0 - R5 are scratch registers and BPF programs needs to spill/fill them if +necessary across calls. diff --git a/Documentation/bpf/standardization/index.rst b/Documentation/bpf/standardization/index.rst index d7b946f71261..a50c3baf6345 100644 --- a/Documentation/bpf/standardization/index.rst +++ b/Documentation/bpf/standardization/index.rst @@ -12,6 +12,7 @@ for the working group charter, documents, and more. :maxdepth: 1 instruction-set + abi .. Links: .. _IETF BPF Working Group: https://datatracker.ietf.org/wg/bpf/about/ diff --git a/Documentation/bpf/standardization/instruction-set.rst b/Documentation/bpf/standardization/instruction-set.rst index 4f73e9dc8d9e..cfe85129a303 100644 --- a/Documentation/bpf/standardization/instruction-set.rst +++ b/Documentation/bpf/standardization/instruction-set.rst @@ -97,22 +97,6 @@ Definitions A: 10000110 B: 11111111 10000110 -Registers and calling convention -================================ - -eBPF has 10 general purpose registers and a read-only frame pointer register, -all of which are 64-bits wide. - -The eBPF calling convention is defined as: - -* R0: return value from function calls, and exit value for eBPF programs -* R1 - R5: arguments for function calls -* R6 - R9: callee saved registers that function calls will preserve -* R10: read-only frame pointer to access stack - -R0 - R5 are scratch registers and eBPF programs needs to spill/fill them if -necessary across calls. - Instruction encoding ==================== From patchwork Mon Aug 28 15:59:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Vernet X-Patchwork-Id: 13368130 X-Patchwork-Delegate: bpf@iogearbox.net Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A30F9134A6 for ; Mon, 28 Aug 2023 16:00:05 +0000 (UTC) Received: from mail-yb1-f178.google.com (mail-yb1-f178.google.com [209.85.219.178]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9180C10B; Mon, 28 Aug 2023 09:00:04 -0700 (PDT) Received: by mail-yb1-f178.google.com with SMTP id 3f1490d57ef6-d71c3a32e1aso3228074276.3; Mon, 28 Aug 2023 09:00:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693238403; x=1693843203; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0Dq6hEvnyzheER3NLXV0bHMNRhjR+A8D02vzT+2FQtM=; b=bAfK68KhONLlEX9AJ+ZbIpjbl1aRlFqGds+F0kBOj2hT7Qvu1pYahw5kZJ37jm4YD3 C5ZJJAmvFIT108VQHLH3+pBtioIx8EeGWEuTosnzYOExh2G2fybOH4cYAlxM5f6hZX3a C48jhjZJZt5IwV3D087obifx+ZuJ1qN6WwthQPPy86/8MWVlZ0MSFNGzvIanA0iVJ+hr USIa80KPg1XsZiO+rDEDR1C3xZ6Zf2NWDqqGUps8GdggkV1tD+2a4q5zAyEVi9Y26Unl YAPA5miMHb9aslv0rgQBiDhun57CaGHz0qtgixgi/ktp87Uo+wLcleJ7KMyb/N1ObJx0 3mqQ== X-Gm-Message-State: AOJu0YxrTAdIyQeV50yqXNjlvq0BhBWb0aAIcfyEinKPHS4Df53nTE67 jcFgg9qXCOmhsq7W9wKTNY5oG1812HBcjg== X-Google-Smtp-Source: AGHT+IGkPgIoZCO/1q2yZVVpwZp/R7ZnvvPjF/V5EdMHZGd5mSBTXSbbsuY9MBzaT+qbMgnHytKpPg== X-Received: by 2002:a81:94c4:0:b0:56d:2f9d:42cc with SMTP id l187-20020a8194c4000000b0056d2f9d42ccmr25510012ywg.51.1693238403456; Mon, 28 Aug 2023 09:00:03 -0700 (PDT) Received: from localhost ([24.1.27.177]) by smtp.gmail.com with ESMTPSA id v5-20020a81a545000000b00559f1cb8444sm2178088ywg.70.2023.08.28.09.00.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Aug 2023 09:00:03 -0700 (PDT) From: David Vernet To: bpf@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, martin.lau@linux.dev, song@kernel.org, yonghong.song@linux.dev, john.fastabend@gmail.com, kpsingh@kernel.org, sdf@google.com, haoluo@google.com, jolsa@kernel.org, linux-kernel@vger.kernel.org, kernel-team@meta.com, hch@infradead.org, hawkinsw@obs.cr, dthaler@microsoft.com, bpf@ietf.org Subject: [PATCH bpf-next 3/3] bpf,docs: s/eBPF/BPF in standards documents Date: Mon, 28 Aug 2023 10:59:48 -0500 Message-ID: <20230828155948.123405-4-void@manifault.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230828155948.123405-1-void@manifault.com> References: <20230828155948.123405-1-void@manifault.com> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net X-Patchwork-Delegate: bpf@iogearbox.net There isn't really anything other than just "BPF" at this point, so referring to it as "eBPF" in our standards document just causes unnecessary confusion. Let's just be consistent and use "BPF". Suggested-by: Will Hawkins Signed-off-by: David Vernet --- .../bpf/standardization/instruction-set.rst | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Documentation/bpf/standardization/instruction-set.rst b/Documentation/bpf/standardization/instruction-set.rst index cfe85129a303..8afe6567209e 100644 --- a/Documentation/bpf/standardization/instruction-set.rst +++ b/Documentation/bpf/standardization/instruction-set.rst @@ -1,11 +1,11 @@ .. contents:: .. sectnum:: -======================================== -eBPF Instruction Set Specification, v1.0 -======================================== +======================================= +BPF Instruction Set Specification, v1.0 +======================================= -This document specifies version 1.0 of the eBPF instruction set. +This document specifies version 1.0 of the BPF instruction set. Documentation conventions ========================= @@ -100,7 +100,7 @@ Definitions Instruction encoding ==================== -eBPF has two instruction encodings: +BPF has two instruction encodings: * the basic instruction encoding, which uses 64 bits to encode an instruction * the wide instruction encoding, which appends a second 64-bit immediate (i.e., @@ -244,7 +244,7 @@ BPF_END 0xd0 0 byte swap operations (see `Byte swap instructions`_ b ========= ===== ======= ========================================================== Underflow and overflow are allowed during arithmetic operations, meaning -the 64-bit or 32-bit value will wrap. If eBPF program execution would +the 64-bit or 32-bit value will wrap. If BPF program execution would result in division by zero, the destination register is instead set to zero. If execution would result in modulo by zero, for ``BPF_ALU64`` the value of the destination register is unchanged whereas for ``BPF_ALU`` the upper @@ -366,7 +366,7 @@ BPF_JSLT 0xc any PC += offset if dst < src signed BPF_JSLE 0xd any PC += offset if dst <= src signed ======== ===== === =========================================== ========================================= -The eBPF program needs to store the return value into register R0 before doing a +The BPF program needs to store the return value into register R0 before doing a ``BPF_EXIT``. Example: @@ -486,9 +486,9 @@ Atomic operations Atomic operations are operations that operate on memory and can not be interrupted or corrupted by other access to the same memory region -by other eBPF programs or means outside of this specification. +by other BPF programs or means outside of this specification. -All atomic operations supported by eBPF are encoded as store operations +All atomic operations supported by BPF are encoded as store operations that use the ``BPF_ATOMIC`` mode modifier as follows: * ``BPF_ATOMIC | BPF_W | BPF_STX`` for 32-bit operations @@ -578,7 +578,7 @@ where Maps ~~~~ -Maps are shared memory regions accessible by eBPF programs on some platforms. +Maps are shared memory regions accessible by BPF programs on some platforms. A map can have various semantics as defined in a separate document, and may or may not have a single contiguous memory region, but the 'map_val(map)' is currently only defined for maps that do have a single contiguous memory region. @@ -600,6 +600,6 @@ identified by the given id. Legacy BPF Packet access instructions ------------------------------------- -eBPF previously introduced special instructions for access to packet data that were +BPF previously introduced special instructions for access to packet data that were carried over from classic BPF. However, these instructions are deprecated and should no longer be used.