--- /dev/null
+From 1d238b35aefe9a979294c12d8fb9744cd06fff02 Mon Sep 17 00:00:00 2001
+From: Milian Wolff <milian.wolff@kdab.com>
+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 <nikson@amazon.com>
+Signed-off-by: Milian Wolff <milian.wolff@kdab.com>
+Cc: Jiri Olsa <jolsa@redhat.com>
+Cc: Namhyung Kim <namhyung@kernel.org>
+Link: http://lkml.kernel.org/r/20170601210021.20046-1-milian.wolff@kdab.com
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+Cc: Amit Shah <aams@amazon.de>
+Cc: David Woodhouse <dwmw@amazon.co.uk>
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: <stable@vger.kernel.org> # 4.9
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ 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
+