From: Marc Zyngier on
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
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/