From: David Vernet <void@manifault.com>
To: "Toke Høiland-Jørgensen" <toke@redhat.com>
Cc: Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>,
Martin KaFai Lau <martin.lau@linux.dev>,
Song Liu <song@kernel.org>, Yonghong Song <yhs@fb.com>,
John Fastabend <john.fastabend@gmail.com>,
KP Singh <kpsingh@kernel.org>,
Stanislav Fomichev <sdf@google.com>, Hao Luo <haoluo@google.com>,
Jiri Olsa <jolsa@kernel.org>,
Cong Wang <xiyou.wangcong@gmail.com>,
Jonathan Corbet <corbet@lwn.net>,
bpf@vger.kernel.org, linux-doc@vger.kernel.org
Subject: Re: [PATCH bpf-next v2] bpf/docs: Update design QA to be consistent with kfunc lifecycle docs
Date: Wed, 8 Feb 2023 09:15:56 -0600 [thread overview]
Message-ID: <Y+O8rJ3TGwl6FnVK@maniforge.lan> (raw)
In-Reply-To: <20230208135731.268638-1-toke@redhat.com>
On Wed, Feb 08, 2023 at 02:57:30PM +0100, Toke Høiland-Jørgensen wrote:
> Cong pointed out that there are some inconsistencies between the BPF design
> QA and the lifecycle expectations documentation we added for kfuncs. Let's
> update the QA file to be consistent with the kfunc docs, and add references
> where it makes sense. Also document that modules may export kfuncs now.
>
> v2:
> - Fix repeated word (s/defined defined/defined/)
>
> Reported-by: Cong Wang <xiyou.wangcong@gmail.com>
> Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
Thanks for fixing this. LGTM modulo one small grammar nit.
Acked-by: David Vernet <void@manifault.com>
> ---
> Documentation/bpf/bpf_design_QA.rst | 25 ++++++++++++++++++-------
> 1 file changed, 18 insertions(+), 7 deletions(-)
>
> diff --git a/Documentation/bpf/bpf_design_QA.rst b/Documentation/bpf/bpf_design_QA.rst
> index cec2371173d7..4d3135187e0c 100644
> --- a/Documentation/bpf/bpf_design_QA.rst
> +++ b/Documentation/bpf/bpf_design_QA.rst
> @@ -208,6 +208,10 @@ data structures and compile with kernel internal headers. Both of these
> kernel internals are subject to change and can break with newer kernels
> such that the program needs to be adapted accordingly.
>
> +New BPF functionality is generally added through the use of kfuncs instead of
> +new helpers. Kfuncs are not considered part of the stable API, but has their own
s/but has/and have
> +lifecycle expectations as described in :ref:`BPF_kfunc_lifecycle_expectations`.
> +
> Q: Are tracepoints part of the stable ABI?
> ------------------------------------------
> A: NO. Tracepoints are tied to internal implementation details hence they are
> @@ -236,8 +240,8 @@ A: NO. Classic BPF programs are converted into extend BPF instructions.
>
> Q: Can BPF call arbitrary kernel functions?
> -------------------------------------------
> -A: NO. BPF programs can only call a set of helper functions which
> -is defined for every program type.
> +A: NO. BPF programs can only call specific functions exposed as BPF helpers or
> +kfuncs. The set of available functions is defined for every program type.
>
> Q: Can BPF overwrite arbitrary kernel memory?
> ---------------------------------------------
> @@ -263,7 +267,12 @@ Q: New functionality via kernel modules?
> Q: Can BPF functionality such as new program or map types, new
> helpers, etc be added out of kernel module code?
>
> -A: NO.
> +A: Yes, through kfuncs and kptrs
> +
> +The core BPF functionality such as program types, maps and helpers cannot be
> +added to by modules. However, modules can expose functionality to BPF programs
> +by exporting kfuncs (which may return pointers to module-internal data
> +structures as kptrs).
>
> Q: Directly calling kernel function is an ABI?
> ----------------------------------------------
> @@ -278,7 +287,8 @@ kernel functions have already been used by other kernel tcp
> cc (congestion-control) implementations. If any of these kernel
> functions has changed, both the in-tree and out-of-tree kernel tcp cc
> implementations have to be changed. The same goes for the bpf
> -programs and they have to be adjusted accordingly.
> +programs and they have to be adjusted accordingly. See
> +:ref:`BPF_kfunc_lifecycle_expectations` for details.
>
> Q: Attaching to arbitrary kernel functions is an ABI?
> -----------------------------------------------------
> @@ -340,6 +350,7 @@ compatibility for these features?
>
> A: NO.
>
> -Unlike map value types, there are no stability guarantees for this case. The
> -whole API to work with allocated objects and any support for special fields
> -inside them is unstable (since it is exposed through kfuncs).
> +Unlike map value types, the API to work with allocated objects and any support
> +for special fields inside them is exposed through kfuncs, and thus has the same
> +lifecycle expectations as the kfuncs themselves. See
> +:ref:`BPF_kfunc_lifecycle_expectations` for details.
> --
> 2.39.1
>
next prev parent reply other threads:[~2023-02-08 15:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-08 13:57 [PATCH bpf-next v2] bpf/docs: Update design QA to be consistent with kfunc lifecycle docs Toke Høiland-Jørgensen
2023-02-08 15:15 ` David Vernet [this message]
2023-02-08 16:39 ` Toke Høiland-Jørgensen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y+O8rJ3TGwl6FnVK@maniforge.lan \
--to=void@manifault.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=corbet@lwn.net \
--cc=daniel@iogearbox.net \
--cc=haoluo@google.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=sdf@google.com \
--cc=song@kernel.org \
--cc=toke@redhat.com \
--cc=xiyou.wangcong@gmail.com \
--cc=yhs@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox