lkml.org 
[lkml]   [2018]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.9 205/293] irqchip/gic-v3: Report failures in gic_irq_domain_alloc
    Date
    From: Suzuki K Poulose <suzuki.poulose@arm.com>

    [ Upstream commit 63c16c6eacb69d0cbdaee5dea0dd56d238375fe6 ]

    If the GIC cannot map an IRQ via irq_domain_ops->alloc(), it doesn't
    return an error code. This can cause a problem with drivers, where
    it thinks it has successfully got an IRQ for the device, but requesting
    the same ends up failure with -ENOSYS (as the IRQ's chip is not set).

    Fixes: commit 443acc4f37f6 ("irqchip: GICv3: Convert to domain hierarchy")
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/irqchip/irq-gic-v3.c | 7 +++++--
    1 file changed, 5 insertions(+), 2 deletions(-)

    diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
    index fd4a78296b48..8c7f02318a6b 100644
    --- a/drivers/irqchip/irq-gic-v3.c
    +++ b/drivers/irqchip/irq-gic-v3.c
    @@ -832,8 +832,11 @@ static int gic_irq_domain_alloc(struct irq_domain *domain, unsigned int virq,
    if (ret)
    return ret;

    - for (i = 0; i < nr_irqs; i++)
    - gic_irq_domain_map(domain, virq + i, hwirq + i);
    + for (i = 0; i < nr_irqs; i++) {
    + ret = gic_irq_domain_map(domain, virq + i, hwirq + i);
    + if (ret)
    + return ret;
    + }

    return 0;
    }
    --
    2.15.1
    \
     
     \ /
      Last update: 2018-04-09 04:00    [W:2.794 / U:0.312 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site