Hello, I put the IRQF_NO_SUSPEND_SAFE/IRQF_TIMER_SIBLING_OK/WHATEVER_NAME_YOU_CHOOSE debate aside to concentrate on another problem pointed out by Rafael and Mark: the fact that we cannot mix IRQF_NO_SUSPEND and wakeup sources on a shared IRQ line.
This is because the wakeup code is prevailing the IRQF_NO_SUSPEND case and will trigger a system wakeup as soon as the IRQ line is tagged as a wakeup source. This series propose an approach to deal with such cases by doing the following: 1/ Prevent any system wakeup when at least one of the IRQ user has set the IRQF_NO_SUSPEND flag 2/ Adapt IRQ handlers so that they can safely be called in suspended state 3/ Let drivers decide when the system should be woken up Let me know what you think of this approach. Thanks, Boris Boris Brezillon (3): genirq: prevent system wakeup when dealing with IRQF_NO_SUSPEND IRQs genirq: add helper functions to deal with wakeup on shared IRQF_NO_SUSPEND IRQs rtc: at91sam9: properly act when IRQ handler is called in suspended state drivers/rtc/rtc-at91sam9.c | 62 ++++++++++++++++++++++++++++++++++++++-------- include/linux/interrupt.h | 3 +++ kernel/irq/manage.c | 16 ++++++++++++ kernel/irq/pm.c | 9 ++++++- 4 files changed, 78 insertions(+), 12 deletions(-) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/