diff options
Diffstat (limited to 'kernel/trace/trace_irqsoff.c')
| -rw-r--r-- | kernel/trace/trace_irqsoff.c | 4 | 
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/trace/trace_irqsoff.c b/kernel/trace/trace_irqsoff.c index d06aab4dcbb8..6756379b661f 100644 --- a/kernel/trace/trace_irqsoff.c +++ b/kernel/trace/trace_irqsoff.c @@ -562,6 +562,8 @@ static int __irqsoff_tracer_init(struct trace_array *tr)  	/* non overwrite screws up the latency tracers */  	set_tracer_flag(tr, TRACE_ITER_OVERWRITE, 1);  	set_tracer_flag(tr, TRACE_ITER_LATENCY_FMT, 1); +	/* without pause, we will produce garbage if another latency occurs */ +	set_tracer_flag(tr, TRACE_ITER_PAUSE_ON_TRACE, 1);  	tr->max_latency = 0;  	irqsoff_trace = tr; @@ -583,11 +585,13 @@ static void __irqsoff_tracer_reset(struct trace_array *tr)  {  	int lat_flag = save_flags & TRACE_ITER_LATENCY_FMT;  	int overwrite_flag = save_flags & TRACE_ITER_OVERWRITE; +	int pause_flag = save_flags & TRACE_ITER_PAUSE_ON_TRACE;  	stop_irqsoff_tracer(tr, is_graph(tr));  	set_tracer_flag(tr, TRACE_ITER_LATENCY_FMT, lat_flag);  	set_tracer_flag(tr, TRACE_ITER_OVERWRITE, overwrite_flag); +	set_tracer_flag(tr, TRACE_ITER_PAUSE_ON_TRACE, pause_flag);  	ftrace_reset_array_ops(tr);  	irqsoff_busy = false;  | 
