diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2016-02-22 06:06:44 -0500 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-03-09 08:41:12 -0500 |
commit | 242aa883a64d8c54cfeee47f3603b21bc705e081 (patch) | |
tree | 73aa1224af144ab32edafa14089d870863c46cc7 /drivers/cpufreq | |
parent | a1317e091ab1386812ee8ab4e3bbd89f2811bc74 (diff) |
cpufreq: Remove 'policy->governor_enabled'
The entire sequence of events (like INIT/START or STOP/EXIT) for which
cpufreq_governor() is called, is guaranteed to be protected by
policy->rwsem now.
The additional checks that were added earlier (as we were forced to drop
policy->rwsem before calling cpufreq_governor() for EXIT event), aren't
required anymore.
Over that, they weren't sufficient really. They just take care of
START/STOP events, but not INIT/EXIT and the state machine was never
maintained properly by them.
Kill the unnecessary checks and policy->governor_enabled field.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/cpufreq')
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 17 |
1 files changed, 0 insertions, 17 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index b3d05a905034..dd568aaf2728 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -2010,17 +2010,6 @@ static int cpufreq_governor(struct cpufreq_policy *policy, unsigned int event) | |||
2010 | 2010 | ||
2011 | pr_debug("%s: for CPU %u, event %u\n", __func__, policy->cpu, event); | 2011 | pr_debug("%s: for CPU %u, event %u\n", __func__, policy->cpu, event); |
2012 | 2012 | ||
2013 | if ((policy->governor_enabled && event == CPUFREQ_GOV_START) | ||
2014 | || (!policy->governor_enabled | ||
2015 | && (event == CPUFREQ_GOV_LIMITS || event == CPUFREQ_GOV_STOP))) { | ||
2016 | return -EBUSY; | ||
2017 | } | ||
2018 | |||
2019 | if (event == CPUFREQ_GOV_STOP) | ||
2020 | policy->governor_enabled = false; | ||
2021 | else if (event == CPUFREQ_GOV_START) | ||
2022 | policy->governor_enabled = true; | ||
2023 | |||
2024 | ret = policy->governor->governor(policy, event); | 2013 | ret = policy->governor->governor(policy, event); |
2025 | 2014 | ||
2026 | if (!ret) { | 2015 | if (!ret) { |
@@ -2028,12 +2017,6 @@ static int cpufreq_governor(struct cpufreq_policy *policy, unsigned int event) | |||
2028 | policy->governor->initialized++; | 2017 | policy->governor->initialized++; |
2029 | else if (event == CPUFREQ_GOV_POLICY_EXIT) | 2018 | else if (event == CPUFREQ_GOV_POLICY_EXIT) |
2030 | policy->governor->initialized--; | 2019 | policy->governor->initialized--; |
2031 | } else { | ||
2032 | /* Restore original values */ | ||
2033 | if (event == CPUFREQ_GOV_STOP) | ||
2034 | policy->governor_enabled = true; | ||
2035 | else if (event == CPUFREQ_GOV_START) | ||
2036 | policy->governor_enabled = false; | ||
2037 | } | 2020 | } |
2038 | 2021 | ||
2039 | if (((event == CPUFREQ_GOV_POLICY_INIT) && ret) || | 2022 | if (((event == CPUFREQ_GOV_POLICY_INIT) && ret) || |