From: Alan Maguire <alan.maguire@oracle.com>
To: ast@kernel.org, andrii@kernel.org, daniel@iogearbox.net,
eddyz87@gmail.com
Cc: jolsa@kernel.org, ihor.solodrai@linux.dev,
yonghong.song@linux.dev, song@kernel.org, qmo@kernel.org,
martin.lau@linux.dev, memxor@gmail.com, emil@etsalapatis.com,
mcgrof@kernel.org, petr.pavlu@suse.com, tj@kernel.org,
kees@kernel.org, nathan@kernel.org, arnd@arndb.de,
puranjay@kernel.org, yatsenko@meta.com, atenart@kernel.org,
ojeda@kernel.org, linux-modules@vger.kernel.org,
arnaldo.melo@gmail.com, bpf@vger.kernel.org,
Alan Maguire <alan.maguire@oracle.com>
Subject: [PATCH v3 bpf-next 0/7] kbuild, bpf: Support inline info in BTF
Date: Sat, 3 Oct 2026 20:43:16 +0100 [thread overview]
Message-ID: <20261003194323.817885-1-alan.maguire@oracle.com> (raw)
If CONFIG_DEBUG_INFO_BTF_INLINE=y|m, add the "inline" BTF feature
and encode inline site info in BTF alongside standard BTF data.
resolve_btfids will then partition into non- and inline-related
info and split BTF will be used to store inline info in a
.BTF.inline section in vmlinux and modules. For
CONFIG_DEBUG_INFO_BTF=m, vmlinux inline info will be stored
in btf_vmlinux_inline.ko and will be loaded on-demand if used
via /sys/kernel/btf/vmlinux.inline. A .BTF.inline.link section
in vmlinux stores the module name, the SHA of the BTF and the
size so that even without loading the kernel can size the
sysfs representation correctly. This approach is based on [1]
and the .BTF.inline.link section is modeled on .GNU_debuglink.
Because a module can be built with .BTF.base to allow for
BTF relocation, its inline info needs to be relocated also
so a bit more work needs to be done to handle this.
Patches 1, 2 add resolve_btfids support to partition BTF
into .BTF and .BTF.inline and to support populating
a BTF link section for BTF_INLINE=m. Patch 3 handles
vmlinux.inline exposure in sysfs. Patch 4 does prep
work for relocation needed in patch 5 prior to exposing
relocated BTF in sysfs, and patches 6 and 7 test BTF
sysfs representations and inline validity using
bpf_testmod respectively.
To generate inline info the latest pahole is needed [2].
Inline info for vmlinux can be quite large ~10Mb for
over 600,000 inline sites in the kernel, so
CONFIG_DEBUG_INFO_BTF_INLINE=m
is recommended; this brings the on-disk size down below
4Mb.
Changes since v2 [3]
- Delivered the libbpf, bpftool parts are prerequisites
- Switched to using Eduard's neater BTF partitioning approach which
is fully in resolve_btfids instead of libbpf (Eduard, patch 1)
- Supports mmap()ed vmlinux.inline (Alexei, patch 3, test patch 7)
- Moved to using .BTF.inline.link to store inline BTF size
which avoids need to switch to using kernfs; also allows us
to SHA-verify BTF inline info
[1] https://lore.kernel.org/bpf/20260925224229.1850-1-wanjay@amazon.com/
[2] https://git.kernel.org/pub/scm/devel/pahole/pahole.git/
[3] https://lore.kernel.org/bpf/20260901165757.801449-1-alan.maguire@oracle.com/
Alan Maguire (6):
resolve_btfids: Populate BTF link section
kbuild, btf: Expose vmlinux inline BTF through sysfs
btf: Preserve string relocation maps for split BTF
btf: Relocate and expose module inline BTF
selftests/bpf: Test BTF sysfs inline representations
selftests/bpf: Add a test verifying inline information
Eduard Zingerman (1):
resolve_btfids: Build separate main and inline BTF objects
Makefile | 1 +
include/asm-generic/vmlinux.lds.h | 27 ++
include/linux/btf.h | 42 +-
include/linux/module.h | 4 +
kernel/bpf/Makefile | 1 +
kernel/bpf/btf.c | 386 ++++++++++++++----
kernel/bpf/btf_vmlinux_inline.c | 29 ++
kernel/bpf/sysfs_btf.c | 145 ++++++-
kernel/module/main.c | 7 +
lib/Kconfig.debug | 19 +
scripts/Makefile.btf | 7 +
scripts/gen-btf.sh | 31 +-
scripts/link-vmlinux.sh | 8 +-
scripts/package/kernel.spec | 10 +-
tools/bpf/resolve_btfids/Build | 1 +
tools/bpf/resolve_btfids/btf_colors.c | 145 +++++++
tools/bpf/resolve_btfids/btf_colors.h | 24 ++
tools/bpf/resolve_btfids/main.c | 352 +++++++++++++++-
tools/lib/bpf/btf.c | 2 +-
tools/lib/bpf/btf_relocate.c | 7 +-
tools/lib/bpf/libbpf_internal.h | 3 +-
tools/testing/selftests/bpf/Makefile | 4 +-
.../selftests/bpf/prog_tests/btf_inline.c | 110 +++++
.../selftests/bpf/prog_tests/btf_sysfs.c | 76 ++++
.../selftests/bpf/test_kmods/bpf_testmod.c | 2 +-
tools/testing/selftests/bpf/trace_helpers.c | 20 +
tools/testing/selftests/bpf/trace_helpers.h | 1 +
tools/testing/selftests/hid/Makefile | 2 +
28 files changed, 1362 insertions(+), 104 deletions(-)
create mode 100644 kernel/bpf/btf_vmlinux_inline.c
create mode 100644 tools/bpf/resolve_btfids/btf_colors.c
create mode 100644 tools/bpf/resolve_btfids/btf_colors.h
create mode 100644 tools/testing/selftests/bpf/prog_tests/btf_inline.c
--
2.43.5
next reply other threads:[~2026-10-03 19:44 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-03 19:43 Alan Maguire [this message]
2026-10-03 19:43 ` [PATCH v3 bpf-next 1/7] resolve_btfids: Build separate main and inline BTF objects Alan Maguire
2026-10-03 20:27 ` bot+bpf-ci
2026-10-06 17:30 ` Alan Maguire
2026-10-03 19:43 ` [PATCH v3 bpf-next 2/7] resolve_btfids: Populate BTF link section Alan Maguire
2026-10-03 20:27 ` bot+bpf-ci
2026-10-03 19:43 ` [PATCH v3 bpf-next 3/7] kbuild, btf: Expose vmlinux inline BTF through sysfs Alan Maguire
2026-10-03 19:56 ` sashiko-bot
2026-10-06 18:12 ` Alan Maguire
2026-10-03 20:41 ` bot+bpf-ci
2026-10-06 18:42 ` Alan Maguire
2026-10-03 19:43 ` [PATCH v3 bpf-next 4/7] btf: Preserve string relocation maps for split BTF Alan Maguire
2026-10-03 19:43 ` [PATCH v3 bpf-next 5/7] btf: Relocate and expose module inline BTF Alan Maguire
2026-10-03 19:59 ` sashiko-bot
2026-10-06 18:56 ` Alan Maguire
2026-10-03 20:27 ` bot+bpf-ci
2026-10-03 19:43 ` [PATCH v3 bpf-next 6/7] selftests/bpf: Test BTF sysfs inline representations Alan Maguire
2026-10-03 19:54 ` sashiko-bot
2026-10-03 19:43 ` [PATCH v3 bpf-next 7/7] selftests/bpf: Add a test verifying inline information Alan Maguire
2026-10-03 19:54 ` sashiko-bot
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=20261003194323.817885-1-alan.maguire@oracle.com \
--to=alan.maguire@oracle.com \
--cc=andrii@kernel.org \
--cc=arnaldo.melo@gmail.com \
--cc=arnd@arndb.de \
--cc=ast@kernel.org \
--cc=atenart@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=eddyz87@gmail.com \
--cc=emil@etsalapatis.com \
--cc=ihor.solodrai@linux.dev \
--cc=jolsa@kernel.org \
--cc=kees@kernel.org \
--cc=linux-modules@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=mcgrof@kernel.org \
--cc=memxor@gmail.com \
--cc=nathan@kernel.org \
--cc=ojeda@kernel.org \
--cc=petr.pavlu@suse.com \
--cc=puranjay@kernel.org \
--cc=qmo@kernel.org \
--cc=song@kernel.org \
--cc=tj@kernel.org \
--cc=yatsenko@meta.com \
--cc=yonghong.song@linux.dev \
/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