Re: [PATCH 4.19 000/264] 4.19.153-rc1 review

Salvatore Bonaccorso
2020-11-14T08:35:27Z

Hi Guenter,

On Sat, Oct 31, 2020 at 07:31:32AM -0700, Guenter Roeck wrote:
> On 10/31/20 2:45 AM, Salvatore Bonaccorso wrote:
> > Hi Greg,
> >
> > On Wed, Oct 28, 2020 at 12:56:19PM -0700, Guenter Roeck wrote:
> >> Retry.
> >>
> >> On Wed, Oct 28, 2020 at 10:10:35AM -0700, Guenter Roeck wrote:
> >>> On Tue, Oct 27, 2020 at 02:50:58PM +0100, Greg Kroah-Hartman wrote:
> >>>> This is the start of the stable review cycle for the 4.19.153 release.
> >>>> There are 264 patches in this series, all will be posted as a response
> >>>> to this one. If anyone has any issues with these being applied, please
> >>>> let me know.
> >>>>
> >>>> Responses should be made by Thu, 29 Oct 2020 13:53:47 +0000.
> >>>> Anything received after that time might be too late.
> >>>>
> >>>
> >>> Build results:
> >>> total: 155 pass: 152 fail: 3
> >>> Failed builds:
> >>> i386:tools/perf
> >>> powerpc:ppc6xx_defconfig
> >>> x86_64:tools/perf
> >>> Qemu test results:
> >>> total: 417 pass: 417 fail: 0
> >>>
> >>> perf failures are as usual. powerpc:
> >
> > Regarding the perf failures, do you plan to revert b801d568c7d8 ("perf
> > cs-etm: Move definition of 'traceid_list' global variable from header
> > file") included in 4.19.152 or is a bugfix underway?
> >
>
> The problem is:
>
> In file included from util/evlist.h:15:0,
> from util/evsel.c:30:
> util/evsel.c: In function ‘perf_evsel__exit’:
> util/util.h:25:28: error: passing argument 1 of ‘free’ discards ‘const’ qualifier from pointer target type
> /usr/include/stdlib.h:563:13: note: expected ‘void *’ but argument is of type ‘const char *’
> extern void free (void *__ptr) __THROW;
>
> This is seen with older versions of gcc (6.5.0 in my case). I have no idea why
> newer versions of gcc/glibc accept this (afaics free() still expects a char *,
> not a const char *). The underlying problem is that pmu_name should not be
> declared const char *, but char *, since it is allocated. The upstream version
> of perf no longer uses the same definition of zfree(). It was changed from
> #define zfree(ptr) ({ free(*ptr); *ptr = NULL; })
> to
> #define zfree(ptr) __zfree((void **)(ptr))
> which does the necessary typecast. The fix would be to either change the definition
> of zfree to add the typecast, or to change the definition of pmu_name to drop the const.
> Both would only apply to v4.19.y. I don't know if either would be acceptable.
>
> Either case, reverting b801d568c7d8 won't solve that problem.

Are we talking about the same problem though? With v4.19.157 and
building with "gcc (Debian 8.3.0-6) 8.3.0", with an unpatched source:

$ LC_ALL=C.UTF-8 ARCH=x86 make perf
mkdir -p .
make --no-print-directory -C perf O= subdir=
BUILD: Doing 'make -j2' parallel build
Warning: Kernel ABI header at 'tools/include/uapi/drm/i915_drm.h' differs from latest version at 'include/uapi/drm/i915_drm.h'
diff -u tools/include/uapi/drm/i915_drm.h include/uapi/drm/i915_drm.h
Warning: Kernel ABI header at 'tools/include/uapi/linux/kvm.h' differs from latest version at 'include/uapi/linux/kvm.h'
diff -u tools/include/uapi/linux/kvm.h include/uapi/linux/kvm.h
Warning: Kernel ABI header at 'tools/include/uapi/linux/perf_event.h' differs from latest version at 'include/uapi/linux/perf_event.h'
diff -u tools/include/uapi/linux/perf_event.h include/uapi/linux/perf_event.h
Warning: Kernel ABI header at 'tools/arch/x86/include/asm/cpufeatures.h' differs from latest version at 'arch/x86/include/asm/cpufeatures.h'
diff -u tools/arch/x86/include/asm/cpufeatures.h arch/x86/include/asm/cpufeatures.h
Warning: Kernel ABI header at 'tools/arch/x86/include/uapi/asm/kvm.h' differs from latest version at 'arch/x86/include/uapi/asm/kvm.h'
diff -u tools/arch/x86/include/uapi/asm/kvm.h arch/x86/include/uapi/asm/kvm.h
Warning: Kernel ABI header at 'tools/arch/x86/lib/memcpy_64.S' differs from latest version at 'arch/x86/lib/memcpy_64.S'
diff -u tools/arch/x86/lib/memcpy_64.S arch/x86/lib/memcpy_64.S
Warning: Kernel ABI header at 'tools/include/uapi/linux/mman.h' differs from latest version at 'include/uapi/linux/mman.h'
diff -u tools/include/uapi/linux/mman.h include/uapi/linux/mman.h

Auto-detecting system features:
... dwarf: [ on ]
... dwarf_getlocations: [ on ]
... glibc: [ on ]
... gtk2: [ OFF ]
... libaudit: [ on ]
... libbfd: [ OFF ]
... libelf: [ on ]
... libnuma: [ on ]
... numa_num_possible_cpus: [ on ]
... libperl: [ on ]
... libpython: [ on ]
... libslang: [ on ]
... libcrypto: [ on ]
... libunwind: [ on ]
... libdw-dwarf-unwind: [ on ]
... zlib: [ on ]
... lzma: [ on ]
... get_cpuid: [ on ]
... bpf: [ on ]

Makefile.config:456: No sys/sdt.h found, no SDT events are defined, please install systemtap-sdt-devel or systemtap-sdt-dev
Makefile.config:623: GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev
Makefile.config:682: No 'python-config' tool was found: disables Python support - please install python-devel/python-dev
Makefile.config:853: No alternatives command found, you need to set JDIR= to point to the root of your Java directory
Warning: Kernel ABI header at 'tools/include/uapi/linux/bpf.h' differs from latest version at 'include/uapi/linux/bpf.h'
CC util/cs-etm-decoder/cs-etm-decoder.o
CC util/intel-pt.o
util/cs-etm-decoder/cs-etm-decoder.c: In function 'cs_etm_decoder__buffer_packet':
util/cs-etm-decoder/cs-etm-decoder.c:287:24: error: 'traceid_list' undeclared (first use in this function); did you mean 'trace_event'?
inode = intlist__find(traceid_list, trace_chan_id);
^~~~~~~~~~~~
trace_event
util/cs-etm-decoder/cs-etm-decoder.c:287:24: note: each undeclared identifier is reported only once for each function it appears in
make[6]: *** [/build/linux-stable/tools/build/Makefile.build:97: util/cs-etm-decoder/cs-etm-decoder.o] Error 1
make[5]: *** [/build/linux-stable/tools/build/Makefile.build:139: cs-etm-decoder] Error 2
make[5]: *** Waiting for unfinished jobs....
make[4]: *** [/build/linux-stable/tools/build/Makefile.build:139: util] Error 2
make[3]: *** [Makefile.perf:633: libperf-in.o] Error 2
make[2]: *** [Makefile.perf:206: sub-make] Error 2
make[1]: *** [Makefile:70: all] Error 2
make: *** [Makefile:77: perf] Error 2

Reverting b801d568c7d8 would still fix the issue for me.

Regards,
Salvatore