diff options
Diffstat (limited to 'kernel/softirq.c')
-rw-r--r-- | kernel/softirq.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/softirq.c b/kernel/softirq.c index 8d9934b4162a..466e75ce271a 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
@@ -255,6 +255,7 @@ void irq_enter(void) | |||
255 | { | 255 | { |
256 | int cpu = smp_processor_id(); | 256 | int cpu = smp_processor_id(); |
257 | 257 | ||
258 | rcu_irq_enter(); | ||
258 | if (idle_cpu(cpu) && !in_interrupt()) { | 259 | if (idle_cpu(cpu) && !in_interrupt()) { |
259 | __irq_enter(); | 260 | __irq_enter(); |
260 | tick_check_idle(cpu); | 261 | tick_check_idle(cpu); |
@@ -281,9 +282,9 @@ void irq_exit(void) | |||
281 | 282 | ||
282 | #ifdef CONFIG_NO_HZ | 283 | #ifdef CONFIG_NO_HZ |
283 | /* Make sure that timer wheel updates are propagated */ | 284 | /* Make sure that timer wheel updates are propagated */ |
284 | if (!in_interrupt() && idle_cpu(smp_processor_id()) && !need_resched()) | ||
285 | tick_nohz_stop_sched_tick(0); | ||
286 | rcu_irq_exit(); | 285 | rcu_irq_exit(); |
286 | if (idle_cpu(smp_processor_id()) && !in_interrupt() && !need_resched()) | ||
287 | tick_nohz_stop_sched_tick(0); | ||
287 | #endif | 288 | #endif |
288 | preempt_enable_no_resched(); | 289 | preempt_enable_no_resched(); |
289 | } | 290 | } |