Prev: irq: support IRQ_NESTED_THREAD with non-threaded interrupt handlers
Next: patches to file r8192U_core.c
From: Marc Zyngier on 5 Jun 2010 10:20 On Sat, 5 Jun 2010 15:56:01 +0200 Esben Haabendal <esbenhaabendal(a)gmail.com> wrote: > I have a board with an I2C PCA9535 chip with two PHY interrupt lines > hooked up to. The pca953x driver calls set_irq_nested_thread on all > irq's on initialization. The PHY driver then calls request_irq, and has > no idea that it should actually be using a threaded handler. > > With this patch, the PHY driver is able to work in this scenario > without changes (and so should any other driver using request_irq). You may want to give request_any_context_irq() a try (available since the latest merge window). It still requires your driver to be changed, but it should then work in both threaded and non-threaded cases. M. -- Enforcement officers may use a hand-held detection device to measure both the direction and the strength of a TV signal. This makes it easy for us to locate TV receiving equipment in even the hardest-to-reach places. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Marc Zyngier on 5 Jun 2010 13:20
On Sat, 5 Jun 2010 18:53:53 +0200 Esben Haabendal <esbenhaabendal(a)gmail.com> wrote: > On Sat, Jun 5, 2010 at 4:10 PM, Marc Zyngier <maz(a)misterjones.org> wrote: > > On Sat, 5 Jun 2010 15:56:01 +0200 > > Esben Haabendal <esbenhaabendal(a)gmail.com> wrote: > > > >> I have a board with an I2C PCA9535 chip with two PHY interrupt lines > >> hooked up to. The pca953x driver calls set_irq_nested_thread on all > >> irq's on initialization. The PHY driver then calls request_irq, and has > >> no idea that it should actually be using a threaded handler. > >> > >> With this patch, the PHY driver is able to work in this scenario > >> without changes (and so should any other driver using request_irq). > > > > You may want to give request_any_context_irq() a try (available since > > the latest merge window). It still requires your driver to be changed, > > but it should then work in both threaded and non-threaded cases. > > The problem is not in "my" driver, but in the phy driver framework in this > particular case. To me, any driver/subsystem/whatever qualifies as "yours" if you're taking care of it ;-). > What is the plan here, should all drivers change from > request_any_context_irq() at some point in time? All? Probably not. Only the few where the need arises, and after carefully checking that you're not introducing a horrible race condition somewhere (threaded handlers are running with interrupts enabled...). M. -- Enforcement officers may use a hand-held detection device to measure both the direction and the strength of a TV signal. This makes it easy for us to locate TV receiving equipment in even the hardest-to-reach places. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |