This is based on top of the deferred unwind core patch series: https://lore.kernel.org/linux-trace-kernel/20250611005421.144238328@xxxxxxxxxxx/ Which is based on top of v6.16-rc1. This series implements the perf interface to use deferred user space stack tracing. This version fixes a few issues from v9 and addresses the comments from v8 where as v9 was just a rebase. Changes since v9: https://lore.kernel.org/linux-trace-kernel/20250611013421.040264741@xxxxxxxxxxx/ - Remove CONFIG_HAVE_PERF_CALLCHAIN_DEFERRED as it is never used. - Fixed up the synchronization of rcuwait for cpu deferred events. - Added more comments to describe how the unwind deferred works. - Tagged the cpu_events with __rcu and added rcu annotation. Josh Poimboeuf (5): perf: Remove get_perf_callchain() init_nr argument perf: Have get_perf_callchain() return NULL if crosstask and user are set perf: Simplify get_perf_callchain() user logic perf: Skip user unwind if the task is a kernel thread perf: Support deferred user callchains Namhyung Kim (4): perf tools: Minimal CALLCHAIN_DEFERRED support perf record: Enable defer_callchain for user callchains perf script: Display PERF_RECORD_CALLCHAIN_DEFERRED perf tools: Merge deferred user callchains Steven Rostedt (2): perf: Use current->flags & PF_KTHREAD instead of current->mm == NULL perf: Support deferred user callchains for per CPU events ---- include/linux/perf_event.h | 14 +- include/uapi/linux/perf_event.h | 19 +- kernel/bpf/stackmap.c | 8 +- kernel/events/callchain.c | 49 ++-- kernel/events/core.c | 420 +++++++++++++++++++++++++++++- tools/include/uapi/linux/perf_event.h | 19 +- tools/lib/perf/include/perf/event.h | 7 + tools/perf/Documentation/perf-script.txt | 5 + tools/perf/builtin-script.c | 92 +++++++ tools/perf/util/callchain.c | 24 ++ tools/perf/util/callchain.h | 3 + tools/perf/util/event.c | 1 + tools/perf/util/evlist.c | 1 + tools/perf/util/evlist.h | 1 + tools/perf/util/evsel.c | 39 +++ tools/perf/util/evsel.h | 1 + tools/perf/util/machine.c | 1 + tools/perf/util/perf_event_attr_fprintf.c | 1 + tools/perf/util/sample.h | 3 +- tools/perf/util/session.c | 78 ++++++ tools/perf/util/tool.c | 2 + tools/perf/util/tool.h | 4 +- 22 files changed, 757 insertions(+), 35 deletions(-)