Commit 72b13819 authored by Segher Boessenkool's avatar Segher Boessenkool Committed by Paul Mackerras

[PATCH] powerpc: Fix some MPIC + HT APIC buglets

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: default avatarSegher Boessenkool <segher@kernel.crashing.org>
Acked-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 7c375b9a
...@@ -234,7 +234,7 @@ static void mpic_shutdown_ht_interrupt(struct mpic *mpic, unsigned int source, ...@@ -234,7 +234,7 @@ static void mpic_shutdown_ht_interrupt(struct mpic *mpic, unsigned int source,
spin_lock_irqsave(&mpic->fixup_lock, flags); spin_lock_irqsave(&mpic->fixup_lock, flags);
writeb(0x10 + 2 * fixup->index, fixup->base + 2); writeb(0x10 + 2 * fixup->index, fixup->base + 2);
tmp = readl(fixup->base + 4); tmp = readl(fixup->base + 4);
tmp &= ~1U; tmp |= 1;
writel(tmp, fixup->base + 4); writel(tmp, fixup->base + 4);
spin_unlock_irqrestore(&mpic->fixup_lock, flags); spin_unlock_irqrestore(&mpic->fixup_lock, flags);
} }
...@@ -446,14 +446,15 @@ static unsigned int mpic_startup_irq(unsigned int irq) ...@@ -446,14 +446,15 @@ static unsigned int mpic_startup_irq(unsigned int irq)
#ifdef CONFIG_MPIC_BROKEN_U3 #ifdef CONFIG_MPIC_BROKEN_U3
struct mpic *mpic = mpic_from_irq(irq); struct mpic *mpic = mpic_from_irq(irq);
unsigned int src = irq - mpic->irq_offset; 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)) if (mpic_is_ht_interrupt(mpic, src))
mpic_startup_ht_interrupt(mpic, src, irq_desc[irq].status); mpic_startup_ht_interrupt(mpic, src, irq_desc[irq].status);
#endif /* CONFIG_MPIC_BROKEN_U3 */ #endif /* CONFIG_MPIC_BROKEN_U3 */
mpic_enable_irq(irq);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment