tracing: Show stacktrace for wakeup tracers
authorChangbin Du <changbin.du@gmail.com>
Wed, 16 Jan 2019 16:02:49 +0000 (00:02 +0800)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Wed, 6 Feb 2019 16:56:19 +0000 (11:56 -0500)
This align the behavior of wakeup tracers with irqsoff latency tracer
that we record stacktrace at the beginning and end of waking up. The
stacktrace shows us what is happening in the kernel.

Link: http://lkml.kernel.org/r/20190116160249.7554-1-changbin.du@gmail.com
Signed-off-by: Changbin Du <changbin.du@gmail.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
kernel/trace/trace_sched_wakeup.c

index da5b6e01284079437b66cf4645578d4532699758..f4fe7d1781e95211cc84295a096f3f26830a67e2 100644 (file)
@@ -475,6 +475,7 @@ probe_wakeup_sched_switch(void *ignore, bool preempt,
 
        __trace_function(wakeup_trace, CALLER_ADDR0, CALLER_ADDR1, flags, pc);
        tracing_sched_switch_trace(wakeup_trace, prev, next, flags, pc);
+       __trace_stack(wakeup_trace, flags, 0, pc);
 
        T0 = data->preempt_timestamp;
        T1 = ftrace_now(cpu);
@@ -586,6 +587,7 @@ probe_wakeup(void *ignore, struct task_struct *p)
        data = per_cpu_ptr(wakeup_trace->trace_buffer.data, wakeup_cpu);
        data->preempt_timestamp = ftrace_now(cpu);
        tracing_sched_wakeup_trace(wakeup_trace, p, current, flags, pc);
+       __trace_stack(wakeup_trace, flags, 0, pc);
 
        /*
         * We must be careful in using CALLER_ADDR2. But since wake_up