public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH bpf-next v1 0/4] resolve_btfids: Support for BTF modifications
@ 2025-11-26  1:26 Ihor Solodrai
  2025-11-26  1:26 ` [PATCH bpf-next v1 1/4] resolve_btfids: rename object btf field to btf_path Ihor Solodrai
                   ` (4 more replies)
  0 siblings, 5 replies; 16+ messages in thread
From: Ihor Solodrai @ 2025-11-26  1:26 UTC (permalink / raw)
  To: Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko,
	Martin KaFai Lau, Eduard Zingerman, Song Liu, Yonghong Song,
	John Fastabend, KP Singh, Stanislav Fomichev, Hao Luo, Jiri Olsa,
	Nathan Chancellor, Nicolas Schier, Nick Desaulniers,
	Bill Wendling, Justin Stitt
  Cc: bpf, dwarves, linux-kernel, linux-kbuild, Alan Maguire,
	Donglin Peng

This series changes resolve_btfids and kernel build scripts to enable
BTF transformations in resolve_btfids. Main motivation for enhancing
resolve_btfids is to reduce dependency of the kernel build on pahole
capabilities [1] and enable BTF features and optimizations [2][3]
particular to the kernel.

Patches #1-#3 in the series are non-functional refactoring in
resolve_btfids. The last patch (#4) makes significant changes in
resolve_btfids and introduces scripts/gen-btf.sh. Implementation
changes are described in detail in the patch description.

One RFC item in this patchset is the --distilled_base [4] handling.
Before this patchset .BTF.base was generated and added to target
binary by pahole, based on these conditions [5]:
  * pahole version >=1.28
  * the kernel module is out-of-tree (KBUILD_EXTMOD)

Since BTF finalization is now done by resolve_btfids, it requires
btf__distill_base() to happen there. However, in my opinion, it is
unnecessary to add and pass through a --distilled_base flag for
resolve_btfids.

Logically, any split BTF referring to kernel BTF is not very useful
without the .BTF.base, which is why the feature was developed in the
first place. Therefore it makes sense to always emit .BTF.base for all
modules, unconditionally. This is implemented in the series.

However it might be argued that .BTF.base is redundant for in-tree
modules: it takes space the module ELF and triggers unnecessary
btf__relocate() call on load [6]. It can be avoided by special-casing
in-tree module handling in resolve_btfids either with a flag or by
checking env variables. The trade-off is slight performance impact vs
code complexity.

[1] https://lore.kernel.org/dwarves/ba1650aa-fafd-49a8-bea4-bdddee7c38c9@linux.dev/
[2] https://lore.kernel.org/bpf/20251029190113.3323406-1-ihor.solodrai@linux.dev/
[3] https://lore.kernel.org/bpf/20251119031531.1817099-1-dolinux.peng@gmail.com/
[4] https://docs.kernel.org/bpf/btf.html#btf-base-section
[5] https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git/tree/scripts/Makefile.btf#n29
[6] https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git/tree/kernel/bpf/btf.c#n6358

Ihor Solodrai (4):
  resolve_btfids: rename object btf field to btf_path
  resolve_btfids: factor out load_btf()
  resolve_btfids: introduce enum btf_id_kind
  resolve_btfids: change in-place update with raw binary output

 MAINTAINERS                     |   1 +
 scripts/Makefile.modfinal       |   5 +-
 scripts/gen-btf.sh              | 166 ++++++++++++++++++++++
 scripts/link-vmlinux.sh         |  42 +-----
 tools/bpf/resolve_btfids/main.c | 234 +++++++++++++++++++++++---------
 5 files changed, 348 insertions(+), 100 deletions(-)
 create mode 100755 scripts/gen-btf.sh

-- 
2.52.0


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2025-12-02 12:56 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-26  1:26 [PATCH bpf-next v1 0/4] resolve_btfids: Support for BTF modifications Ihor Solodrai
2025-11-26  1:26 ` [PATCH bpf-next v1 1/4] resolve_btfids: rename object btf field to btf_path Ihor Solodrai
2025-11-26  1:26 ` [PATCH bpf-next v1 2/4] resolve_btfids: factor out load_btf() Ihor Solodrai
2025-11-26  1:26 ` [PATCH bpf-next v1 3/4] resolve_btfids: introduce enum btf_id_kind Ihor Solodrai
2025-11-26  2:09   ` bot+bpf-ci
2025-11-26 19:08     ` Ihor Solodrai
2025-11-26  1:26 ` [PATCH bpf-next v1 4/4] resolve_btfids: change in-place update with raw binary output Ihor Solodrai
2025-11-26  4:46   ` Donglin Peng
2025-11-26 18:22     ` Ihor Solodrai
2025-11-26 18:32     ` Ihor Solodrai
2025-11-26 13:03   ` Donglin Peng
2025-11-26 19:13     ` Ihor Solodrai
2025-11-26 23:58       ` Ihor Solodrai
2025-11-26 12:36 ` [PATCH bpf-next v1 0/4] resolve_btfids: Support for BTF modifications Alan Maguire
2025-11-26 19:01   ` Ihor Solodrai
2025-12-02 12:56     ` Alan Maguire

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox