Re: [PATCH v10 06/14] unwind_user/deferred: Add deferred unwinding interface
From: Peter Zijlstra
Date: Wed Jun 18 2025 - 10:20:22 EST
On Tue, Jun 10, 2025 at 08:54:27PM -0400, Steven Rostedt wrote:
> From: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
>
> 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?