powerpc/mpic: Create a revmap with enough entries for IPIs and timers
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Sun, 22 Jul 2012 16:45:43 +0000 (16:45 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 23 Jul 2012 04:20:42 +0000 (14:20 +1000)
The current mpic code creates a linear revmap just big enough for all
the sources, which happens to miss the IPIs and timers on some machines.

This will in turn break when the irqdomain code loses the fallback of
doing a linear search when the revmap fails (and really slows down IPIs
otherwise).

This happens for example on the U4 based Apple machines such as the
dual core PowerMac G5s.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/sysdev/mpic.c

index 906f29c05c546b0e1dd69856c0fb219041f5e2cd..bfc6211e5422ef17b6e0bb0d24b926fa653354d9 100644 (file)
@@ -1376,7 +1376,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
        mpic->isu_mask = (1 << mpic->isu_shift) - 1;
 
        mpic->irqhost = irq_domain_add_linear(mpic->node,
-                                      last_irq + 1,
+                                      intvec_top,
                                       &mpic_host_ops, mpic);
 
        /*