30 lines
1.1 KiB
Diff
30 lines
1.1 KiB
Diff
From d403eeae9b01308ec5be39d10c63d2c1420f1335 Mon Sep 17 00:00:00 2001
|
|
From: Ingo Molnar <mingo@elte.hu>
|
|
Date: Fri, 3 Jul 2009 08:29:27 -0500
|
|
Subject: [PATCH 064/304] 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>
|
|
---
|
|
arch/x86/kernel/apic/io_apic.c | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
|
|
index 8980555..91527bc 100644
|
|
--- a/arch/x86/kernel/apic/io_apic.c
|
|
+++ b/arch/x86/kernel/apic/io_apic.c
|
|
@@ -2521,7 +2521,8 @@ static void ack_apic_level(struct irq_data *data)
|
|
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);
|
|
}
|