mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	irq: call __irq_enter() before calling the tick_idle_check
Impact: avoid spurious ksoftirqd wakeups The tick idle check which is called from irq_enter() was run before the call to __irq_enter() which did not set the in_interrupt() bits in preempt_count. That way the raise of a softirq woke up softirqd for nothing as the softirq was handled on return from interrupt. Call __irq_enter() before calling into the tick idle check code. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
		
							parent
							
								
									5ceb1a0418
								
							
						
					
					
						commit
						ee5f80a993
					
				
					 1 changed files with 4 additions and 3 deletions
				
			
		|  | @ -269,10 +269,11 @@ void irq_enter(void) | |||
| { | ||||
| 	int cpu = smp_processor_id(); | ||||
| 
 | ||||
| 	if (idle_cpu(cpu) && !in_interrupt()) | ||||
| 	if (idle_cpu(cpu) && !in_interrupt()) { | ||||
| 		__irq_enter(); | ||||
| 		tick_check_idle(cpu); | ||||
| 
 | ||||
| 	__irq_enter(); | ||||
| 	} else | ||||
| 		__irq_enter(); | ||||
| } | ||||
| 
 | ||||
| #ifdef __ARCH_IRQ_EXIT_IRQS_DISABLED | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Thomas Gleixner
						Thomas Gleixner