]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.16-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 3 Oct 2014 21:08:22 +0000 (14:08 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 3 Oct 2014 21:08:22 +0000 (14:08 -0700)
added patches:
cpufreq-update-cpufreq_suspended-after-stopping-governors.patch

queue-3.16/cpufreq-update-cpufreq_suspended-after-stopping-governors.patch [new file with mode: 0644]
queue-3.16/series

diff --git a/queue-3.16/cpufreq-update-cpufreq_suspended-after-stopping-governors.patch b/queue-3.16/cpufreq-update-cpufreq_suspended-after-stopping-governors.patch
new file mode 100644 (file)
index 0000000..e1f2868
--- /dev/null
@@ -0,0 +1,52 @@
+From b1b12babe3b72cfb08b875245e5a5d7c2747c772 Mon Sep 17 00:00:00 2001
+From: Viresh Kumar <viresh.kumar@linaro.org>
+Date: Tue, 30 Sep 2014 09:33:17 +0530
+Subject: cpufreq: update 'cpufreq_suspended' after stopping governors
+
+From: Viresh Kumar <viresh.kumar@linaro.org>
+
+commit b1b12babe3b72cfb08b875245e5a5d7c2747c772 upstream.
+
+Commit 8e30444e1530 ("cpufreq: fix cpufreq suspend/resume for intel_pstate")
+introduced a bug where the governors wouldn't be stopped anymore for
+->target{_index}() drivers during suspend. This happens because
+'cpufreq_suspended' is updated before stopping the governors during suspend
+and due to this __cpufreq_governor() would return early due to this check:
+
+       /* Don't start any governor operations if we are entering suspend */
+       if (cpufreq_suspended)
+               return 0;
+
+Fixes: 8e30444e1530 ("cpufreq: fix cpufreq suspend/resume for intel_pstate")
+Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/cpufreq/cpufreq.c |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/drivers/cpufreq/cpufreq.c
++++ b/drivers/cpufreq/cpufreq.c
+@@ -1666,10 +1666,8 @@ void cpufreq_suspend(void)
+       if (!cpufreq_driver)
+               return;
+-      cpufreq_suspended = true;
+-
+       if (!has_target())
+-              return;
++              goto suspend;
+       pr_debug("%s: Suspending Governors\n", __func__);
+@@ -1682,6 +1680,9 @@ void cpufreq_suspend(void)
+                       pr_err("%s: Failed to suspend driver: %p\n", __func__,
+                               policy);
+       }
++
++suspend:
++      cpufreq_suspended = true;
+ }
+ /**
index 8a126ab130eff62192c0bfdde4f81412cce9748b..965a8f192bd0d82bc75282bcfc32d3d150099e8e 100644 (file)
@@ -343,3 +343,4 @@ mmc-mmci-reverse-irq-handling-for-the-arm_variant.patch
 dmaengine-dw-introduce-dwc_dostart_first_queued-helper.patch
 dmaengine-dw-don-t-perform-dma-when-dmaengine_submit-is-called.patch
 partitions-aix.c-off-by-one-bug.patch
+cpufreq-update-cpufreq_suspended-after-stopping-governors.patch