Merge branch 'linus' into x86/apic
[safe/jmp/linux-2.6] / arch / x86 / kernel / apic / io_apic.c
index 7c9d045..8499000 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.