hi, new version of pahole (1.24) is causing compilation fail for 5.10 stable kernel, discussed in here [1][2]. Sending fix for that plus dependency patches.
thanks, jirka
[1] https://lore.kernel.org/bpf/20220825163538.vajnsv3xcpbhl47v@altlinux.org/ [2] https://lore.kernel.org/bpf/YwQRKkmWqsf%2FDu6A@kernel.org/ --- Andrii Nakryiko (1): kbuild: skip per-CPU BTF generation for pahole v1.18-v1.21
Ilya Leoshkevich (1): bpf: Generate BTF_KIND_FLOAT when linking vmlinux
Javier Martinez Canillas (1): kbuild: Quote OBJCOPY var to avoid a pahole call break the build
Jiri Olsa (1): kbuild: Unify options for BTF generation for vmlinux and modules
Martin Rodriguez Reboredo (1): kbuild: Add skip_encoding_btf_enum64 option to pahole
Makefile | 3 +++ scripts/link-vmlinux.sh | 2 +- scripts/pahole-flags.sh | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100755 scripts/pahole-flags.sh
From: Ilya Leoshkevich iii@linux.ibm.com
commit db16c1fe92d7ba7d39061faef897842baee2c887 upstream.
[backported for dependency only extra_paholeopt variable setup and usage, we don't want floats generated in 5.10]
pahole v1.21 supports the --btf_gen_floats flag, which makes it generate the information about the floating-point types [1].
Adjust link-vmlinux.sh to pass this flag to pahole in case it's supported, which is determined using a simple version check.
[1] https://lore.kernel.org/dwarves/YHRiXNX1JUF2Az0A@kernel.org/
Signed-off-by: Ilya Leoshkevich iii@linux.ibm.com Signed-off-by: Andrii Nakryiko andrii@kernel.org Acked-by: Andrii Nakryiko andrii@kernel.org Link: https://lore.kernel.org/bpf/20210413190043.21918-1-iii@linux.ibm.com Signed-off-by: Jiri Olsa jolsa@kernel.org --- scripts/link-vmlinux.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh index d0b44bee9286..cdfccbfed452 100755 --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh @@ -146,6 +146,7 @@ vmlinux_link() gen_btf() { local pahole_ver + local extra_paholeopt=
if ! [ -x "$(command -v ${PAHOLE})" ]; then echo >&2 "BTF: ${1}: pahole (${PAHOLE}) is not available" @@ -161,7 +162,7 @@ gen_btf() vmlinux_link ${1}
info "BTF" ${2} - LLVM_OBJCOPY=${OBJCOPY} ${PAHOLE} -J ${1} + LLVM_OBJCOPY=${OBJCOPY} ${PAHOLE} -J ${extra_paholeopt} ${1}
# Create ${2} which contains just .BTF section but no symbols. Add # SHF_ALLOC because .BTF will be part of the vmlinux image. --strip-all
From: Javier Martinez Canillas javierm@redhat.com
commit ff2e6efda0d5c51b33e2bcc0b0b981ac0a0ef214 upstream.
[backported for dependency, skipped Makefile.modfinal change, because module BTF is not supported in 5.10]
The ccache tool can be used to speed up cross-compilation, by calling the compiler and binutils through ccache. For example, following should work:
$ export ARCH=arm64 CROSS_COMPILE="ccache aarch64-linux-gnu-"
$ make M=drivers/gpu/drm/rockchip/
but pahole fails to extract the BTF info from DWARF, breaking the build:
CC [M] drivers/gpu/drm/rockchip//rockchipdrm.mod.o LD [M] drivers/gpu/drm/rockchip//rockchipdrm.ko BTF [M] drivers/gpu/drm/rockchip//rockchipdrm.ko aarch64-linux-gnu-objcopy: invalid option -- 'J' Usage: aarch64-linux-gnu-objcopy [option(s)] in-file [out-file] Copies a binary file, possibly transforming it in the process ... make[1]: *** [scripts/Makefile.modpost:156: __modpost] Error 2 make: *** [Makefile:1866: modules] Error 2
this fails because OBJCOPY is set to "ccache aarch64-linux-gnu-copy" and later pahole is executed with the following command line:
LLVM_OBJCOPY=$(OBJCOPY) $(PAHOLE) -J --btf_base vmlinux $@
which gets expanded to:
LLVM_OBJCOPY=ccache aarch64-linux-gnu-objcopy pahole -J ...
instead of:
LLVM_OBJCOPY="ccache aarch64-linux-gnu-objcopy" pahole -J ...
Fixes: 5f9ae91f7c0d ("kbuild: Build kernel module BTFs if BTF is enabled and pahole supports it") Signed-off-by: Javier Martinez Canillas javierm@redhat.com Signed-off-by: Andrii Nakryiko andrii@kernel.org Acked-by: Andrii Nakryiko andrii@kernel.org Acked-by: Arnaldo Carvalho de Melo acme@redhat.com Link: https://lore.kernel.org/bpf/20210526215228.3729875-1-javierm@redhat.com --- scripts/link-vmlinux.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh index cdfccbfed452..72bf14df6903 100755 --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh @@ -162,7 +162,7 @@ gen_btf() vmlinux_link ${1}
info "BTF" ${2} - LLVM_OBJCOPY=${OBJCOPY} ${PAHOLE} -J ${extra_paholeopt} ${1} + LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J ${extra_paholeopt} ${1}
# Create ${2} which contains just .BTF section but no symbols. Add # SHF_ALLOC because .BTF will be part of the vmlinux image. --strip-all
On Wed, Oct 19, 2022 at 10:56:01AM +0200, Jiri Olsa wrote:
From: Javier Martinez Canillas javierm@redhat.com
commit ff2e6efda0d5c51b33e2bcc0b0b981ac0a0ef214 upstream.
I only see patches 2, 3, and 4 of this series, same with lore.kernel.org: https://lore.kernel.org/all/20221019085604.1017583-3-jolsa@kernel.org/
Are the remaining ones somewhere else?
thanks,
greg k-h
On Wed, Oct 19, 2022 at 12:28:46PM +0200, Greg KH wrote:
On Wed, Oct 19, 2022 at 10:56:01AM +0200, Jiri Olsa wrote:
From: Javier Martinez Canillas javierm@redhat.com
commit ff2e6efda0d5c51b33e2bcc0b0b981ac0a0ef214 upstream.
I only see patches 2, 3, and 4 of this series, same with lore.kernel.org: https://lore.kernel.org/all/20221019085604.1017583-3-jolsa@kernel.org/
Are the remaining ones somewhere else?
hum, the 'git send-email' log says it was sent to stable@vger.kernel.org (plus other emails) all with no problem.. maybe some mailing list hiccup? I'd give it some time
jirka
thanks,
greg k-h
From: Andrii Nakryiko andrii@kernel.org
commit a0b8200d06ad6450c179407baa5f0f52f8cfcc97 upstream.
[small context changes due to missing floats support in 5.10]
Commit "mm/page_alloc: convert per-cpu list protection to local_lock" will introduce a zero-sized per-CPU variable, which causes pahole to generate invalid BTF. Only pahole versions 1.18 through 1.21 are impacted, as before 1.18 pahole doesn't know anything about per-CPU variables, and 1.22 contains the proper fix for the issue.
Luckily, pahole 1.18 got --skip_encoding_btf_vars option disabling BTF generation for per-CPU variables in anticipation of some unanticipated problems. So use this escape hatch to disable per-CPU var BTF info on those problematic pahole versions. Users relying on availability of per-CPU var BTFs would need to upgrade to pahole 1.22+, but everyone won't notice any regressions.
Link: https://lkml.kernel.org/r/20210530002536.3193829-1-andrii@kernel.org Signed-off-by: Andrii Nakryiko andrii@kernel.org Acked-by: Mel Gorman mgorman@techsingularity.net Cc: Arnaldo Carvalho de Melo acme@redhat.com Cc: Hao Luo haoluo@google.com Cc: Michal Suchanek msuchanek@suse.de Cc: Jiri Olsa jolsa@kernel.org Signed-off-by: Andrew Morton akpm@linux-foundation.org Signed-off-by: Linus Torvalds torvalds@linux-foundation.org Signed-off-by: Jiri Olsa jolsa@kernel.org --- scripts/link-vmlinux.sh | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh index 72bf14df6903..bbb22be4c8f1 100755 --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh @@ -161,6 +161,11 @@ gen_btf()
vmlinux_link ${1}
+ if [ "${pahole_ver}" -ge "118" ] && [ "${pahole_ver}" -le "121" ]; then + # pahole 1.18 through 1.21 can't handle zero-sized per-CPU vars + extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_vars" + fi + info "BTF" ${2} LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J ${extra_paholeopt} ${1}
From: Jiri Olsa jolsa@redhat.com
commit 9741e07ece7c247dd65e1aa01e16b683f01c05a8 upstream.
[skipped --btf_gen_floats option in pahole-flags.sh, skipped Makefile.modfinal change, because there's no BTF kmod support, squashing in 'exit 0' change from merge commit fc02cb2b37fe]
Using new PAHOLE_FLAGS variable to pass extra arguments to pahole for both vmlinux and modules BTF data generation.
Adding new scripts/pahole-flags.sh script that detect and prints pahole options.
[ fixed issues found by kernel test robot ]
Signed-off-by: Jiri Olsa jolsa@kernel.org Signed-off-by: Andrii Nakryiko andrii@kernel.org Acked-by: Andrii Nakryiko andrii@kernel.org Link: https://lore.kernel.org/bpf/20211029125729.70002-1-jolsa@kernel.org --- Makefile | 3 +++ scripts/link-vmlinux.sh | 8 +------- scripts/pahole-flags.sh | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 7 deletions(-) create mode 100755 scripts/pahole-flags.sh
diff --git a/Makefile b/Makefile index b824bdb0457c..fc8f1a1c0d98 100644 --- a/Makefile +++ b/Makefile @@ -465,6 +465,8 @@ LZ4 = lz4c XZ = xz ZSTD = zstd
+PAHOLE_FLAGS = $(shell PAHOLE=$(PAHOLE) $(srctree)/scripts/pahole-flags.sh) + CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ -Wbitwise -Wno-return-void -Wno-unknown-attribute $(CF) NOSTDINC_FLAGS := @@ -518,6 +520,7 @@ export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL +export PAHOLE_FLAGS
# Files to ignore in find ... statements
diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh index bbb22be4c8f1..acd07a70a2f4 100755 --- a/scripts/link-vmlinux.sh +++ b/scripts/link-vmlinux.sh @@ -146,7 +146,6 @@ vmlinux_link() gen_btf() { local pahole_ver - local extra_paholeopt=
if ! [ -x "$(command -v ${PAHOLE})" ]; then echo >&2 "BTF: ${1}: pahole (${PAHOLE}) is not available" @@ -161,13 +160,8 @@ gen_btf()
vmlinux_link ${1}
- if [ "${pahole_ver}" -ge "118" ] && [ "${pahole_ver}" -le "121" ]; then - # pahole 1.18 through 1.21 can't handle zero-sized per-CPU vars - extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_vars" - fi - info "BTF" ${2} - LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J ${extra_paholeopt} ${1} + LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J ${PAHOLE_FLAGS} ${1}
# Create ${2} which contains just .BTF section but no symbols. Add # SHF_ALLOC because .BTF will be part of the vmlinux image. --strip-all diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh new file mode 100755 index 000000000000..27445cb72974 --- /dev/null +++ b/scripts/pahole-flags.sh @@ -0,0 +1,17 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +extra_paholeopt= + +if ! [ -x "$(command -v ${PAHOLE})" ]; then + exit 0 +fi + +pahole_ver=$(${PAHOLE} --version | sed -E 's/v([0-9]+).([0-9]+)/\1\2/') + +if [ "${pahole_ver}" -ge "118" ] && [ "${pahole_ver}" -le "121" ]; then + # pahole 1.18 through 1.21 can't handle zero-sized per-CPU vars + extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_vars" +fi + +echo ${extra_paholeopt}
From: Martin Rodriguez Reboredo yakoyoku@gmail.com
New pahole (version 1.24) generates by default new BTF_KIND_ENUM64 BTF tag, which is not supported by stable kernel.
As a result the kernel with CONFIG_DEBUG_INFO_BTF option will fail to compile with following error:
BTFIDS vmlinux FAILED: load BTF from vmlinux: Invalid argument
New pahole provides --skip_encoding_btf_enum64 option to skip BTF_KIND_ENUM64 generation and produce BTF supported by stable kernel.
Adding this option to scripts/pahole-flags.sh.
This change does not have equivalent commit in linus tree, because linus tree has support for BTF_KIND_ENUM64 tag, so it does not need to be disabled.
Signed-off-by: Martin Rodriguez Reboredo yakoyoku@gmail.com Signed-off-by: Jiri Olsa jolsa@kernel.org --- scripts/pahole-flags.sh | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh index 27445cb72974..8c82173e42e5 100755 --- a/scripts/pahole-flags.sh +++ b/scripts/pahole-flags.sh @@ -14,4 +14,8 @@ if [ "${pahole_ver}" -ge "118" ] && [ "${pahole_ver}" -le "121" ]; then extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_vars" fi
+if [ "${pahole_ver}" -ge "124" ]; then + extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_enum64" +fi + echo ${extra_paholeopt}
Hi,
Thanks for your patch.
FYI: kernel test robot notices the stable kernel rule is not satisfied.
Rule: 'Cc: stable@vger.kernel.org' or 'commit <sha1> upstream.' Subject: [PATCH stable 5.10 5/5] kbuild: Add skip_encoding_btf_enum64 option to pahole Link: https://lore.kernel.org/stable/20221019085604.1017583-6-jolsa%40kernel.org
The check is based on https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
On Wed, Oct 19, 2022 at 9:14 PM kernel test robot lkp@intel.com wrote:
Hi,
Thanks for your patch.
FYI: kernel test robot notices the stable kernel rule is not satisfied.
Rule: 'Cc: stable@vger.kernel.org' or 'commit <sha1> upstream.' Subject: [PATCH stable 5.10 5/5] kbuild: Add skip_encoding_btf_enum64 option to pahole Link: https://lore.kernel.org/stable/20221019085604.1017583-6-jolsa%40kernel.org
Uh, this should be fine though, right? The stable list was the primary recipient and all show up for me in my stable folder.
-srw
On Wed, Oct 19, 2022 at 09:35:23PM -0400, Slade Watkins wrote:
On Wed, Oct 19, 2022 at 9:14 PM kernel test robot lkp@intel.com wrote:
Hi,
Thanks for your patch.
FYI: kernel test robot notices the stable kernel rule is not satisfied.
Rule: 'Cc: stable@vger.kernel.org' or 'commit <sha1> upstream.' Subject: [PATCH stable 5.10 5/5] kbuild: Add skip_encoding_btf_enum64 option to pahole Link: https://lore.kernel.org/stable/20221019085604.1017583-6-jolsa%40kernel.org
Uh, this should be fine though, right? The stable list was the primary recipient and all show up for me in my stable folder.
Yes, this is fine, this bot is not that smart at times.
On Thu, Oct 20, 2022 at 07:10:21AM +0200, Greg KH wrote:
On Wed, Oct 19, 2022 at 09:35:23PM -0400, Slade Watkins wrote:
On Wed, Oct 19, 2022 at 9:14 PM kernel test robot lkp@intel.com wrote:
Hi,
Thanks for your patch.
FYI: kernel test robot notices the stable kernel rule is not satisfied.
the patch 5/5 does not have equivalent commit in linus tree, so I wonder the warning is because of that
jirka
Rule: 'Cc: stable@vger.kernel.org' or 'commit <sha1> upstream.' Subject: [PATCH stable 5.10 5/5] kbuild: Add skip_encoding_btf_enum64 option to pahole Link: https://lore.kernel.org/stable/20221019085604.1017583-6-jolsa%40kernel.org
Uh, this should be fine though, right? The stable list was the primary recipient and all show up for me in my stable folder.
Yes, this is fine, this bot is not that smart at times.
On Wed, Oct 19, 2022 at 10:55:59AM +0200, Jiri Olsa wrote:
hi, new version of pahole (1.24) is causing compilation fail for 5.10 stable kernel, discussed in here [1][2]. Sending fix for that plus dependency patches.
thanks, jirka
[1] https://lore.kernel.org/bpf/20220825163538.vajnsv3xcpbhl47v@altlinux.org/ [2] https://lore.kernel.org/bpf/YwQRKkmWqsf%2FDu6A@kernel.org/
Andrii Nakryiko (1): kbuild: skip per-CPU BTF generation for pahole v1.18-v1.21
Ilya Leoshkevich (1): bpf: Generate BTF_KIND_FLOAT when linking vmlinux
Javier Martinez Canillas (1): kbuild: Quote OBJCOPY var to avoid a pahole call break the build
Jiri Olsa (1): kbuild: Unify options for BTF generation for vmlinux and modules
Martin Rodriguez Reboredo (1): kbuild: Add skip_encoding_btf_enum64 option to pahole
Makefile | 3 +++ scripts/link-vmlinux.sh | 2 +- scripts/pahole-flags.sh | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100755 scripts/pahole-flags.sh
Ah, all showed up now. I'll look at these tomorrow, thanks!
greg k-h
On Wed, Oct 19, 2022 at 04:55:46PM +0200, Greg KH wrote:
On Wed, Oct 19, 2022 at 10:55:59AM +0200, Jiri Olsa wrote:
hi, new version of pahole (1.24) is causing compilation fail for 5.10 stable kernel, discussed in here [1][2]. Sending fix for that plus dependency patches.
thanks, jirka
[1] https://lore.kernel.org/bpf/20220825163538.vajnsv3xcpbhl47v@altlinux.org/ [2] https://lore.kernel.org/bpf/YwQRKkmWqsf%2FDu6A@kernel.org/
Andrii Nakryiko (1): kbuild: skip per-CPU BTF generation for pahole v1.18-v1.21
Ilya Leoshkevich (1): bpf: Generate BTF_KIND_FLOAT when linking vmlinux
Javier Martinez Canillas (1): kbuild: Quote OBJCOPY var to avoid a pahole call break the build
Jiri Olsa (1): kbuild: Unify options for BTF generation for vmlinux and modules
Martin Rodriguez Reboredo (1): kbuild: Add skip_encoding_btf_enum64 option to pahole
Makefile | 3 +++ scripts/link-vmlinux.sh | 2 +- scripts/pahole-flags.sh | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100755 scripts/pahole-flags.sh
Ah, all showed up now. I'll look at these tomorrow, thanks!
great, thanks
jirka
On Wed, Oct 19, 2022 at 10:55:59AM +0200, Jiri Olsa wrote:
hi, new version of pahole (1.24) is causing compilation fail for 5.10 stable kernel, discussed in here [1][2]. Sending fix for that plus dependency patches.
thanks, jirka
[1] https://lore.kernel.org/bpf/20220825163538.vajnsv3xcpbhl47v@altlinux.org/ [2] https://lore.kernel.org/bpf/YwQRKkmWqsf%2FDu6A@kernel.org/
Andrii Nakryiko (1): kbuild: skip per-CPU BTF generation for pahole v1.18-v1.21
Ilya Leoshkevich (1): bpf: Generate BTF_KIND_FLOAT when linking vmlinux
Javier Martinez Canillas (1): kbuild: Quote OBJCOPY var to avoid a pahole call break the build
Jiri Olsa (1): kbuild: Unify options for BTF generation for vmlinux and modules
Martin Rodriguez Reboredo (1): kbuild: Add skip_encoding_btf_enum64 option to pahole
Makefile | 3 +++ scripts/link-vmlinux.sh | 2 +- scripts/pahole-flags.sh | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100755 scripts/pahole-flags.sh
Now queued up, thanks.
greg k-h
linux-stable-mirror@lists.linaro.org