From: Sasha Levin Date: Mon, 18 Feb 2019 02:07:05 +0000 (-0500) Subject: patches for 4.9 X-Git-Tag: v3.18.135~23 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2e1919ac27d513435481731289b5d19558f03516;p=thirdparty%2Fkernel%2Fstable-queue.git patches for 4.9 Signed-off-by: Sasha Levin --- diff --git a/queue-4.9/perf-report-include-partial-stacks-unwound-with-libd.patch b/queue-4.9/perf-report-include-partial-stacks-unwound-with-libd.patch new file mode 100644 index 00000000000..912fad4466b --- /dev/null +++ b/queue-4.9/perf-report-include-partial-stacks-unwound-with-libd.patch @@ -0,0 +1,98 @@ +From 1d238b35aefe9a979294c12d8fb9744cd06fff02 Mon Sep 17 00:00:00 2001 +From: Milian Wolff +Date: Fri, 15 Feb 2019 12:49:28 +0000 +Subject: perf report: Include partial stacks unwound with libdw + +commit 5ea0416f51cc93436bbe497c62ab49fd9cb245b6 upstream. + +So far the whole stack was thrown away when any error occurred before +the maximum stack depth was unwound. This is actually a very common +scenario though. The stacks that got unwound so far are still +interesting. This removes a large chunk of differences when comparing +perf script output for libunwind and libdw perf unwinding. + +E.g. with libunwind: + +~~~~~ +heaptrack_gui 2228 135073.388524: 479408 cycles: + ffffffff811749ed perf_iterate_ctx ([kernel.kallsyms]) + ffffffff81181662 perf_event_mmap ([kernel.kallsyms]) + ffffffff811cf5ed mmap_region ([kernel.kallsyms]) + ffffffff811cfe6b do_mmap ([kernel.kallsyms]) + ffffffff811b0dca vm_mmap_pgoff ([kernel.kallsyms]) + ffffffff811cdb0c sys_mmap_pgoff ([kernel.kallsyms]) + ffffffff81033acb sys_mmap ([kernel.kallsyms]) + ffffffff81631d37 entry_SYSCALL_64_fastpath ([kernel.kallsyms]) + 192ca mmap64 (/usr/lib/ld-2.25.so) + 59a9 _dl_map_object_from_fd (/usr/lib/ld-2.25.so) + 83d0 _dl_map_object (/usr/lib/ld-2.25.so) + cda1 openaux (/usr/lib/ld-2.25.so) + 1834f _dl_catch_error (/usr/lib/ld-2.25.so) + cfe2 _dl_map_object_deps (/usr/lib/ld-2.25.so) + 3481 dl_main (/usr/lib/ld-2.25.so) + 17387 _dl_sysdep_start (/usr/lib/ld-2.25.so) + 4d37 _dl_start (/usr/lib/ld-2.25.so) + d87 _start (/usr/lib/ld-2.25.so) + +heaptrack_gui 2228 135073.388677: 611329 cycles: + 1a3e0 strcmp (/usr/lib/ld-2.25.so) + 82b2 _dl_map_object (/usr/lib/ld-2.25.so) + cda1 openaux (/usr/lib/ld-2.25.so) + 1834f _dl_catch_error (/usr/lib/ld-2.25.so) + cfe2 _dl_map_object_deps (/usr/lib/ld-2.25.so) + 3481 dl_main (/usr/lib/ld-2.25.so) + 17387 _dl_sysdep_start (/usr/lib/ld-2.25.so) + 4d37 _dl_start (/usr/lib/ld-2.25.so) + d87 _start (/usr/lib/ld-2.25.so) +~~~~~ + +With libdw without this patch: + +~~~~~ +heaptrack_gui 2228 135073.388524: 479408 cycles: + ffffffff811749ed perf_iterate_ctx ([kernel.kallsyms]) + ffffffff81181662 perf_event_mmap ([kernel.kallsyms]) + ffffffff811cf5ed mmap_region ([kernel.kallsyms]) + ffffffff811cfe6b do_mmap ([kernel.kallsyms]) + ffffffff811b0dca vm_mmap_pgoff ([kernel.kallsyms]) + ffffffff811cdb0c sys_mmap_pgoff ([kernel.kallsyms]) + ffffffff81033acb sys_mmap ([kernel.kallsyms]) + ffffffff81631d37 entry_SYSCALL_64_fastpath ([kernel.kallsyms]) + +heaptrack_gui 2228 135073.388677: 611329 cycles: +~~~~~ + +With this patch applied, the libdw unwinder will produce the same +output as the libunwind unwinder. + +Signed-off-by: Nikson Kanti Paul +Signed-off-by: Milian Wolff +Cc: Jiri Olsa +Cc: Namhyung Kim +Link: http://lkml.kernel.org/r/20170601210021.20046-1-milian.wolff@kdab.com +Signed-off-by: Arnaldo Carvalho de Melo +Cc: Amit Shah +Cc: David Woodhouse +Cc: Greg Kroah-Hartman +Cc: # 4.9 +Signed-off-by: Sasha Levin +--- + tools/perf/util/unwind-libdw.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/perf/util/unwind-libdw.c b/tools/perf/util/unwind-libdw.c +index 046a4850e3df..ff32ca1d81ff 100644 +--- a/tools/perf/util/unwind-libdw.c ++++ b/tools/perf/util/unwind-libdw.c +@@ -231,7 +231,7 @@ int unwind__get_entries(unwind_entry_cb_t cb, void *arg, + + err = dwfl_getthread_frames(ui->dwfl, thread->tid, frame_callback, ui); + +- if (err && !ui->max_stack) ++ if (err && ui->max_stack != max_stack) + err = 0; + + /* +-- +2.19.1 + diff --git a/queue-4.9/series b/queue-4.9/series index 35293a88fb3..508cf3104d2 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -31,3 +31,4 @@ arm-dts-da850-lcdk-correct-the-sound-card-name.patch arm-dts-kirkwood-fix-polarity-of-gpio-fan-lines.patch gpio-pl061-handle-failed-allocations.patch cifs-limit-memory-used-by-lock-request-calls-to-a-pa.patch +perf-report-include-partial-stacks-unwound-with-libd.patch