blob: d64b75b7c5102a4f8dca9f182f7e2d2f166668e9 [file] [log] [blame]
From 141e2a07463caa77d10cd52b4b36e4ee77bf13a3 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 53243ca..678dc18 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2570,7 +2570,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