Messages in this thread | | | Date | Tue, 21 Jul 2009 13:58:41 -0700 | From | Dmitry Torokhov <> | Subject | Re: Threaded interrupts for synaptic touchscreen in HTC dream |
| |
On Tue, Jul 21, 2009 at 10:30:26PM +0200, Thomas Gleixner wrote: > On Tue, 21 Jul 2009, Dmitry Torokhov wrote: > > > On Tue, Jul 21, 2009 at 01:49:33PM +0100, Mark Brown wrote: > > > On Tue, Jul 21, 2009 at 06:00:07PM +0530, Trilok Soni wrote: > > > > > > > Hopefully, this thread can give all details about threaded irq discussion. > > > > > > > http://lkml.org/lkml/2009/2/27/255 > > > > > > Yes, I'm aware of that - I read it at the time. It seemed to peter out > > > without any satisfactory solution, unfortunately. There's two separate > > > issues here: > > > > > > - Ordinary devices on interrupt driven or slow buses like I2C. These > > > need something along the lines of request_threaded_irq() that's allows > > > them to schedule the main IRQ handler outside hardirq context so > > > that they can interact with the device. They need to do something in > > > hardirq context to disable the interrupt if it's level triggered but > > > most of the time the only option they've got is to disable the IRQ > > > and reenable it when the worker thread is done. This is the issue > > > here. > > There is already a sane solution to the problem: > > See http://lkml.org/lkml/2009/7/17/174 > > > > My immediate thought when I noticed this was that we should probably > > > fix request_threaded_irq() so that it's useful for them; I'd been > > > intending to do some digging and try to understand why it is > > > currently implemented as it is. > > What's to fix there ? >
duisable_irq_nosync() in the hard interrupt handler stops the thread handler from running. Unfortunately there are devices where it is the only thing we can do in the hard interrupt.
-- Dmitry
| |