]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
tracing/osnoise: Dump stack on timerlat uret threshold event
authorCrystal Wood <crwood@redhat.com>
Mon, 11 May 2026 22:31:43 +0000 (17:31 -0500)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 20 May 2026 20:29:25 +0000 (16:29 -0400)
Dump the saved IRQ stack trace regardless of whether the event was
THREAD_CONTEXT or THREAD_URET.

In the uret case, the latency presumably had not yet crossed the
threshold at IRQ time (or else it would have dumped the stack at thread
wakeup time, unless we're racing with a change to the threshold), but it
may have at least contributed -- and this is possible with THREAD_CONTEXT
as well.

In any case, it helps with writing reliable rtla tests if we always get
a stack trace on a threshold event.

Cc: John Kacur <jkacur@redhat.com>
Cc: Tomas Glozar <tglozar@redhat.com>
Cc: Costa Shulyupin <costa.shul@redhat.com>
Cc: Wander Lairson Costa <wander@redhat.com>
Link: https://patch.msgid.link/20260511223143.1477332-1-crwood@redhat.com
Signed-off-by: Crystal Wood <crwood@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
kernel/trace/trace_osnoise.c

index 75678053b21c5794014958f6676827b340d6c964..62c2667d97fa96aab407ade900492f13e4db0635 100644 (file)
@@ -2544,9 +2544,12 @@ timerlat_fd_read(struct file *file, char __user *ubuf, size_t count,
                notify_new_max_latency(diff);
 
                tlat->tracing_thread = false;
-               if (osnoise_data.stop_tracing_total)
-                       if (time_to_us(diff) >= osnoise_data.stop_tracing_total)
+               if (osnoise_data.stop_tracing_total) {
+                       if (time_to_us(diff) >= osnoise_data.stop_tracing_total) {
+                               timerlat_dump_stack(time_to_us(diff));
                                osnoise_stop_tracing();
+                       }
+               }
        } else {
                tlat->tracing_thread = false;
                tlat->kthread = current;