aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/softirq.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/softirq.c')
-rw-r--r--kernel/softirq.c5
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}