Re: [PATCH v2] genirq: Clarify that irq wake state is orthogonal to enable/disable

From: Lina Iyer
Date: Thu Feb 06 2020 - 14:57:57 EST


On Thu, Feb 06 2020 at 12:15 -0700, Stephen Boyd wrote:
There's some confusion around if an irq that's disabled with
disable_irq() can still wake the system from sleep states such as
"suspend to RAM". Let's clarify this in the kernel documentation for
irq_set_irq_wake() so that it's clear that an irq can be disabled and
still wake the system if it has been marked for wakeup.

Thomas also mentioned that hardware could work either way and probably
should not be assumed to work one way or the other.

Cc: Marc Zyngier <maz@xxxxxxxxxx>
Cc: Douglas Anderson <dianders@xxxxxxxxxxxx>
Cc: Lina Iyer <ilina@xxxxxxxxxxxxxx>
Cc: Maulik Shah <mkshah@xxxxxxxxxxxxxx>
Signed-off-by: Stephen Boyd <swboyd@xxxxxxxxxxxx>
---

Changes from v1:
* Added the last sentence from tglx

kernel/irq/manage.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 818b2802d3e7..e1e217d7778c 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -731,6 +731,13 @@ static int set_irq_wake_real(unsigned int irq, unsigned int on)
*
* Wakeup mode lets this IRQ wake the system from sleep
* states like "suspend to RAM".
+ *
+ * Note: irq enable/disable state is completely orthogonal
+ * to the enable/disable state of irq wake. An irq can be
+ * disabled with disable_irq() and still wake the system as
+ * long as the irq has wake enabled. If this does not hold,
+ * then either the underlying irq chip and the related driver
+ * need to be investigated.
*/
int irq_set_irq_wake(unsigned int irq, unsigned int on)
{
--
Sent by a computer, using git, on the internet