diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/cpu/idle.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/kernel/cpu/idle.c b/kernel/cpu/idle.c index 277f494c2a9a..b7976a127178 100644 --- a/kernel/cpu/idle.c +++ b/kernel/cpu/idle.c | |||
@@ -3,6 +3,7 @@ | |||
3 | */ | 3 | */ |
4 | #include <linux/sched.h> | 4 | #include <linux/sched.h> |
5 | #include <linux/cpu.h> | 5 | #include <linux/cpu.h> |
6 | #include <linux/cpuidle.h> | ||
6 | #include <linux/tick.h> | 7 | #include <linux/tick.h> |
7 | #include <linux/mm.h> | 8 | #include <linux/mm.h> |
8 | #include <linux/stackprotector.h> | 9 | #include <linux/stackprotector.h> |
@@ -95,8 +96,10 @@ static void cpu_idle_loop(void) | |||
95 | if (!current_clr_polling_and_test()) { | 96 | if (!current_clr_polling_and_test()) { |
96 | stop_critical_timings(); | 97 | stop_critical_timings(); |
97 | rcu_idle_enter(); | 98 | rcu_idle_enter(); |
98 | arch_cpu_idle(); | 99 | if (cpuidle_idle_call()) |
99 | WARN_ON_ONCE(irqs_disabled()); | 100 | arch_cpu_idle(); |
101 | if (WARN_ON_ONCE(irqs_disabled())) | ||
102 | local_irq_enable(); | ||
100 | rcu_idle_exit(); | 103 | rcu_idle_exit(); |
101 | start_critical_timings(); | 104 | start_critical_timings(); |
102 | } else { | 105 | } else { |