[ 3.8.y.z extended stable ] Patch "cpuidle: coupled: disable interrupts after entering safe state" has been added to staging queue

Kamal Mostafa kamal at canonical.com
Fri Sep 20 00:36:16 UTC 2013


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

    cpuidle: coupled: disable interrupts after entering safe state

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.10.

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 125e633f3ee985ffb4135b08289b9f329d2e1432 Mon Sep 17 00:00:00 2001
From: Colin Cross <ccross at android.com>
Date: Fri, 23 Aug 2013 12:45:10 -0700
Subject: cpuidle: coupled: disable interrupts after entering safe state

commit 59e998561103a93f294c8d3138dd659af772a5da upstream.

Calling cpuidle_enter_state is expected to return with interrupts
enabled, but interrupts must be disabled before starting the
ready loop synchronization stage.  Call local_irq_disable after
each call to cpuidle_enter_state for the safe state.

Tested-by: Stephen Warren <swarren at nvidia.com>
Signed-off-by: Colin Cross <ccross at android.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki at intel.com>
Signed-off-by: Kamal Mostafa <kamal at canonical.com>
---
 drivers/cpuidle/coupled.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/cpuidle/coupled.c b/drivers/cpuidle/coupled.c
index dc9e647..5d39627 100644
--- a/drivers/cpuidle/coupled.c
+++ b/drivers/cpuidle/coupled.c
@@ -470,6 +470,7 @@ int cpuidle_enter_state_coupled(struct cpuidle_device *dev,
 		}
 		entered_state = cpuidle_enter_state(dev, drv,
 			dev->safe_state_index);
+		local_irq_disable();
 	}

 	/* Read barrier ensures online_count is read after prevent is cleared */
@@ -514,6 +515,7 @@ retry:

 		entered_state = cpuidle_enter_state(dev, drv,
 			dev->safe_state_index);
+		local_irq_disable();
 	}

 	if (cpuidle_coupled_clear_pokes(dev->cpu)) {
--
1.8.1.2





More information about the kernel-team mailing list