Re: [PATCH] genirq: handle shared irqs in handle_nested_irq()

From: Rabin Vincent
Date: Fri Oct 29 2010 - 11:57:17 EST


On Fri, Oct 29, 2010 at 8:56 PM, Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:
> On Fri, 29 Oct 2010, Rabin Vincent wrote:
>> On Fri, Oct 29, 2010 at 12:24 AM, Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:
>> > On Thu, 28 Oct 2010, Rabin Vincent wrote:
>> >> Allow shared irqs to work when nested threads are used for handling
>> >> threaded interrupts.
>> >
>> > Why do we want this ? handle_nested_irq() is called from a interrupt
>> > demultiplexer, so why would we need shared interrupts for this ?
>>
>> Threaded IRQ + handle_nested_irq() is used by I2C GPIO expander drivers
>> like chained hander + generic_handle_irq() is used by on-chip GPIO
>> drivers.  If two irq handlers are registered on an on-chip GPIO
>> interrupt (because two devices are externally connected), it works.  If
>> the handlers are instead registered on one of the expander's pins'
>> interrupt, without this patch, only the handler registered first is
>> called.
>
> Have the hardware dudes not yet understood that shared interrupts are
> a horrible idea ?

Note that I haven't actually seen the multiple devices to expander GPIO
(yet?, though I've seen the multiple devices to onchip GPIO). It seemed
to be something missing from the irq handling though, rather than
something that was left out on purpose.

Rabin
--
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/