summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2009-07-03 13:29:27 (GMT)
committerEmil Medve <Emilian.Medve@Freescale.com>2013-04-30 08:16:58 (GMT)
commit57b5c8653c9cbda2445b5c361fe04536d8ed5627 (patch)
tree3d9e24b14015b402bf0da5c573750f38276846b9
parent7cf0a06821afabc15dc5050d48a2174bb5dd50f4 (diff)
downloadlinux-fsl-qoriq-57b5c8653c9cbda2445b5c361fe04536d8ed5627.tar.xz
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 <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r--arch/x86/kernel/apic/io_apic.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index b739d39..aaa6399 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2428,7 +2428,8 @@ static bool io_apic_level_ack_pending(struct irq_cfg *cfg)
static inline bool ioapic_irqd_mask(struct irq_data *data, struct irq_cfg *cfg)
{
/* 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))) {
mask_ioapic(cfg);
return true;
}