|
@@ -8,6 +8,7 @@
|
|
|
* This code is licenced under the GPL.
|
|
|
*/
|
|
|
|
|
|
+#include <linux/clockchips.h>
|
|
|
#include <linux/kernel.h>
|
|
|
#include <linux/mutex.h>
|
|
|
#include <linux/sched.h>
|
|
@@ -146,12 +147,20 @@ int cpuidle_idle_call(void)
|
|
|
|
|
|
trace_cpu_idle_rcuidle(next_state, dev->cpu);
|
|
|
|
|
|
+ if (drv->states[next_state].flags & CPUIDLE_FLAG_TIMER_STOP)
|
|
|
+ clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER,
|
|
|
+ &dev->cpu);
|
|
|
+
|
|
|
if (cpuidle_state_is_coupled(dev, drv, next_state))
|
|
|
entered_state = cpuidle_enter_state_coupled(dev, drv,
|
|
|
next_state);
|
|
|
else
|
|
|
entered_state = cpuidle_enter_state(dev, drv, next_state);
|
|
|
|
|
|
+ if (drv->states[next_state].flags & CPUIDLE_FLAG_TIMER_STOP)
|
|
|
+ clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT,
|
|
|
+ &dev->cpu);
|
|
|
+
|
|
|
trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
|
|
|
|
|
|
/* give the governor an opportunity to reflect on the outcome */
|