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 e7c69a720d69..80d323e6f61a 100644
--- a/kernel/softirq.c
+++ b/kernel/softirq.c
@@ -269,6 +269,7 @@ void irq_enter(void)
269{ 269{
270 int cpu = smp_processor_id(); 270 int cpu = smp_processor_id();
271 271
272 rcu_irq_enter();
272 if (idle_cpu(cpu) && !in_interrupt()) { 273 if (idle_cpu(cpu) && !in_interrupt()) {
273 __irq_enter(); 274 __irq_enter();
274 tick_check_idle(cpu); 275 tick_check_idle(cpu);
@@ -295,9 +296,9 @@ void irq_exit(void)
295 296
296#ifdef CONFIG_NO_HZ 297#ifdef CONFIG_NO_HZ
297 /* Make sure that timer wheel updates are propagated */ 298 /* Make sure that timer wheel updates are propagated */
298 if (!in_interrupt() && idle_cpu(smp_processor_id()) && !need_resched())
299 tick_nohz_stop_sched_tick(0);
300 rcu_irq_exit(); 299 rcu_irq_exit();
300 if (idle_cpu(smp_processor_id()) && !in_interrupt() && !need_resched())
301 tick_nohz_stop_sched_tick(0);
301#endif 302#endif
302 preempt_enable_no_resched(); 303 preempt_enable_no_resched();
303} 304}