cpuidle/tracing: Denote the tracepoints as being in rcu_idle_exit() section
authorSteven Rostedt <srostedt@redhat.com>
Tue, 7 Feb 2012 14:46:01 +0000 (09:46 -0500)
committerSteven Rostedt <rostedt@goodmis.org>
Mon, 13 Feb 2012 14:14:46 +0000 (09:14 -0500)
As the tracepoints in the cpuidle code are called when rcu_idle_exit() is in
effect, the _rcuidle() version must be used, otherwise the rcu_read_lock()s
that protect the tracepoint will not be honored.

Cc: Len Brown <len.brown@intel.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
drivers/cpuidle/cpuidle.c

index 59f4261..6588f43 100644 (file)
@@ -94,13 +94,13 @@ int cpuidle_idle_call(void)
 
        target_state = &drv->states[next_state];
 
-       trace_power_start(POWER_CSTATE, next_state, dev->cpu);
-       trace_cpu_idle(next_state, dev->cpu);
+       trace_power_start_rcuidle(POWER_CSTATE, next_state, dev->cpu);
+       trace_cpu_idle_rcuidle(next_state, dev->cpu);
 
        entered_state = target_state->enter(dev, drv, next_state);
 
-       trace_power_end(dev->cpu);
-       trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
+       trace_power_end_rcuidle(dev->cpu);
+       trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
 
        if (entered_state >= 0) {
                /* Update cpuidle counters */