Hi Thomas, Any chance this could go in the next kernel release ? More and more people are complaining about this backtrace :-/. Regards, Boris On Thu, 29 Jan 2015 11:33:35 +0100 Boris Brezillon <boris.brezillon@xxxxxxxxxxxxxxxxxx> wrote: > Commit cab303be91dc47942bc25de33dc1140123540800 [1] introduced a WARN_ON > test which triggers a WARNING backtrace on at91 platforms. > While this WARN_ON is absolutely necessary to warn users that they should > not mix request with and without IRQF_NO_SUSPEND flags on shared IRQs, > there is no easy way to solve this issue on at91 platforms. > > The main reason is that the init timer is often using a shared irq line > and thus request this irq with IRQF_NO_SUSPEND flag set, while other > peripherals request the same irq line without this flag. > > As suggested by Thomas, the first 3 patches of this series add a dumb > demultiplexer irqchip implementation. > This demuxer registers to a source interrupt and then forwards all received > interrupts to its children (it they are enabled). > > The last two patches rework at91 DTs and config to make use of this dumb > demuxer implementation. > > Rob, I know you were not in favor of exposing this in the DT but we really > need to quickly a solution: more and more people complain about this warning. > If you see a better way to handle this case please share it. > > Best Regards, > > Boris > > Changes since v3: > - replace dumb by virt > > Changes since v2: > - removed unneeded dumb demux flags passed to irq_alloc_dumb_demux_chip > - set nested lockdep class for all requested irqs > - add some explanation to the DT binding doc > - change the compatible string to clearly show that this chip is purely > virtual > - added dumb demuxer to all at91 impacted SoCs > > Changes since v1: > - went for an dumb irq demuxer approach instead of trying to fix the > current shared irq code > > Boris Brezillon (5): > genirq: Authorize chained handlers to remain disabled when initialized > irqchip: add virtual demultiplexer implementation > irqchip: Add DT binding doc for the virtual irq demuxer chip > ARM: at91/dt: select VIRT_IRQ_DEMUX for all at91 SoCs > ARM: at91/dt: define a virtual irq demultiplexer chip connected on > irq1 > > .../bindings/interrupt-controller/dumb-demux.txt | 41 ++++++ > arch/arm/boot/dts/at91rm9200.dtsi | 20 ++- > arch/arm/boot/dts/at91sam9260.dtsi | 26 +++- > arch/arm/boot/dts/at91sam9261.dtsi | 26 +++- > arch/arm/boot/dts/at91sam9263.dtsi | 29 ++++- > arch/arm/boot/dts/at91sam9g45.dtsi | 29 ++++- > arch/arm/boot/dts/at91sam9n12.dtsi | 25 +++- > arch/arm/boot/dts/at91sam9rl.dtsi | 29 ++++- > arch/arm/boot/dts/at91sam9x5.dtsi | 26 +++- > arch/arm/mach-at91/Kconfig | 2 + > drivers/irqchip/Kconfig | 4 + > drivers/irqchip/Makefile | 1 + > drivers/irqchip/irq-virt-demux.c | 72 +++++++++++ > include/linux/irq.h | 64 +++++++++- > include/linux/irqdomain.h | 1 + > kernel/irq/Kconfig | 5 + > kernel/irq/Makefile | 1 + > kernel/irq/chip.c | 53 +++++++- > kernel/irq/handle.c | 31 ++++- > kernel/irq/internals.h | 3 + > kernel/irq/irqdomain.c | 2 +- > kernel/irq/msi.c | 3 +- > kernel/irq/virt-demux-chip.c | 140 +++++++++++++++++++++ > 23 files changed, 580 insertions(+), 53 deletions(-) > create mode 100644 Documentation/devicetree/bindings/interrupt-controller/dumb-demux.txt > create mode 100644 drivers/irqchip/irq-virt-demux.c > create mode 100644 kernel/irq/virt-demux-chip.c > -- Boris Brezillon, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html