summaryrefslogtreecommitdiffstats
path: root/meta-eas/recipes-kernel/linux/linux-renesas/0017-cpufreq-schedutil-enable-fast-switch-earlier.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-eas/recipes-kernel/linux/linux-renesas/0017-cpufreq-schedutil-enable-fast-switch-earlier.patch')
-rw-r--r--meta-eas/recipes-kernel/linux/linux-renesas/0017-cpufreq-schedutil-enable-fast-switch-earlier.patch79
1 files changed, 79 insertions, 0 deletions
diff --git a/meta-eas/recipes-kernel/linux/linux-renesas/0017-cpufreq-schedutil-enable-fast-switch-earlier.patch b/meta-eas/recipes-kernel/linux/linux-renesas/0017-cpufreq-schedutil-enable-fast-switch-earlier.patch
new file mode 100644
index 0000000..487c01e
--- /dev/null
+++ b/meta-eas/recipes-kernel/linux/linux-renesas/0017-cpufreq-schedutil-enable-fast-switch-earlier.patch
@@ -0,0 +1,79 @@
+From 9286a34be80e891aebc0193be28931a9f194b23d Mon Sep 17 00:00:00 2001
+From: Viresh Kumar <viresh.kumar@linaro.org>
+Date: Tue, 15 Nov 2016 13:53:21 +0530
+Subject: [PATCH 17/92] cpufreq: schedutil: enable fast switch earlier
+
+The fast_switch_enabled flag will be used by both sugov_policy_alloc()
+and sugov_policy_free() with a later patch.
+
+Prepare for that by moving the calls to enable and disable it to the
+beginning of sugov_init() and end of sugov_exit().
+
+Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+(cherry picked from commit 4a71ce4348bb61740d411822357061f8bf870f4c)
+Signed-off-by: Gaku Inami <gaku.inami.xw@bp.renesas.com>
+---
+ kernel/sched/cpufreq_schedutil.c | 17 +++++++++++------
+ 1 file changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c
+index 8c4e165..68f21bb 100644
+--- a/kernel/sched/cpufreq_schedutil.c
++++ b/kernel/sched/cpufreq_schedutil.c
+@@ -416,9 +416,13 @@ static int sugov_init(struct cpufreq_policy *policy)
+ if (policy->governor_data)
+ return -EBUSY;
+
++ cpufreq_enable_fast_switch(policy);
++
+ sg_policy = sugov_policy_alloc(policy);
+- if (!sg_policy)
+- return -ENOMEM;
++ if (!sg_policy) {
++ ret = -ENOMEM;
++ goto disable_fast_switch;
++ }
+
+ mutex_lock(&global_tunables_lock);
+
+@@ -456,8 +460,6 @@ static int sugov_init(struct cpufreq_policy *policy)
+
+ out:
+ mutex_unlock(&global_tunables_lock);
+-
+- cpufreq_enable_fast_switch(policy);
+ return 0;
+
+ fail:
+@@ -468,6 +470,10 @@ static int sugov_init(struct cpufreq_policy *policy)
+ mutex_unlock(&global_tunables_lock);
+
+ sugov_policy_free(sg_policy);
++
++disable_fast_switch:
++ cpufreq_disable_fast_switch(policy);
++
+ pr_err("initialization failed (error %d)\n", ret);
+ return ret;
+ }
+@@ -478,8 +484,6 @@ static void sugov_exit(struct cpufreq_policy *policy)
+ struct sugov_tunables *tunables = sg_policy->tunables;
+ unsigned int count;
+
+- cpufreq_disable_fast_switch(policy);
+-
+ mutex_lock(&global_tunables_lock);
+
+ count = gov_attr_set_put(&tunables->attr_set, &sg_policy->tunables_hook);
+@@ -490,6 +494,7 @@ static void sugov_exit(struct cpufreq_policy *policy)
+ mutex_unlock(&global_tunables_lock);
+
+ sugov_policy_free(sg_policy);
++ cpufreq_disable_fast_switch(policy);
+ }
+
+ static int sugov_start(struct cpufreq_policy *policy)
+--
+1.9.1
+