[kernel] r14397 - in dists/trunk/linux-2.6/debian: . patches/bugfix/all patches/series

Martin Michlmayr tbm at alioth.debian.org
Sat Oct 17 15:54:19 UTC 2009


Author: tbm
Date: Sat Oct 17 15:54:15 2009
New Revision: 14397

Log:
CPUidle: always return with interrupts enabled

Added:
   dists/trunk/linux-2.6/debian/patches/bugfix/all/cpuidle-return-with-irq-enabled.patch
Modified:
   dists/trunk/linux-2.6/debian/changelog
   dists/trunk/linux-2.6/debian/patches/series/base

Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog	Fri Oct 16 23:07:00 2009	(r14396)
+++ dists/trunk/linux-2.6/debian/changelog	Sat Oct 17 15:54:15 2009	(r14397)
@@ -4,6 +4,9 @@
   * Include aufs2, marked as staging (Closes: #541828)
   * Include speakup modules under staging
 
+  [ Martin Michlmayr ]
+  * CPUidle: always return with interrupts enabled.
+
  -- Ben Hutchings <ben at decadent.org.uk>  Tue, 13 Oct 2009 02:18:40 +0100
 
 linux-2.6 (2.6.31-1~experimental.2) experimental; urgency=low

Added: dists/trunk/linux-2.6/debian/patches/bugfix/all/cpuidle-return-with-irq-enabled.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/all/cpuidle-return-with-irq-enabled.patch	Sat Oct 17 15:54:15 2009	(r14397)
@@ -0,0 +1,38 @@
+Subject: [PATCH] CPUidle: always return with interrupts enabled
+
+In the case where cpuidle_idle_call() returns before changing state
+due to a need_resched(), it was returning with IRQs disabled.
+
+This patch ensures IRQs are (re)enabled before returning.
+
+Reported-by: Hemanth V <hemanthv at ti.com>
+Signed-off-by: Kevin Hilman <khilman at deeprootsystems.com>
+---
+ drivers/cpuidle/cpuidle.c |    5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
+index ad41f19..12fdd39 100644
+--- a/drivers/cpuidle/cpuidle.c
++++ b/drivers/cpuidle/cpuidle.c
+@@ -75,8 +75,11 @@ static void cpuidle_idle_call(void)
+ #endif
+ 	/* ask the governor for the next state */
+ 	next_state = cpuidle_curr_governor->select(dev);
+-	if (need_resched())
++	if (need_resched()) {
++		local_irq_enable();
+ 		return;
++	}
++
+ 	target_state = &dev->states[next_state];
+ 
+ 	/* enter the state and update stats */
+-- 
+1.6.4.3
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
+the body of a message to majordomo at vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+Please read the FAQ at  http://www.tux.org/lkml/

Modified: dists/trunk/linux-2.6/debian/patches/series/base
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/base	Fri Oct 16 23:07:00 2009	(r14396)
+++ dists/trunk/linux-2.6/debian/patches/series/base	Sat Oct 17 15:54:15 2009	(r14397)
@@ -58,3 +58,4 @@
 + bugfix/all/stable/2.6.31.3.patch
 + bugfix/all/hfsplus-limit-to-2tb.patch
 + bugfix/all/stable/2.6.31.4.patch
++ bugfix/all/cpuidle-return-with-irq-enabled.patch



More information about the Kernel-svn-changes mailing list