[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87a5ti3y7i.wl-maz@kernel.org>
Date: Tue, 19 Sep 2023 17:49:21 +0100
From: Marc Zyngier <maz@...nel.org>
To: Biju Das <biju.das.jz@...renesas.com>
Cc: Thomas Gleixner <tglx@...utronix.de>,
Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@...renesas.com>,
Claudiu Beznea <claudiu.beznea.uj@...renesas.com>,
Geert Uytterhoeven <geert+renesas@...der.be>,
Biju Das <biju.das.au@...il.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-renesas-soc@...r.kernel.org"
<linux-renesas-soc@...r.kernel.org>
Subject: Re: [PATCH 3/3] irqchip: renesas-rzg2l: Fix irq storm with edge trigger detection for TINT
On Tue, 19 Sep 2023 17:32:05 +0100,
Biju Das <biju.das.jz@...renesas.com> wrote:
[...]
> > So you mean that you *already* lose interrupts across a disable followed by
> > an enable? I'm slightly puzzled...
>
> There is no interrupt lost at all.
>
> Currently this patch addresses 2 issues.
>
> Scenario 1: Extra interrupt when we select TINT source on enable_irq()
>
> Getting an extra interrupt, when client drivers calls enable_irq()
> during probe()/resume(). In this case, the irq handler on the Client
> driver just clear the interrupt status bit.
>
> Issue 2: IRQ storm when we select TINT source on enable_irq()
>
> Here as well, we are getting an extra interrupt, when client drivers
> calls enable_irq() during probe() and this Interrupts getting
> generated infinitely, when the client driver calls disable_irq() in
> irq handler and in in work queue calling enable_irq().
How do you know this is a spurious interrupt? For all you can tell,
you are just consuming an edge. I absolutely don't buy this
workaround, because you have no context that allows you to
discriminate between a real spurious interrupt and a normal interrupt
that lands while the interrupt line was masked.
> Currently we are not loosing interrupts, but we are getting additional
> Interrupt(phantom) which is causing the issue.
If you get an interrupt at probe time in the endpoint driver, that's
probably because the device is not in a quiescent state when the
interrupt is requested. And it is probably this that needs addressing.
M.
--
Without deviation from the norm, progress is not possible.
Powered by blists - more mailing lists