On Wed, 2014-07-23 at 04:36PM +0200, Linus Walleij wrote: > On Fri, Jul 18, 2014 at 11:52 AM, Lars-Peter Clausen <lars@xxxxxxxxxx> wrote: > > > The Zynq GPIO interrupt handling code as two main issues: > > 1) It does not support IRQF_ONESHOT interrupt since it uses handle_simple_irq() > > for the interrupt handler. handle_simple_irq() does not do masking and unmasking > > of the IRQ that is required for this chip to be able to support IRQF_ONESHOT > > IRQs, causing the CPU to lock up in a interrupt storm if such a interrupt is > > requested. > > 2) Interrupts are acked after the primary interrupt handlers for all asserted > > interrupts in a bank have been called. For edge triggered interrupt this is to > > late and may cause a interrupt to be missed. For level triggered oneshot > > interrupts this is to early and causes the interrupt handler to run twice per > > interrupt. > > > > This patch addresses the issue by updating the driver to use the correct IRQ > > chip handler functions that are appropriate for this kind of IRQ controller. > > This looks very thought-through. I will give Harini and Soren some days > more to react before applying (unless patch 1/3 is required to apply this). Took me a while, but I finally got to pulling the diffs from some web-archive and applied them on the current linux-next. I didn't test any of the new/fixed functionality, but it doesn't break any of my old use-cases. So, I think this is all good. For the whole series: Acked-by: Soren Brinkmann <soren.brinkmann@xxxxxxxxxx> Thanks, Sören -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html