lkml.org 
[lkml]   [2022]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 121/218] irqchip: irq-xtensa-mx: fix initial IRQ affinity
    Date
    From: Max Filippov <jcmvbkbc@gmail.com>

    commit a255ee29252066d621df5d6b420bf534c6ba5bc0 upstream.

    When irq-xtensa-mx chip is used in non-SMP configuration its
    irq_set_affinity callback is not called leaving IRQ affinity set empty.
    As a result IRQ delivery does not work in that configuration.
    Initialize IRQ affinity of the xtensa MX interrupt distributor to CPU 0
    for all external IRQ lines.

    Cc: stable@vger.kernel.org
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/irqchip/irq-xtensa-mx.c | 18 ++++++++++++++----
    1 file changed, 14 insertions(+), 4 deletions(-)

    --- a/drivers/irqchip/irq-xtensa-mx.c
    +++ b/drivers/irqchip/irq-xtensa-mx.c
    @@ -143,14 +143,25 @@ static struct irq_chip xtensa_mx_irq_chi
    .irq_set_affinity = xtensa_mx_irq_set_affinity,
    };

    +static void __init xtensa_mx_init_common(struct irq_domain *root_domain)
    +{
    + unsigned int i;
    +
    + irq_set_default_host(root_domain);
    + secondary_init_irq();
    +
    + /* Initialize default IRQ routing to CPU 0 */
    + for (i = 0; i < XCHAL_NUM_EXTINTERRUPTS; ++i)
    + set_er(1, MIROUT(i));
    +}
    +
    int __init xtensa_mx_init_legacy(struct device_node *interrupt_parent)
    {
    struct irq_domain *root_domain =
    irq_domain_add_legacy(NULL, NR_IRQS - 1, 1, 0,
    &xtensa_mx_irq_domain_ops,
    &xtensa_mx_irq_chip);
    - irq_set_default_host(root_domain);
    - secondary_init_irq();
    + xtensa_mx_init_common(root_domain);
    return 0;
    }

    @@ -160,8 +171,7 @@ static int __init xtensa_mx_init(struct
    struct irq_domain *root_domain =
    irq_domain_add_linear(np, NR_IRQS, &xtensa_mx_irq_domain_ops,
    &xtensa_mx_irq_chip);
    - irq_set_default_host(root_domain);
    - secondary_init_irq();
    + xtensa_mx_init_common(root_domain);
    return 0;
    }
    IRQCHIP_DECLARE(xtensa_mx_irq_chip, "cdns,xtensa-mx", xtensa_mx_init);

    \
     
     \ /
      Last update: 2022-06-13 12:55    [W:4.080 / U:0.268 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site