| From: Ingo Molnar <mingo@elte.hu> |
| Date: Fri, 3 Jul 2009 08:29:27 -0500 |
| Subject: x86/ioapic: 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> |
| |
| --- |
| xXx |
| arch/x86/kernel/apic/io_apic.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/arch/x86/kernel/apic/io_apic.c |
| +++ b/arch/x86/kernel/apic/io_apic.c |
| @@ -1711,7 +1711,8 @@ static bool io_apic_level_ack_pending(st |
| static inline bool ioapic_irqd_mask(struct irq_data *data) |
| { |
| /* 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_irq(data); |
| return true; |
| } |