Skip to content

Commit

Permalink
tracing: Drop the tr check from the graph tracing path
Browse files Browse the repository at this point in the history
Each time we save a function entry from the function graph
tracer, we check if the trace array is set, which is wasteful
because it is set anyway before we start the tracer. All we need
is to ensure we have good read and write orderings. When we set
the trace array, we just need to guarantee it to be visible
before starting tracing.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
LKML-Reference: <1263453795-7496-1-git-send-regression-fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Frederic Weisbecker authored and Ingo Molnar committed Jan 17, 2010
1 parent d931369 commit 24a5365
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions kernel/trace/trace_functions_graph.c
Original file line number Diff line number Diff line change
Expand Up @@ -212,9 +212,6 @@ int trace_graph_entry(struct ftrace_graph_ent *trace)
int cpu;
int pc;

if (unlikely(!tr))
return 0;

if (!ftrace_trace_task(current))
return 0;

Expand Down Expand Up @@ -287,11 +284,20 @@ void trace_graph_return(struct ftrace_graph_ret *trace)
local_irq_restore(flags);
}

void set_graph_array(struct trace_array *tr)
{
graph_array = tr;

/* Make graph_array visible before we start tracing */

smp_mb();
}

static int graph_trace_init(struct trace_array *tr)
{
int ret;

graph_array = tr;
set_graph_array(tr);
ret = register_ftrace_graph(&trace_graph_return,
&trace_graph_entry);
if (ret)
Expand All @@ -301,11 +307,6 @@ static int graph_trace_init(struct trace_array *tr)
return 0;
}

void set_graph_array(struct trace_array *tr)
{
graph_array = tr;
}

static void graph_trace_reset(struct trace_array *tr)
{
tracing_stop_cmdline_record();
Expand Down

0 comments on commit 24a5365

Please sign in to comment.