powerpc/mpic: Fix allocation of reverse-map for multi-ISU mpics

Grant Likely grant.likely at secretlab.ca
Thu Feb 23 12:39:47 EST 2012


On Thu, Feb 23, 2012 at 10:50:13AM +1100, Benjamin Herrenschmidt wrote:
> When using a multi-ISU MPIC, we can interrupts up to
> isu_size * MPIC_MAX_ISU, not just isu_size, so allocate
> the right size reverse map.
> 
> Without this, the code will constantly fallback to
> a linear search.
> 
> Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>

Looks fine to me.  This will conflict with the irqdomain tree in linux-next,
but it will be a trivial fixup.  Still, if you prefer I can pick this
up into my tree.

g.

> ---
> 
> diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
> index 4e9ccb1..7fb3ab5 100644
> --- a/arch/powerpc/sysdev/mpic.c
> +++ b/arch/powerpc/sysdev/mpic.c
> @@ -1346,7 +1346,8 @@ struct mpic * __init mpic_alloc(struct device_node *node,
>  	mpic->isu_mask = (1 << mpic->isu_shift) - 1;
>  
>  	mpic->irqhost = irq_alloc_host(mpic->node, IRQ_HOST_MAP_LINEAR,
> -				       isu_size ? isu_size : mpic->num_sources,
> +				       isu_size ? isu_size *  MPIC_MAX_ISU :
> +				       mpic->num_sources,
>  				       &mpic_host_ops,
>  				       flags & MPIC_LARGE_VECTORS ? 2048 : 256);
>  
> 
> 


More information about the Linuxppc-dev mailing list