x86/intel_pstate: Handle runtime turbo disablement/enablement in frequency invariance
authorGiovanni Gherdovich <ggherdovich@suse.cz>
Wed, 22 Jan 2020 15:16:17 +0000 (16:16 +0100)
committerIngo Molnar <mingo@kernel.org>
Tue, 28 Jan 2020 20:37:06 +0000 (21:37 +0100)
commit918229cdd5abb50d8a2edfcd8dc6b6bc53afd765
tree12730094c862018d0a80f261b3abe54d7e7f4186
parent298c6f99bf30ef735e79f7f6d086bdfae505d380
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
arch/x86/include/asm/topology.h
arch/x86/kernel/smpboot.c
drivers/cpufreq/intel_pstate.c