[3.8.y.z extended stable] Patch "irq: Enable all irqs unconditionally in irq_resume" has been added to staging queue

Kamal Mostafa kamal at canonical.com
Fri Dec 20 20:21:06 UTC 2013


This is a note to let you know that I have just added a patch titled

    irq: Enable all irqs unconditionally in irq_resume

to the linux-3.8.y-queue branch of the 3.8.y.z extended stable tree 
which can be found at:

 http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=shortlog;h=refs/heads/linux-3.8.y-queue

This patch is scheduled to be released in version 3.8.13.15.

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.8.y.z tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable

Thanks.
-Kamal

------

>From 6068b4981b340b99f3e02eca723a060dba60e8cc Mon Sep 17 00:00:00 2001
From: Laxman Dewangan <ldewangan at nvidia.com>
Date: Mon, 25 Nov 2013 19:39:47 +0530
Subject: irq: Enable all irqs unconditionally in irq_resume

commit ac01810c9d2814238f08a227062e66a35a0e1ea2 upstream.

When the system enters suspend, it disables all interrupts in
suspend_device_irqs(), including the interrupts marked EARLY_RESUME.

On the resume side things are different. The EARLY_RESUME interrupts
are reenabled in sys_core_ops->resume and the non EARLY_RESUME
interrupts are reenabled in the normal system resume path.

When suspend_noirq() failed or suspend is aborted for any other
reason, we might omit the resume side call to sys_core_ops->resume()
and therefor the interrupts marked EARLY_RESUME are not reenabled and
stay disabled forever.

To solve this, enable all irqs unconditionally in irq_resume()
regardless whether interrupts marked EARLY_RESUMEhave been already
enabled or not.

This might try to reenable already enabled interrupts in the non
failure case, but the only affected platform is XEN and it has been
confirmed that it does not cause any side effects.

[ tglx: Massaged changelog. ]

Signed-off-by: Laxman Dewangan <ldewangan at nvidia.com>
Acked-by-and-tested-by: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
Acked-by: Heiko Stuebner <heiko at sntech.de>
Reviewed-by: Pavel Machek <pavel at ucw.cz>
Cc: <ian.campbell at citrix.com>
Cc: <rjw at rjwysocki.net>
Cc: <len.brown at intel.com>
Cc: <gregkh at linuxfoundation.org>
Link: http://lkml.kernel.org/r/1385388587-16442-1-git-send-email-ldewangan@nvidia.com
Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
---
 kernel/irq/pm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/irq/pm.c b/kernel/irq/pm.c
index cb228bf..abcd6ca 100644
--- a/kernel/irq/pm.c
+++ b/kernel/irq/pm.c
@@ -50,7 +50,7 @@ static void resume_irqs(bool want_early)
 		bool is_early = desc->action &&
 			desc->action->flags & IRQF_EARLY_RESUME;

-		if (is_early != want_early)
+		if (!is_early && want_early)
 			continue;

 		raw_spin_lock_irqsave(&desc->lock, flags);
--
1.8.3.2





More information about the kernel-team mailing list