summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/bin
diff options
context:
space:
mode:
authorEduard Zingerman <eddyz87@gmail.com>2026-08-06 22:01:29 -0700
committerEduard Zingerman <eddyz87@gmail.com>2026-08-06 22:01:29 -0700
commit41c129fdc28b6414d259da72679567c5e72a55dd (patch)
tree9af265d39bff3534fa139c01e82119377dd880ad /tools/perf/scripts/python/bin
parent8c7f55d60aa3512fd3da7e9cf313723460e487b4 (diff)
parentfd5425b67355da4972c76b4ca266f05515172a9b (diff)
Merge branch 'resolve_btfids-implement-btf-tags-emission-for-kfuncs'
Ihor Solodrai says: ==================== resolve_btfids: Implement BTF tags emission for kfuncs BTF data for the kernel is generated through the following pipeline: * DWARF is emitted by the compiler * pahole reads in DWARF and produces BTF * resolve_btfids makes kernel-specific btf2btf transformation and patches .BTF_ids section This is orchestrated by link-vmlinux.sh, gen-btf.sh and Makefile.btf in ./scripts directory. Historically kernel-specific BTF features were implemented in pahole, and controlled by the feature flags. This requires kernel build process to be aware of pahole version used for the build to set correct runtime arguments for BTF encoding [1]. This is a burden which can be alleviated by splitting kernel/module BTF generation in two stages: 1. Generic BTF generation from the kernel source code. 2. Kernel-specific BTF modifications to support various BPF features. So far both stages were fused in pahole's BTF encoding. By moving stage (2) in-tree, the dependency of kernel build on pahole can become much more loose. resolve_btfids is already responsible for a few kernel-specific BTF modifications: * .BTF.base generation for modules [2] * BTF sorting [3] * KF_IMPLICIT_ARGS support [4] This series completes the migration by emitting BTF kfunc annotations in-tree: the "bpf_kfunc" and "bpf_fastcall" decl tags and the arena "address_space(1)" type attribute, dropping the corresponding pahole feature flags. The three annotations depend on two pahole feature flags: "decl_tag_kfuncs" and "attributes". Since emission is unconditional, each flag has to be dropped in the same commit as the emission that replaces it. [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/Makefile.btf?h=v7.1-rc5 [2] https://docs.kernel.org/bpf/btf.html#btf-base-section [3] https://lore.kernel.org/bpf/20260109130003.3313716-4-dolinux.peng@gmail.com/ [4] https://lore.kernel.org/bpf/20260120222638.3976562-1-ihor.solodrai@linux.dev/ [5] https://lore.kernel.org/bpf/20260722233518.778854-1-ihor.solodrai@linux.dev/ [6] https://lore.kernel.org/bpf/20260617210619.1562858-1-ihor.solodrai@linux.dev/ --- v2->v3: * Refactoring in patch #2 (Eduard) * restructure add_arena_tagged_proto() such that first we copy the func proto and then update param types in place * push error messages down to arena_tag_ptr() * introduce is_arena_arg() helper * Docs cleanup in patch #6 (Eduard) * Add stats in commit message for patch #1 v2: https://lore.kernel.org/bpf/20260805230648.2354989-1-ihor.solodrai@linux.dev/ v1->v2: * The bottom part of v1 has already been landed [5][6]. * New patch #1: run btf__dedup() in finalize_btf(). * Drop the "ensure" pattern. Emission is unconditional; kbuild owns the pahole flags, so assume input BTF is not already tagged. * Each pahole flag is now dropped in the same commit as the emission that replaces it. * Fail hard with an error on invalid kfunc declarations such as an arena flag naming a missing argument or a non-pointer type. * Various cleanups and nits (Andrii, Emil, Jiri, Sashiko). v1: https://lore.kernel.org/bpf/20260601221805.821394-1-ihor.solodrai@linux.dev/ --- ==================== Link: https://patch.msgid.link/20260807032029.78092-1-ihor.solodrai@linux.dev Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Diffstat (limited to 'tools/perf/scripts/python/bin')
0 files changed, 0 insertions, 0 deletions