2022-09-06 15:05:05

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH 5.15 101/107] kbuild: Unify options for BTF generation for vmlinux and modules

From: Jiri Olsa <[email protected]>

commit e27f05147bff21408c1b8410ad8e90cd286e7952 upstream.

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 <[email protected]>
Signed-off-by: Andrii Nakryiko <[email protected]>
Acked-by: Andrii Nakryiko <[email protected]>
Link: https://lore.kernel.org/bpf/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
Makefile | 3 +++
scripts/Makefile.modfinal | 2 +-
scripts/link-vmlinux.sh | 11 +----------
scripts/pahole-flags.sh | 20 ++++++++++++++++++++
4 files changed, 25 insertions(+), 11 deletions(-)
create mode 100755 scripts/pahole-flags.sh

--- a/Makefile
+++ b/Makefile
@@ -480,6 +480,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 :=
@@ -534,6 +536,7 @@ export KBUILD_CFLAGS CFLAGS_KERNEL CFLAG
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

--- a/scripts/Makefile.modfinal
+++ b/scripts/Makefile.modfinal
@@ -40,7 +40,7 @@ quiet_cmd_ld_ko_o = LD [M] $@
quiet_cmd_btf_ko = BTF [M] $@
cmd_btf_ko = \
if [ -f vmlinux ]; then \
- LLVM_OBJCOPY="$(OBJCOPY)" $(PAHOLE) -J --btf_base vmlinux $@; \
+ LLVM_OBJCOPY="$(OBJCOPY)" $(PAHOLE) -J $(PAHOLE_FLAGS) --btf_base vmlinux $@; \
else \
printf "Skipping BTF generation for %s due to unavailability of vmlinux\n" $@ 1>&2; \
fi;
--- a/scripts/link-vmlinux.sh
+++ b/scripts/link-vmlinux.sh
@@ -211,7 +211,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"
@@ -226,16 +225,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
- if [ "${pahole_ver}" -ge "121" ]; then
- extra_paholeopt="${extra_paholeopt} --btf_gen_floats"
- 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
--- /dev/null
+++ b/scripts/pahole-flags.sh
@@ -0,0 +1,20 @@
+#!/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
+if [ "${pahole_ver}" -ge "121" ]; then
+ extra_paholeopt="${extra_paholeopt} --btf_gen_floats"
+fi
+
+echo ${extra_paholeopt}



2022-09-06 19:18:36

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH 5.15 101/107] kbuild: Unify options for BTF generation for vmlinux and modules



On 9/6/2022 6:31 AM, Greg Kroah-Hartman wrote:
> From: Jiri Olsa <[email protected]>
>
> commit e27f05147bff21408c1b8410ad8e90cd286e7952 upstream.
>
> 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 <[email protected]>
> Signed-off-by: Andrii Nakryiko <[email protected]>
> Acked-by: Andrii Nakryiko <[email protected]>
> Link: https://lore.kernel.org/bpf/[email protected]
> Signed-off-by: Greg Kroah-Hartman <[email protected]>
> ---
> Makefile | 3 +++
> scripts/Makefile.modfinal | 2 +-
> scripts/link-vmlinux.sh | 11 +----------
> scripts/pahole-flags.sh | 20 ++++++++++++++++++++
> 4 files changed, 25 insertions(+), 11 deletions(-)
> create mode 100755 scripts/pahole-flags.sh

My linux-stable-rc/linux-5.15.y checkout shows that
scripts/pahole-flags.sh does not have an executable permission and
commit 128e3cc0beffc92154d9af6bd8c107f46e830000 ("kbuild: Unify options
for BTF generation for vmlinux and modules") does have:

diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh
new file mode 100644
index 000000000000..e6093adf4c06

whereas your email does have the proper 100755 permission set on the
file, any idea what happened here?
--
Florian

2022-09-07 06:27:21

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 5.15 101/107] kbuild: Unify options for BTF generation for vmlinux and modules

On Tue, Sep 06, 2022 at 11:45:00AM -0700, Florian Fainelli wrote:
>
>
> On 9/6/2022 6:31 AM, Greg Kroah-Hartman wrote:
> > From: Jiri Olsa <[email protected]>
> >
> > commit e27f05147bff21408c1b8410ad8e90cd286e7952 upstream.
> >
> > 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 <[email protected]>
> > Signed-off-by: Andrii Nakryiko <[email protected]>
> > Acked-by: Andrii Nakryiko <[email protected]>
> > Link: https://lore.kernel.org/bpf/[email protected]
> > Signed-off-by: Greg Kroah-Hartman <[email protected]>
> > ---
> > Makefile | 3 +++
> > scripts/Makefile.modfinal | 2 +-
> > scripts/link-vmlinux.sh | 11 +----------
> > scripts/pahole-flags.sh | 20 ++++++++++++++++++++
> > 4 files changed, 25 insertions(+), 11 deletions(-)
> > create mode 100755 scripts/pahole-flags.sh
>
> My linux-stable-rc/linux-5.15.y checkout shows that scripts/pahole-flags.sh
> does not have an executable permission and commit
> 128e3cc0beffc92154d9af6bd8c107f46e830000 ("kbuild: Unify options for BTF
> generation for vmlinux and modules") does have:
>
> diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh
> new file mode 100644
> index 000000000000..e6093adf4c06
>
> whereas your email does have the proper 100755 permission set on the file,
> any idea what happened here?

Yeah, quilt does not like dealing with file permissions at all :(

We have over time, not required executable permissions on kernel files
because of this issue. Is it required here? If so, I'll try to
remember to fix it up "by hand".

thanks,

greg k-h

2022-09-07 07:11:48

by Jiri Olsa

[permalink] [raw]
Subject: Re: [PATCH 5.15 101/107] kbuild: Unify options for BTF generation for vmlinux and modules

On Wed, Sep 07, 2022 at 07:40:16AM +0200, Greg Kroah-Hartman wrote:
> On Tue, Sep 06, 2022 at 11:45:00AM -0700, Florian Fainelli wrote:
> >
> >
> > On 9/6/2022 6:31 AM, Greg Kroah-Hartman wrote:
> > > From: Jiri Olsa <[email protected]>
> > >
> > > commit e27f05147bff21408c1b8410ad8e90cd286e7952 upstream.
> > >
> > > 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 <[email protected]>
> > > Signed-off-by: Andrii Nakryiko <[email protected]>
> > > Acked-by: Andrii Nakryiko <[email protected]>
> > > Link: https://lore.kernel.org/bpf/[email protected]
> > > Signed-off-by: Greg Kroah-Hartman <[email protected]>
> > > ---
> > > Makefile | 3 +++
> > > scripts/Makefile.modfinal | 2 +-
> > > scripts/link-vmlinux.sh | 11 +----------
> > > scripts/pahole-flags.sh | 20 ++++++++++++++++++++
> > > 4 files changed, 25 insertions(+), 11 deletions(-)
> > > create mode 100755 scripts/pahole-flags.sh
> >
> > My linux-stable-rc/linux-5.15.y checkout shows that scripts/pahole-flags.sh
> > does not have an executable permission and commit
> > 128e3cc0beffc92154d9af6bd8c107f46e830000 ("kbuild: Unify options for BTF
> > generation for vmlinux and modules") does have:
> >
> > diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh
> > new file mode 100644
> > index 000000000000..e6093adf4c06
> >
> > whereas your email does have the proper 100755 permission set on the file,
> > any idea what happened here?
>
> Yeah, quilt does not like dealing with file permissions at all :(
>
> We have over time, not required executable permissions on kernel files
> because of this issue. Is it required here? If so, I'll try to
> remember to fix it up "by hand".

yes, pahole-flags.sh needs to have +x

thanks,
jirka

>
> thanks,
>
> greg k-h

2022-09-07 09:13:07

by Ron Economos

[permalink] [raw]
Subject: Re: [PATCH 5.15 101/107] kbuild: Unify options for BTF generation for vmlinux and modules

On 9/6/22 10:40 PM, Greg Kroah-Hartman wrote:
> On Tue, Sep 06, 2022 at 11:45:00AM -0700, Florian Fainelli wrote:
>>
>> On 9/6/2022 6:31 AM, Greg Kroah-Hartman wrote:
>>> From: Jiri Olsa <[email protected]>
>>>
>>> commit e27f05147bff21408c1b8410ad8e90cd286e7952 upstream.
>>>
>>> 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 <[email protected]>
>>> Signed-off-by: Andrii Nakryiko <[email protected]>
>>> Acked-by: Andrii Nakryiko <[email protected]>
>>> Link: https://lore.kernel.org/bpf/[email protected]
>>> Signed-off-by: Greg Kroah-Hartman <[email protected]>
>>> ---
>>> Makefile | 3 +++
>>> scripts/Makefile.modfinal | 2 +-
>>> scripts/link-vmlinux.sh | 11 +----------
>>> scripts/pahole-flags.sh | 20 ++++++++++++++++++++
>>> 4 files changed, 25 insertions(+), 11 deletions(-)
>>> create mode 100755 scripts/pahole-flags.sh
>> My linux-stable-rc/linux-5.15.y checkout shows that scripts/pahole-flags.sh
>> does not have an executable permission and commit
>> 128e3cc0beffc92154d9af6bd8c107f46e830000 ("kbuild: Unify options for BTF
>> generation for vmlinux and modules") does have:
>>
>> diff --git a/scripts/pahole-flags.sh b/scripts/pahole-flags.sh
>> new file mode 100644
>> index 000000000000..e6093adf4c06
>>
>> whereas your email does have the proper 100755 permission set on the file,
>> any idea what happened here?
> Yeah, quilt does not like dealing with file permissions at all :(
>
> We have over time, not required executable permissions on kernel files
> because of this issue. Is it required here? If so, I'll try to
> remember to fix it up "by hand".
>
> thanks,
>
> greg k-h

I'm seeing this on my RISC-V build also. The error message (repeated
many times) is:

/bin/sh: 1: ./scripts/pahole-flags.sh: Permission denied

So the script isn't running.