On Sun, Jun 29, 2014 at 04:11:02PM +0200, Hans de Goede wrote: > Some drivers use disable_irq / enable_irq and do the work clearing the source > in another thread instead of using a threaded interrupt handler. > > The irqchip used not having irq_disable and irq_enable callbacks in this case, > will lead to unnecessary spurious interrupts: > > On a disable_irq in a chip without a handller for this, the irq core will > remember the disable, but not actually call into the irqchip. With a level > triggered interrupt (where the source has not been cleared) this will lead > to an immediate retrigger, at which point the irq-core will mask the irq. > So having an irq_disable callback in the irqchip will save us the interrupt > firing a 2nd time for nothing. > > Drivers using disable / enable_irq like this, will call enable_irq when > they finally have cleared the interrupt source, without an enable_irq > callback, > this will turn into an unmask, at which point the irq will trigger immediately > because when it was originally acked the level was still high, so the ack was > a nop. > > Signed-off-by: Hans de Goede <[email protected]>
Acked-by: Maxime Ripard <[email protected]> Maxime -- Maxime Ripard, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
signature.asc
Description: Digital signature
