genirq / PM: better describe IRQF_NO_SUSPEND semantics
authorMark Rutland <mark.rutland@arm.com>
Fri, 20 Feb 2015 14:53:46 +0000 (14:53 +0000)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 26 Feb 2015 00:17:53 +0000 (01:17 +0100)
commit737eb0301f296d55c22350c6968ff1ef51bacb5f
tree63c2256c8a57d581ecde81156a8607af939dfe22
parentc517d838eb7d07bbe9507871fab3931deccff539
genirq / PM: better describe IRQF_NO_SUSPEND semantics

The IRQF_NO_SUSPEND flag is intended to be used for interrupts required
to be enabled during the suspend-resume cycle. This mostly consists of
IPIs and timer interrupts, potentially including chained irqchip
interrupts if these are necessary to handle timers or IPIs. If an
interrupt does not fall into one of the aforementioned categories,
requesting it with IRQF_NO_SUSPEND is likely incorrect.

Using IRQF_NO_SUSPEND does not guarantee that the interrupt can wake the
system from a suspended state. For an interrupt to be able to trigger a
wakeup, it may be necessary to program various components of the system.
In these cases it is necessary to use {enable,disabled}_irq_wake.

Unfortunately, several drivers assume that IRQF_NO_SUSPEND ensures that
an IRQ can wake up the system, and the documentation can be read
ambiguously w.r.t. this property.

This patch updates the documentation regarding IRQF_NO_SUSPEND to make
this caveat explicit, hopefully making future misuse rarer. Cleanup of
existing misuse will occur as part of later patch series.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Documentation/power/suspend-and-interrupts.txt
include/linux/interrupt.h