------- Comment From tmri...@de.ibm.com 2019-07-05 07:48 EDT------- I have tried to last 2 days to find a patch series to apply the required patch which failed above.
The difference between upstream linux kernel 5.2.0rc7 and the ubuntu 18.04 kernel I downloaded from url = git://kernel.ubuntu.com/ubuntu/ubuntu-bionic branch master-next in regards to the function machine__create_kernel_maps() in file tools/perf/util/machine.c is very big. Command git log --oneline '-L: machine__create_kernel_maps:tools/perf/util/machine.c' identifies the difference of applied patches. The following patches are missing in ubuntu version: Commit-ID Description ed9adb2035b5 perf machine: Read also the end of the kernel 977c7a6d1e26 perf machine: Update kernel map address and re-order properly 1c5aae7710bb perf machine: Create maps for x86 PTI entry trampolines 3183f8ca304f perf symbols: Unify symbol maps ee05d21791db perf machine: Set main kernel end address properly 1fb87b8e9599 perf machine: Don't search for active kernel start in __machine__create_kernel_maps Already the first patch missing: Commit-ID Description 1fb87b8e9599 perf machine: Don't search for active kernel start in __machine__create_kernel_maps does not apply because in this patch a function named machine__set_kernel_mmap() is moved in file perf/tools/util/machine.c but this function is missing in the ubuntu 18.04 master-next tree. It turned out that this tree also misses patch: Commit-ID Description 05db6ff73d80 perf machine: Generalize machine__set_kernel_mmap() Having found the starting patch, I can applied the following patch sequence: root@s8360046:~/ubuntu-bionic# patch -p1 < ../patches/0001-perf-machine-Generalize- machine__set_kernel_mmap.patch patching file tools/perf/util/machine.c Hunk #1 succeeded at 1255 (offset -7 lines). Hunk #2 succeeded at 1370 (offset -5 lines). root@s8360046:~/ubuntu-bionic# patch -p1 < ../patches/0001-perf-machine-Don-t-search-for-active-kernel-start-in.patch patching file tools/perf/util/machine.c Hunk #1 succeeded at 849 (offset -7 lines). Hunk #2 succeeded at 861 (offset -7 lines). Hunk #3 succeeded at 1212 (offset -7 lines). Hunk #4 succeeded at 1254 (offset -7 lines). patching file tools/perf/util/machine.h Hunk #1 succeeded at 239 (offset 1 line). root@s8360046:~/ubuntu-bionic# patch -p1 < ../patches/0001-perf-machine-Set-main-kernel-end-address-properly.patch patching file tools/perf/util/machine.c Hunk #1 succeeded at 1020 (offset 1 line). Hunk #2 succeeded at 1227 (offset 1 line). Hunk #3 succeeded at 1254 (offset 1 line). root@s8360046:~/ubuntu-bionic# patch -p1 < ../patches/0001-perf-machine-Update-kernel-map-address-and-re-order-.patch patching file tools/perf/util/machine.c Hunk #1 succeeded at 1223 with fuzz 1 (offset -198 lines). Hunk #2 succeeded at 1269 with fuzz 1 (offset -198 lines). Hunk #3 succeeded at 1381 (offset -226 lines). root@s8360046:~/ubuntu-bionic# patch -p1 < ../patches/0001-perf-machine-Read-also-the-end-of-the-kernel.patch patching file tools/perf/util/machine.c Hunk #1 succeeded at 821 (offset -103 lines). Hunk #2 succeeded at 847 (offset -103 lines). Hunk #3 succeeded at 1248 (offset -199 lines). Hunk #4 FAILED at 1466. Hunk #5 FAILED at 1478. 2 out of 5 hunks FAILED -- saving rejects to file tools/perf/util/machine.c.rej root@s8360046:~/ubuntu-bionic# The last patch is the one we need and it fails. Refering to above patch list, I do not want to apply these two patches: Commit-ID Description 1c5aae7710bb perf machine: Create maps for x86 PTI entry trampolines 3183f8ca304f perf symbols: Unify symbol maps Both patches require tremendous change in the symbol table code of perf and introduce trampoline functionality to handle security fixes in the kernel for x86. If you want to apply these two patch, better upgrade the perf tool completely. Appling the last patch, the last 2 hunks fail because of missing context. The changes itself are trivial, but I can not do the changes as the code of the last patch is not from IBM. Here is the difference from the file tools/perf/util/machine.c.rej: -- tools/perf/util/machine.c +++ tools/perf/util/machine.c @@ -1466,9 +1472,9 @@ int machine__create_kernel_maps(struct machine *machine) "continuing anyway...\n", machine->pid); } - if (!machine__get_running_kernel_start(machine, &name, &addr)) { + if (!machine__get_running_kernel_start(machine, &name, &start, &end)) { if (name && - map__set_kallsyms_ref_reloc_sym(machine->vmlinux_map, name, addr)) { + map__set_kallsyms_ref_reloc_sym(machine->vmlinux_map, name, start)) { machine__destroy_kernel_maps(machine); ret = -1; goto out_put; @@ -1478,16 +1484,19 @@ int machine__create_kernel_maps(struct machine *machine) * we have a real start address now, so re-order the kmaps * assume it's the last in the kmaps */ - machine__update_kernel_mmap(machine, addr, ~0ULL); + machine__update_kernel_mmap(machine, start, end); } if (machine__create_extra_kernel_maps(machine, kernel)) pr_debug("Problems creating extra kernel maps, continuing anyway...\n"); - /* update end address of the kernel map using adjacent module address */ - map = map__next(machine__kernel_map(machine)); - if (map) - machine__set_kernel_mmap(machine, addr, map->start); + if (end == ~0ULL) { + /* update end address of the kernel map using adjacent module address */ + map = map__next(machine__kernel_map(machine)); + if (map) + machine__set_kernel_mmap(machine, start, map->start); + } + out_put: dso__put(kernel); return ret; Hope this helps. Sorry that I did not come to a better solution. The differences between both versions of perf is just too big. Ubuntu 18.04 is based on Linux 4.15 whereas the reqired patch was made for linux 5.2. I have not compiled the perf tool nor tested the result -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1828166 Title: perf top problem on z with Ubuntu 18.04 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-z-systems/+bug/1828166/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs