Re: recommended use of request_any_context_irq()
From: Thomas Gleixner
Date: Thu Sep 22 2016 - 05:31:57 EST
On Thu, 22 Sep 2016, Marc Zyngier wrote:
> On 21/09/16 22:14, Leo Li wrote:
> > Hi Marc and Thomas,
> >
> > With the introduction of request_any_context_irq() routine, driver can
> > deal with interrupt controllers using either threaded irq or normal
> > irq. But I don't see many drivers that have been changed to use this
> > function to request interrupt. For on-board devices, the driver
> > normally don't know which kind of interrupt controller they are
> > connected to. Why don't we make the request_any_context_irq()
> > mandatory or recommended for all drivers? Is there any drawback for
> > changing all the request_irq() to the request_any_context_irq()?
>
> In 99.99% of the cases, a device is integrated in one particular way,
> always. For the 0.01% that is left, we have the above API. And if a
> particular device moves from the first category to the second, whoever
> designed the system will change the driver to use this API, and that
> driver only.
>
> There is strictly no reason to perform a blanket change of all the
> drivers. What would be the reason to change them other than to cater for
> a contrived use case that may never happen?
Aside of that this API is explicitely returning the context type so a
driver can accomodate in which context it runs.
And the difference is not plain interupt or threaded. The difference is
plain interrupt or nested thread. Nested threading happens when the device
sits behind a demultiplex interrupt device, where the demultiplex handler
runs in a thread. So the device handler can reuse the thread context of the
demultiplex handler.
Thanks,
tglx