blob: 1100100510a520cd4f0e6cdf94199fc90c4e484e [file] [log] [blame]
From 3f87904e73bfb67c331016bcb8846771cce43bfc Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 3 Jul 2009 08:29:27 -0500
Subject: [PATCH] x86: Do not unmask io_apic when interrupt is in progress
commit 3f87904e73bfb67c331016bcb8846771cce43bfc in tip.
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 <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 6ad845e..ce322b2 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2528,7 +2528,8 @@ static void ack_apic_level(unsigned int irq)
irq_complete_move(&desc);
#ifdef CONFIG_GENERIC_PENDING_IRQ
/* If we are moving the irq we need to mask it */
- if (unlikely(desc->status & IRQ_MOVE_PENDING)) {
+ if (unlikely(desc->status & IRQ_MOVE_PENDING) &&
+ !(desc->status & IRQ_INPROGRESS)) {
do_unmask_irq = 1;
mask_IO_APIC_irq_desc(desc);
}
--
1.7.1.1