diff options
author | Giovanni Gherdovich <ggherdovich@suse.cz> | 2020-01-22 16:16:17 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2020-01-28 21:37:06 +0100 |
commit | 918229cdd5abb50d8a2edfcd8dc6b6bc53afd765 (patch) | |
tree | 12730094c862018d0a80f261b3abe54d7e7f4186 /drivers/cpufreq | |
parent | 298c6f99bf30ef735e79f7f6d086bdfae505d380 (diff) | |
download | linux-918229cdd5abb50d8a2edfcd8dc6b6bc53afd765.tar.gz linux-918229cdd5abb50d8a2edfcd8dc6b6bc53afd765.tar.bz2 linux-918229cdd5abb50d8a2edfcd8dc6b6bc53afd765.zip |
x86/intel_pstate: Handle runtime turbo disablement/enablement in frequency invariance
On some platforms such as the Dell XPS 13 laptop the firmware disables turbo
when the machine is disconnected from AC, and viceversa it enables it again
when it's reconnected. In these cases a _PPC ACPI notification is issued.
The scheduler needs to know freq_max for frequency-invariant calculations.
To account for turbo availability to come and go, record freq_max at boot as
if turbo was available and store it in a helper variable. Use a setter
function to swap between freq_base and freq_max every time turbo goes off or on.
Signed-off-by: Giovanni Gherdovich <ggherdovich@suse.cz>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://lkml.kernel.org/r/20200122151617.531-7-ggherdovich@suse.cz
Diffstat (limited to 'drivers/cpufreq')
-rw-r--r-- | drivers/cpufreq/intel_pstate.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c index d2fa3e9ccd97..abbeeca8bb3b 100644 --- a/drivers/cpufreq/intel_pstate.c +++ b/drivers/cpufreq/intel_pstate.c @@ -922,6 +922,7 @@ static void intel_pstate_update_limits(unsigned int cpu) */ if (global.turbo_disabled_mf != global.turbo_disabled) { global.turbo_disabled_mf = global.turbo_disabled; + arch_set_max_freq_ratio(global.turbo_disabled); for_each_possible_cpu(cpu) intel_pstate_update_max_freq(cpu); } else { |