From: sashiko-bot@kernel.org
To: "Jay Wang" <wanjay@amazon.com>
Cc: bpf@vger.kernel.org, linux-modules@vger.kernel.org
Subject: Re: [PATCH bpf-next 6/6] kbuild, bpf: allow building the vmlinux BTF as a module
Date: Wed, 23 Sep 2026 05:59:05 +0000 [thread overview]
Message-ID: <20260923055905.ACA941F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260923053948.30617-7-wanjay@amazon.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] kbuild: global module relinks when CONFIG_DEBUG_INFO_BTF=m
- [Low] kbuild: non-POSIX head -c in gen-btf.sh breaks strict environments
--
commit 7587d72dd889263f91882b475224bac4cf470c15
Author: Jay Wang <wanjay@amazon.com>
kbuild, bpf: allow building the vmlinux BTF as a module
This commit makes CONFIG_DEBUG_INFO_BTF a tristate, allowing the vmlinux BTF
to be built as a module (btf_vmlinux) rather than part of the kernel image.
It defers loading the BTF until it is first needed, saving memory on systems
where it goes unused.
> diff --git a/scripts/Makefile.modfinal b/scripts/Makefile.modfinal
> index 01a37ec872b90..ad182f84b5fcf 100644
> --- a/scripts/Makefile.modfinal
> +++ b/scripts/Makefile.modfinal
[ ... ]
> -# Re-generate module BTFs if either module's .ko or vmlinux changed
> -%.ko: %.o %.mod.o .module-common.o $(objtree)/scripts/module.lds $(and $(CONFIG_DEBUG_INFO_BTF_MODULES),$(KBUILD_BUILTIN),$(objtree)/vmlinux) FORCE
> - +$(call if_changed,ld_ko_o)
> +# Modules that get a .BTF section: all of them with CONFIG_DEBUG_INFO_BTF_MODULES,
> +# otherwise only the vmlinux BTF carrier module with CONFIG_DEBUG_INFO_BTF=m.
> ifdef CONFIG_DEBUG_INFO_BTF_MODULES
> - +$(if $(newer-prereqs),$(call cmd,btf_ko))
> +btf-modules := $(modules:%.o=%.ko)
> +else ifeq ($(CONFIG_DEBUG_INFO_BTF),m)
> +btf-modules := $(filter %/btf_vmlinux.ko,$(modules:%.o=%.ko))
> endif
> +
> +# Re-generate module BTFs if either module's .ko or vmlinux changed
> +%.ko: %.o %.mod.o .module-common.o $(objtree)/scripts/module.lds $(and $(btf-modules),$(KBUILD_BUILTIN),$(objtree)/vmlinux) FORCE
[Severity: High]
Will this implicit rule globally add vmlinux as a prerequisite to every module
if btf-modules is non-empty?
When CONFIG_DEBUG_INFO_BTF=m and CONFIG_DEBUG_INFO_BTF_MODULES is disabled,
btf-modules evaluates to kernel/bpf/btf_vmlinux.ko. Since btf-modules is
non-empty, the $(and $(btf-modules),$(KBUILD_BUILTIN),$(objtree)/vmlinux)
expression will evaluate to $(objtree)/vmlinux for the generic %.ko target.
Does this inject vmlinux as a prerequisite for every module in the tree (not
just btf_vmlinux.ko), triggering broad unnecessary relinks of all kernel
modules whenever a built-in file is modified during incremental builds?
> + +$(call if_changed,ld_ko_o)
> + +$(if $(and $(filter $@,$(btf-modules)),$(newer-prereqs)),$(call cmd,btf_ko))
> +$(call cmd,check_tracepoint)
[ ... ]
> diff --git a/scripts/gen-btf.sh b/scripts/gen-btf.sh
> index 8ca96eb10a69e..7fa3189a3ded8 100755
> --- a/scripts/gen-btf.sh
> +++ b/scripts/gen-btf.sh
[ ... ]
> @@ -133,6 +190,34 @@ if [ -n "${BTF_BASE}" ]; then
> BTFGEN_MODE="module"
> fi
>
> +if [ -n "${PLACEHOLDER}" ]; then
> + btf_data=${ELF_FILE}.btf.o
> + echo "" | ${CC} ${CLANG_FLAGS} ${KBUILD_CPPFLAGS} ${KBUILD_CFLAGS} -fno-lto -c -x c -o ${btf_data} -
> + head -c 36 /dev/zero > ${ELF_FILE}.BTF.meta
[Severity: Low]
Is it safe to use the non-POSIX -c flag for head here?
The -c option is a GNU/Busybox extension and is not defined in the
POSIX.1-2017 standard. On strict environments where head only accepts
the -n flag, will this cause the kernel build to fail?
> + ${OBJCOPY} --add-section .BTF.meta=${ELF_FILE}.BTF.meta \
> + --set-section-flags .BTF.meta=alloc,readonly ${btf_data}
> + ${OBJCOPY} --only-section=.BTF.meta --strip-all ${btf_data}
> + exit 0
> +fi
> +
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260923053948.30617-1-wanjay@amazon.com?part=6
next prev parent reply other threads:[~2026-09-23 5:59 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-23 5:39 [PATCH bpf-next 0/6] bpf: make the vmlinux BTF an on-demand loadable module (CONFIG_DEBUG_INFO_BTF=m) to save ~5.4 MB memory Jay Wang
2026-09-23 5:39 ` [PATCH bpf-next 1/6] bpf: pass the vmlinux BTF to btf_parse_module() and let it adopt the data Jay Wang
2026-09-23 5:39 ` [PATCH bpf-next 2/6] bpf: split the kfunc, dtor kfunc and struct_ops registration bodies Jay Wang
2026-09-23 6:16 ` bot+bpf-ci
2026-09-25 23:02 ` Jay Wang
2026-09-23 5:39 ` [PATCH bpf-next 3/6] bpf: fetch the vmlinux BTF where kernel types enter a program Jay Wang
2026-09-23 6:04 ` sashiko-bot
2026-09-25 23:02 ` Jay Wang
2026-09-23 6:28 ` bot+bpf-ci
2026-09-24 11:26 ` Jiri Olsa
2026-09-25 23:02 ` Jay Wang
2026-09-25 23:02 ` Jay Wang
2026-09-23 5:39 ` [PATCH bpf-next 4/6] bpf: take the vmlinux BTF from the btf_vmlinux module Jay Wang
2026-09-23 5:39 ` [PATCH bpf-next 5/6] bpf: defer registrations until the vmlinux BTF is available Jay Wang
2026-09-23 5:56 ` sashiko-bot
2026-09-25 23:02 ` Jay Wang
2026-09-23 6:41 ` bot+bpf-ci
2026-09-25 23:02 ` Jay Wang
2026-09-23 5:39 ` [PATCH bpf-next 6/6] kbuild, bpf: allow building the vmlinux BTF as a module Jay Wang
2026-09-23 5:59 ` sashiko-bot [this message]
2026-09-25 23:02 ` Jay Wang
2026-09-23 8:27 ` [PATCH bpf-next 0/6] bpf: make the vmlinux BTF an on-demand loadable module (CONFIG_DEBUG_INFO_BTF=m) to save ~5.4 MB memory Alan Maguire
2026-09-25 21:23 ` Jay Wang
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=20260923055905.ACA941F000FF@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=linux-modules@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=wanjay@amazon.com \
/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