On 07/02/2014 11:30 AM, Sandeep Tripathy wrote:
idle_exit event is the first event after a core exits idle state. So this should be traced before local irq is ebabled. Likewise idle_entry is the last event before a core enters idle state. This will ease visualising the cpu idle state from kernel traces.
Signed-off-by: Sandeep Tripathy sandeep.tripathy@linaro.org
Acked-by: Daniel Lezcano daniel.lezcano@linaro.org
drivers/cpuidle/cpuidle.c | 3 +++ kernel/sched/idle.c | 4 ---- 2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index 8236746..97680d0 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c @@ -99,12 +99,15 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv, ktime_t time_start, time_end; s64 diff;
trace_cpu_idle_rcuidle(index, dev->cpu); time_start = ktime_get();
entered_state = target_state->enter(dev, drv, index);
time_end = ktime_get();
trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
if (!cpuidle_state_is_coupled(dev, drv, entered_state)) local_irq_enable();
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index 8f4390a..07c446a 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -141,7 +141,6 @@ static int cpuidle_idle_call(void) &dev->cpu);
if (!ret) {
trace_cpu_idle_rcuidle(next_state, dev->cpu); /* * Enter the idle state previously
@@ -154,9 +153,6 @@ static int cpuidle_idle_call(void) entered_state = cpuidle_enter(drv, dev, next_state);
trace_cpu_idle_rcuidle(PWR_EVENT_EXIT,
dev->cpu);
if (broadcast) clockevents_notify( CLOCK_EVT_NOTIFY_BROADCAST_EXIT,