]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/cpuidle/cpuidle.c
regression: disable timer peek-ahead for 2.6.28
[linux-2.6-omap-h63xx.git] / drivers / cpuidle / cpuidle.c
index 2e3148499368b8b965e6845c7627caa6ce621be4..8504a210855710f897812ed6a265a960bc1baa5f 100644 (file)
@@ -57,16 +57,22 @@ static void cpuidle_idle_call(void)
                if (pm_idle_old)
                        pm_idle_old();
                else
+#if defined(CONFIG_ARCH_HAS_DEFAULT_IDLE)
+                       default_idle();
+#else
                        local_irq_enable();
+#endif
                return;
        }
 
+#if 0
+       /* shows regressions, re-enable for 2.6.29 */
        /*
         * run any timers that can be run now, at this point
         * before calculating the idle duration etc.
         */
        hrtimer_peek_ahead_timers();
-
+#endif
        /* ask the governor for the next state */
        next_state = cpuidle_curr_governor->select(dev);
        if (need_resched())
@@ -74,8 +80,11 @@ static void cpuidle_idle_call(void)
        target_state = &dev->states[next_state];
 
        /* enter the state and update stats */
-       dev->last_residency = target_state->enter(dev, target_state);
        dev->last_state = target_state;
+       dev->last_residency = target_state->enter(dev, target_state);
+       if (dev->last_state)
+               target_state = dev->last_state;
+
        target_state->time += (unsigned long long)dev->last_residency;
        target_state->usage++;