On 04/06/2019 12:05, [email protected] wrote:
> From: Guo Ren <[email protected]>
> 
> The csky,mpintc could deliver a external irq to one cpu or all cpus, but
> it couldn't deliver a external irq to a group of cpus with cpu_mask. So
> we only use auto deliver mode when affinity mask_val is equal to
> cpu_present_mask.
> 
> There is no limitation for only two cpus in SMP system.
> 
> Signed-off-by: Guo Ren <[email protected]>
> Cc: Marc Zyngier <[email protected]>
> ---
>  drivers/irqchip/irq-csky-mpintc.c | 15 +++++++++++++--
>  1 file changed, 13 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/irqchip/irq-csky-mpintc.c 
> b/drivers/irqchip/irq-csky-mpintc.c
> index a451a07..2740dd5 100644
> --- a/drivers/irqchip/irq-csky-mpintc.c
> +++ b/drivers/irqchip/irq-csky-mpintc.c
> @@ -143,8 +143,19 @@ static int csky_irq_set_affinity(struct irq_data *d,
>       if (cpu >= nr_cpu_ids)
>               return -EINVAL;
>  
> -     /* Enable interrupt destination */
> -     cpu |= BIT(31);
> +     /*
> +      * The csky,mpintc could support auto irq deliver, but it only
> +      * could deliver external irq to one cpu or all cpus. So it
> +      * doesn't support deliver external irq to a group of cpus
> +      * with cpu_mask.
> +      * SO we only use auto deliver mode when affinity mask_val is
> +      * equal to cpu_present_mask.
> +      *
> +      */
> +     if (cpumask_equal(mask_val, cpu_present_mask))
> +             cpu = 0;
> +     else
> +             cpu |= BIT(31);
>  
>       writel_relaxed(cpu, INTCG_base + INTCG_CIDSTR + offset);
>  
> 

Isn't that the same patch as [1]? In which case, I've queued it as a fix
already.

Thanks,

        M.

[1] https://lkml.org/lkml/2019/5/21/174
-- 
Jazz is not dead. It just smells funny...

Reply via email to