From: Ingo Molnar Date: Fri, 3 Jul 2009 08:29:27 -0500 Subject: x86: Do not unmask io_apic when interrupt is in progress With threaded interrupts we might see an interrupt in progress on migration. Do not unmask it when this is the case. Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner --- arch/x86/kernel/apic/io_apic.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Index: linux-3.2/arch/x86/kernel/apic/io_apic.c =================================================================== --- linux-3.2.orig/arch/x86/kernel/apic/io_apic.c +++ linux-3.2/arch/x86/kernel/apic/io_apic.c @@ -2521,7 +2521,8 @@ static void ack_apic_level(struct irq_da irq_complete_move(cfg); #ifdef CONFIG_GENERIC_PENDING_IRQ /* If we are moving the irq we need to mask it */ - if (unlikely(irqd_is_setaffinity_pending(data))) { + if (unlikely(irqd_is_setaffinity_pending(data) && + !irqd_irq_inprogress(data))) { do_unmask_irq = 1; mask_ioapic(cfg); }