]> Pileus Git - ~andy/linux/blobdiff - arch/x86/kernel/apic/io_apic.c
Merge branch 'linus' into x86/apic
[~andy/linux] / arch / x86 / kernel / apic / io_apic.c
index 7c9d045ac83417b1c14be1316b3bb7a1eab0074f..84990002240745cf852b09a49ebd0202d09248cd 100644 (file)
@@ -2519,7 +2519,6 @@ static void irq_complete_move(struct irq_desc **descp)
 static inline void irq_complete_move(struct irq_desc **descp) {}
 #endif
 
-#ifdef CONFIG_X86_X2APIC
 static void __eoi_ioapic_irq(unsigned int irq, struct irq_cfg *cfg)
 {
        int apic, pin;
@@ -2553,6 +2552,7 @@ eoi_ioapic_irq(struct irq_desc *desc)
        spin_unlock_irqrestore(&ioapic_lock, flags);
 }
 
+#ifdef CONFIG_X86_X2APIC
 static void ack_x2apic_level(unsigned int irq)
 {
        struct irq_desc *desc = irq_to_desc(irq);
@@ -2629,6 +2629,9 @@ static void ack_apic_level(unsigned int irq)
         */
        ack_APIC_irq();
 
+       if (irq_remapped(irq))
+               eoi_ioapic_irq(desc);
+
        /* Now we can move and renable the irq */
        if (unlikely(do_unmask_irq)) {
                /* Only migrate the irq if the ack has been received.