On Mon, Nov 16, 2020 at 11:55 AM Allan, Bruce W <[email protected]> wrote: > > > -----Original Message----- > > From: Song Liu <[email protected]> > > Sent: Tuesday, November 10, 2020 5:05 PM > > To: Andrii Nakryiko <[email protected]> > > Cc: bpf <[email protected]>; Networking <[email protected]>; > > Starovoitov, Alexei <[email protected]>; Daniel Borkmann <[email protected]>; > > Kernel Team <[email protected]>; open list <linux- > > [email protected]>; [email protected]; [email protected]; Arnaldo > > Carvalho de Melo <[email protected]>; Greg Kroah-Hartman > > <[email protected]>; Masahiro Yamada > > <[email protected]> > > Subject: Re: [PATCH v4 bpf-next 3/5] kbuild: build kernel module BTFs if > > BTF is > > enabled and pahole supports it > > > > > > > > > On Nov 9, 2020, at 5:19 PM, Andrii Nakryiko <[email protected]> wrote: > > > > [...] > > > > > SPLIT BTF > > > ========= > > > > > > $ for f in $(find . -name '*.ko'); do size -A -d $f | grep BTF | awk > > > '{print $2}'; > > done | awk '{ s += $1 } END { print s }' > > > 5194047 > > > > > > $ for f in $(find . -name '*.ko'); do printf "%s %d\n" $f $(size -A -d $f > > > | grep > > BTF | awk '{print $2}'); done | sort -nr -k2 | head -n10 > > > ./drivers/gpu/drm/i915/i915.ko 293206 > > > ./drivers/gpu/drm/radeon/radeon.ko 282103 > > > ./fs/xfs/xfs.ko 222150 > > > ./drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko 198503 > > > ./drivers/infiniband/hw/mlx5/mlx5_ib.ko 198356 > > > ./drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko 113444 > > > ./fs/cifs/cifs.ko 109379 > > > ./arch/x86/kvm/kvm.ko 100225 > > > ./drivers/gpu/drm/drm.ko 94827 > > > ./drivers/infiniband/core/ib_core.ko 91188 > > > > > > Cc: Masahiro Yamada <[email protected]> > > > Signed-off-by: Andrii Nakryiko <[email protected]> > > > > Acked-by: Song Liu <[email protected]> > > This change, commit 5f9ae91f7c0d ("kbuild: Build kernel module BTFs if BTF is > enabled and pahole > supports it") currently in net-next, linux-next, etc. breaks the use-case of > compiling only a specific > kernel module (both in-tree and out-of-tree, e.g. 'make > M=drivers/net/ethernet/intel/ice') after > first doing a 'make modules_prepare'. Previously, that use-case would result > in a warning noting > "Symbol info of vmlinux is missing. Unresolved symbol check will be entirely > skipped" but now it > errors out after noting "No rule to make target 'vmlinux', needed by > '<...>.ko'. Stop." > > Is that intentional?
I wasn't aware of such a use pattern, so definitely not intentional. But vmlinux is absolutely necessary to generate the module BTF. So I'm wondering what's the proper fix here? Leave it as is (that error message is actually surprisingly descriptive, btw)? Force vmlinux build? Or skip BTF generation for that module? > > Thanks, > Bruce.

