Re: [PATCH bpf-next v1 14/14] docs, resolve_btfids: Document kfunc BTF annotation emission

"Emil Tsalapatis" <[email protected]>
Newsgroups org.kernel.vger.linux-kbuild,org.kernel.vger.bpf
Message-ID <[email protected]>
On Mon Jun 1, 2026 at 6:18 PM EDT, Ihor Solodrai wrote:
> resolve_btfids now emits the bpf_kfunc and bpf_fastcall BTF decl tags
> and the arena address_space(1) type attribute for kfuncs, which were
> previously produced by pahole.
>
> Reflect this in the in-tree comments and documentation.

Reviewed-by: Emil Tsalapatis <[email protected]>

Nit: Replace address_space(1) with arena here and in any other occurences.

>
> Signed-off-by: Ihor Solodrai <[email protected]>
> ---
>  Documentation/bpf/kfuncs.rst    |  8 ++++++++
>  scripts/Makefile.btf            |  3 +++
>  tools/bpf/resolve_btfids/main.c | 11 +++++++++++
>  3 files changed, 22 insertions(+)
>
> diff --git a/Documentation/bpf/kfuncs.rst b/Documentation/bpf/kfuncs.rst
> index 4c814ff6061e..d98e666f03a3 100644
> --- a/Documentation/bpf/kfuncs.rst
> +++ b/Documentation/bpf/kfuncs.rst
> @@ -437,6 +437,14 @@ type. An example is shown below::
>          }
>          late_initcall(init_subsystem);
>  
> +At kernel build time the ``resolve_btfids`` tool discovers all kfuncs from the
> +registered ``BTF_SET8_KFUNCS`` sets and emits their BTF annotations into the
> +kernel's BTF; these annotations were historically produced by pahole. For each
> +discovered kfunc ``resolve_btfids`` emits a ``bpf_kfunc`` BTF decl tag, a
> +``bpf_fastcall`` decl tag when the kfunc is flagged ``KF_FASTCALL``, and the
> +``address_space(1)`` type attribute on the return value and/or arguments flagged
> +``KF_ARENA_RET``, ``KF_ARENA_ARG1`` or ``KF_ARENA_ARG2`` (see section 2.8).
> +
>  2.7  Specifying no-cast aliases with ___init
>  --------------------------------------------
>  
> diff --git a/scripts/Makefile.btf b/scripts/Makefile.btf
> index a1812985a61a..717e76ce96a7 100644
> --- a/scripts/Makefile.btf
> +++ b/scripts/Makefile.btf
> @@ -14,6 +14,9 @@ pahole-flags-$(call test-ge, $(pahole-ver), 125)	+= --skip_encoding_btf_inconsis
>  else
>  
>  # Switch to using --btf_features for v1.26 and later.
> +#
> +# kfunc BTF annotations (bpf_kfunc/bpf_fastcall decl tags and the arena
> +# address_space(1) type attribute) are emitted by resolve_btfids, not pahole.
>  pahole-flags-$(call test-ge, $(pahole-ver), 126)  = -j$(JOBS) --btf_features=encode_force,var,float,enum64,decl_tag,type_tag,optimized_func,consistent_func
>  
>  pahole-flags-$(call test-ge, $(pahole-ver), 131) += --btf_features=layout
> diff --git a/tools/bpf/resolve_btfids/main.c b/tools/bpf/resolve_btfids/main.c
> index aafbcfec755b..5a4683d11426 100644
> --- a/tools/bpf/resolve_btfids/main.c
> +++ b/tools/bpf/resolve_btfids/main.c
> @@ -58,6 +58,17 @@
>   *             __BTF_ID__func__vfs_fallocate__5:
>   *             .zero 4
>   *	       .word (1 << 3) | (1 << 1) | (1 << 2)
> + *
> + * In addition to resolving BTF IDs, resolve_btfids performs kernel-specific
> + * BTF-to-BTF transformations for kfuncs found in BTF_SET8_KFUNCS sets. For
> + * each such kfunc it:
> + *
> + *   - emits a "bpf_kfunc" decl tag, and "bpf_fastcall" when KF_FASTCALL is set;
> + *   - wraps the return value and/or arguments flagged KF_ARENA_RET,
> + *     KF_ARENA_ARG1 or KF_ARENA_ARG2 with the "address_space(1)" type attribute;
> + *   - rewrites the prototype of KF_IMPLICIT_ARGS kfuncs.
> + *
> + * These kfunc annotations were historically produced by pahole.
>   */
>  
>  #define  _GNU_SOURCE
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.