diff options
Diffstat (limited to 'drivers/cpuidle')
-rw-r--r-- | drivers/cpuidle/cpuidle.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index 2e3148499368..5bed73329ef8 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c | |||
@@ -57,7 +57,11 @@ static void cpuidle_idle_call(void) | |||
57 | if (pm_idle_old) | 57 | if (pm_idle_old) |
58 | pm_idle_old(); | 58 | pm_idle_old(); |
59 | else | 59 | else |
60 | #if defined(CONFIG_ARCH_HAS_DEFAULT_IDLE) | ||
61 | default_idle(); | ||
62 | #else | ||
60 | local_irq_enable(); | 63 | local_irq_enable(); |
64 | #endif | ||
61 | return; | 65 | return; |
62 | } | 66 | } |
63 | 67 | ||
@@ -74,8 +78,11 @@ static void cpuidle_idle_call(void) | |||
74 | target_state = &dev->states[next_state]; | 78 | target_state = &dev->states[next_state]; |
75 | 79 | ||
76 | /* enter the state and update stats */ | 80 | /* enter the state and update stats */ |
77 | dev->last_residency = target_state->enter(dev, target_state); | ||
78 | dev->last_state = target_state; | 81 | dev->last_state = target_state; |
82 | dev->last_residency = target_state->enter(dev, target_state); | ||
83 | if (dev->last_state) | ||
84 | target_state = dev->last_state; | ||
85 | |||
79 | target_state->time += (unsigned long long)dev->last_residency; | 86 | target_state->time += (unsigned long long)dev->last_residency; |
80 | target_state->usage++; | 87 | target_state->usage++; |
81 | 88 | ||