diff options
Diffstat (limited to 'kernel/softirq.c')
| -rw-r--r-- | kernel/softirq.c | 12 | 
1 files changed, 9 insertions, 3 deletions
| diff --git a/kernel/softirq.c b/kernel/softirq.c index 267f7b763ebb..79ee8f1fc0e7 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -296,10 +296,16 @@ void irq_enter(void)  	rcu_irq_enter();  	if (idle_cpu(cpu) && !in_interrupt()) { -		__irq_enter(); +		/* +		 * Prevent raise_softirq from needlessly waking up ksoftirqd +		 * here, as softirq will be serviced on return from interrupt. +		 */ +		local_bh_disable();  		tick_check_idle(cpu); -	} else -		__irq_enter(); +		_local_bh_enable(); +	} + +	__irq_enter();  }  #ifdef __ARCH_IRQ_EXIT_IRQS_DISABLED | 
