Re: [patch 0/2] Add support for threaded interrupt handlers - V3

From: David Brownell
Date: Tue Mar 24 2009 - 20:52:46 EST


On Tuesday 24 March 2009, Thomas Gleixner wrote:
> On Tue, 24 Mar 2009, David Brownell wrote:
> > On Monday 23 March 2009, Thomas Gleixner wrote:
> > > I'm still looking into a clean solution for the threaded demultiplex
> > > handler case which was brought up by Dave to allow both the handling
> > > of the demultiplexed devices in the context of the demultiplexer
> > > interrupt thread and the wakeup of separate handler threads. But this
> > > is an orthogonal extension of the existing patch set and does not
> > > change the general design.
> >
> > No comments on the patch I sent?
>
> Looked at it briefly, but I still try to figure out what the best
> solution for this will be. As I said I'd like to support both
> variants:
>
> 1) demux handlers run in the primary interrupt thread context
> 2) demux handlers kick their own handler threads

I have no need for the latter, at least in current systems.
The IRQs are neither frequent nor time-critical, else they'd
not be managed via I2C in the first place ... even high speed
I2C (these mostly use 2.6 Mbit/sec, not 100 Kbit/sec) isn't
as quick as accessing any kind of local PIC.


The simplest case, FWIW, is with chips like the mcp23s08
GPIO expanders, or their I2C siblings: just one level of
dispatch needed. The Linux driver for those chips doesn't
yet support its IRQs, primarily because genirq doesn't cope
with such stuff very well yet. (You might want to think
about something a lot simpler than TWL4030-family PMICs!)


> > Or is that what you meant by "orthogonal"? Admittedly that
> > patch sort of begs the question about which request_irq()
> > variant should be used for such demuxed IRQs; the "current"
> > assumption is that request_irq() suffices, but that could
> > be improved so the handle_threaded_irq() flow handler could
> > use the action->thread_fn not action->handler.
>
> I don't want to special case that. See above.

What's a special case though? If you're serious about
wanting to support more than one case, it's always going
to be possible to call some of them "special". As in,
"threaded IRQs are a special case in genirq". That should
not mean they don't get handled.

- Dave
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/