aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq/intel_pstate.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/cpufreq/intel_pstate.c')
-rw-r--r--drivers/cpufreq/intel_pstate.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index b599c7318aab..e2191a570ade 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -179,6 +179,7 @@ struct vid_data {
179 * based on the MSR_IA32_MISC_ENABLE value and whether or 179 * based on the MSR_IA32_MISC_ENABLE value and whether or
180 * not the maximum reported turbo P-state is different from 180 * not the maximum reported turbo P-state is different from
181 * the maximum reported non-turbo one. 181 * the maximum reported non-turbo one.
182 * @turbo_disabled_s: Saved @turbo_disabled value.
182 * @min_perf_pct: Minimum capacity limit in percent of the maximum turbo 183 * @min_perf_pct: Minimum capacity limit in percent of the maximum turbo
183 * P-state capacity. 184 * P-state capacity.
184 * @max_perf_pct: Maximum capacity limit in percent of the maximum turbo 185 * @max_perf_pct: Maximum capacity limit in percent of the maximum turbo
@@ -187,6 +188,7 @@ struct vid_data {
187struct global_params { 188struct global_params {
188 bool no_turbo; 189 bool no_turbo;
189 bool turbo_disabled; 190 bool turbo_disabled;
191 bool turbo_disabled_s;
190 int max_perf_pct; 192 int max_perf_pct;
191 int min_perf_pct; 193 int min_perf_pct;
192}; 194};
@@ -897,6 +899,25 @@ static void intel_pstate_update_policies(void)
897 cpufreq_update_policy(cpu); 899 cpufreq_update_policy(cpu);
898} 900}
899 901
902static void intel_pstate_update_limits(unsigned int cpu)
903{
904 mutex_lock(&intel_pstate_driver_lock);
905
906 update_turbo_state();
907 /*
908 * If turbo has been turned on or off globally, policy limits for
909 * all CPUs need to be updated to reflect that.
910 */
911 if (global.turbo_disabled_s != global.turbo_disabled) {
912 global.turbo_disabled_s = global.turbo_disabled;
913 intel_pstate_update_policies();
914 } else {
915 cpufreq_update_policy(cpu);
916 }
917
918 mutex_unlock(&intel_pstate_driver_lock);
919}
920
900/************************** sysfs begin ************************/ 921/************************** sysfs begin ************************/
901#define show_one(file_name, object) \ 922#define show_one(file_name, object) \
902 static ssize_t show_##file_name \ 923 static ssize_t show_##file_name \
@@ -2138,6 +2159,7 @@ static int __intel_pstate_cpu_init(struct cpufreq_policy *policy)
2138 /* cpuinfo and default policy values */ 2159 /* cpuinfo and default policy values */
2139 policy->cpuinfo.min_freq = cpu->pstate.min_pstate * cpu->pstate.scaling; 2160 policy->cpuinfo.min_freq = cpu->pstate.min_pstate * cpu->pstate.scaling;
2140 update_turbo_state(); 2161 update_turbo_state();
2162 global.turbo_disabled_s = global.turbo_disabled;
2141 policy->cpuinfo.max_freq = global.turbo_disabled ? 2163 policy->cpuinfo.max_freq = global.turbo_disabled ?
2142 cpu->pstate.max_pstate : cpu->pstate.turbo_pstate; 2164 cpu->pstate.max_pstate : cpu->pstate.turbo_pstate;
2143 policy->cpuinfo.max_freq *= cpu->pstate.scaling; 2165 policy->cpuinfo.max_freq *= cpu->pstate.scaling;
@@ -2182,6 +2204,7 @@ static struct cpufreq_driver intel_pstate = {
2182 .init = intel_pstate_cpu_init, 2204 .init = intel_pstate_cpu_init,
2183 .exit = intel_pstate_cpu_exit, 2205 .exit = intel_pstate_cpu_exit,
2184 .stop_cpu = intel_pstate_stop_cpu, 2206 .stop_cpu = intel_pstate_stop_cpu,
2207 .update_limits = intel_pstate_update_limits,
2185 .name = "intel_pstate", 2208 .name = "intel_pstate",
2186}; 2209};
2187 2210
@@ -2316,6 +2339,7 @@ static struct cpufreq_driver intel_cpufreq = {
2316 .init = intel_cpufreq_cpu_init, 2339 .init = intel_cpufreq_cpu_init,
2317 .exit = intel_pstate_cpu_exit, 2340 .exit = intel_pstate_cpu_exit,
2318 .stop_cpu = intel_cpufreq_stop_cpu, 2341 .stop_cpu = intel_cpufreq_stop_cpu,
2342 .update_limits = intel_pstate_update_limits,
2319 .name = "intel_cpufreq", 2343 .name = "intel_cpufreq",
2320}; 2344};
2321 2345