mirror of
https://github.com/torvalds/linux.git
synced 2026-07-29 02:31:27 +02:00
docs: Raise minimum pahole version to 1.26 for KF_IMPLICIT_ARGS kfuncs
Since Linux 7.0, kfuncs annotated with KF_IMPLICIT_ARGS require pahole v1.26 or later. Without it, such kfuncs will have incorrect BTF prototypes in vmlinux, causing BPF programs to fail to load with a "func_proto incompatible with vmlinux" error. Many sched_ext kfuncs are affected (e.g. scx_bpf_create_dsq, scx_bpf_kick_cpu). The root cause: scripts/Makefile.btf passes --btf_features=decl_tag_kfuncs to pahole only when pahole >= 1.26. Without that flag, pahole emits no DECL_TAG BTF entries for __bpf_kfunc-annotated functions. As a result, resolve_btfids/main.c::collect_kfuncs() finds no bpf_kfunc DECL_TAGs, short-circuits at line 1002, and btf2btf() never creates the _impl variants or strips the implicit 'aux' argument from the visible proto. The vmlinux BTF retains the 3-param prototype while BPF programs declare the 2-param version, triggering the mismatch. Raise the minimum version in the requirements table from 1.22 to 1.26 and add a note explaining the failure mode, so users understand why their BPF programs fail on distributions shipping pahole v1.25 (e.g. Ubuntu 24.04 LTS). Suggested-by: Jonathan Corbet <corbet@lwn.net> Signed-off-by: zhidao su <suzhidao@xiaomi.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
4624211bc6
commit
9edd04c418
|
|
@ -38,7 +38,7 @@ bash 4.2 bash --version
|
||||||
binutils 2.30 ld -v
|
binutils 2.30 ld -v
|
||||||
flex 2.5.35 flex --version
|
flex 2.5.35 flex --version
|
||||||
bison 2.0 bison --version
|
bison 2.0 bison --version
|
||||||
pahole 1.22 pahole --version
|
pahole 1.26 pahole --version
|
||||||
util-linux 2.10o mount --version
|
util-linux 2.10o mount --version
|
||||||
kmod 13 depmod -V
|
kmod 13 depmod -V
|
||||||
e2fsprogs 1.41.4 e2fsck -V
|
e2fsprogs 1.41.4 e2fsck -V
|
||||||
|
|
@ -145,6 +145,11 @@ Since Linux 5.2, if CONFIG_DEBUG_INFO_BTF is selected, the build system
|
||||||
generates BTF (BPF Type Format) from DWARF in vmlinux, a bit later from kernel
|
generates BTF (BPF Type Format) from DWARF in vmlinux, a bit later from kernel
|
||||||
modules as well. This requires pahole v1.22 or later.
|
modules as well. This requires pahole v1.22 or later.
|
||||||
|
|
||||||
|
Since Linux 7.0, kfuncs annotated with KF_IMPLICIT_ARGS require pahole v1.26
|
||||||
|
or later. Without it, such kfuncs will have incorrect BTF prototypes in
|
||||||
|
vmlinux, causing BPF programs to fail to load with a "func_proto incompatible
|
||||||
|
with vmlinux" error. Many sched_ext kfuncs are affected.
|
||||||
|
|
||||||
It is found in the 'dwarves' or 'pahole' distro packages or from
|
It is found in the 'dwarves' or 'pahole' distro packages or from
|
||||||
https://fedorapeople.org/~acme/dwarves/.
|
https://fedorapeople.org/~acme/dwarves/.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user