Re: [PATCH v2] sched/tracing: Show stacktrace for wakeup tracers

From: Steven Rostedt
Date: Wed Jan 16 2019 - 16:05:11 EST


On Thu, 17 Jan 2019 00:02:49 +0800
Changbin Du <changbin.du@xxxxxxxxx> wrote:

> 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.
>
> Signed-off-by: Changbin Du <changbin.du@xxxxxxxxx>

I've applied your patch, but it may be a while before you see it in
linux-next. I'll be traveling for a bit and wont be able to do the full
tests which I do before pushing to my linux-next branch.

You may see them soon in my ftrace/core branch on kernel.org.

-- Steve

> ---
> kernel/trace/trace_sched_wakeup.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/kernel/trace/trace_sched_wakeup.c b/kernel/trace/trace_sched_wakeup.c
> index da5b6e012840..f4fe7d1781e9 100644
> --- a/kernel/trace/trace_sched_wakeup.c
> +++ b/kernel/trace/trace_sched_wakeup.c
> @@ -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