[PATCH] Fix some MPIC + HT APIC buglets

Segher Boessenkool segher at kernel.crashing.org
Fri Feb 17 21:25:42 EST 2006


Do disable, not enable, the HT APIC IRQ in the function that is 
supposed to.
Enable the MPIC IRQ before enabling the downstream APIC IRQ, avoids
potentially losing an interrupt.

Signed-off-by: Segher Boessenkool <segher at kernel.crashing.org>
---

Index: linux/arch/powerpc/sysdev/mpic.c
===================================================================
--- linux.orig/arch/powerpc/sysdev/mpic.c
+++ linux/arch/powerpc/sysdev/mpic.c
@@ -234,7 +234,7 @@
         spin_lock_irqsave(&mpic->fixup_lock, flags);
         writeb(0x10 + 2 * fixup->index, fixup->base + 2);
         tmp = readl(fixup->base + 4);
-       tmp &= ~1U;
+       tmp |= 1;
         writel(tmp, fixup->base + 4);
         spin_unlock_irqrestore(&mpic->fixup_lock, flags);
  }
@@ -446,14 +446,15 @@
  #ifdef CONFIG_MPIC_BROKEN_U3
         struct mpic *mpic = mpic_from_irq(irq);
         unsigned int src = irq - mpic->irq_offset;
+#endif /* CONFIG_MPIC_BROKEN_U3 */
+
+       mpic_enable_irq(irq);

+#ifdef CONFIG_MPIC_BROKEN_U3
         if (mpic_is_ht_interrupt(mpic, src))
                 mpic_startup_ht_interrupt(mpic, src, 
irq_desc[irq].status);
-
  #endif /* CONFIG_MPIC_BROKEN_U3 */

-       mpic_enable_irq(irq);
-
         return 0;
  }

-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch-mpic-fixes
Type: application/octet-stream
Size: 1116 bytes
Desc: not available
Url : http://ozlabs.org/pipermail/linuxppc64-dev/attachments/20060217/33614aca/attachment.obj 


More information about the Linuxppc64-dev mailing list