Re: [PATCH v10 06/14] unwind_user/deferred: Add deferred unwinding interface
From: Peter Zijlstra <peterz@infradead.org>
Date: 2025-06-18 14:20:09
Also in:
bpf, lkml
On Tue, Jun 10, 2025 at 08:54:27PM -0400, Steven Rostedt wrote:
From: Josh Poimboeuf <jpoimboe@kernel.org>
Add an interface for scheduling task work to unwind the user space stack
before returning to user space. This solves several problems for its
callers:
- Ensure the unwind happens in task context even if the caller may be
running in interrupt context.
- Avoid duplicate unwinds, whether called multiple times by the same
caller or by different callers.
- Take a timestamp when the first request comes in since the task
entered the kernel. This will be returned to the calling function
along with the stack trace when the task leaves the kernel. This
timestamp can be used to correlate kernel unwinds/traces with the user
unwind.
The timestamp is created to detect when the stacktrace is the same. It is
generated the first time a user space stacktrace is requested after the
task enters the kernel.
The timestamp is passed to the caller on request, and when the stacktrace is
generated upon returning to user space, it call the requester's callback
with the timestamp as well as the stacktrace.This whole story hinges on there being a high resolution time-stamp available... Good thing we killed x86 !TSC support when we did. You sure there's no other architectures you're interested in that lack a high res time source? What about two CPUs managing to request an unwind at exactly the same time?