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

From: Thomas Gleixner
Date: Fri Oct 29 2010 - 12:35:27 EST


On Fri, 29 Oct 2010, Rabin Vincent wrote:

> 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.

No, I left it out on purpose and I'd rather go w/o it unless there is
a intree user.

Thanks,

tglx