On Tue, 19 Sep 2023 17:32:05 +0100, Biju Das <biju.das.jz@xxxxxxxxxxxxxx> 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.