Rafael J. Wysocki 001c76f05b cpufreq: intel_pstate: Generic governors support
There may be reasons to use generic cpufreq governors (eg. schedutil)
on Intel platforms instead of the intel_pstate driver's internal
governor.  However, that currently can only be done by disabling
intel_pstate altogether and using the acpi-cpufreq driver instead
of it, which is subject to limitations.

First of all, acpi-cpufreq only works on systems where the _PSS
object is present in the ACPI tables for all logical CPUs.  Second,
on those systems acpi-cpufreq will only use frequencies listed by
_PSS which may be suboptimal.  In particular, by convention, the
whole turbo range is represented in _PSS as a single P-state and
the frequency assigned to it is greater by 1 MHz than the greatest
non-turbo frequency listed by _PSS.  That may confuse governors to
use turbo frequencies less frequently which may lead to suboptimal
performance.

For this reason, make it possible to use the intel_pstate driver
with generic cpufreq governors as a "normal" cpufreq driver.  That
mode is enforced by adding intel_pstate=passive to the kernel
command line and cannot be disabled at run time.  In that mode,
intel_pstate provides a cpufreq driver interface including
the ->target() and ->fast_switch() callbacks and is listed in
scaling_driver as "intel_cpufreq".

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Tested-by: Doug Smythies <dsmythies@telus.net>
2016-11-21 14:32:32 +01:00
..
2016-10-11 15:06:33 -07:00
2016-10-07 21:23:40 -07:00
2016-10-07 21:34:49 -07:00
2016-10-06 17:13:54 -07:00
2016-10-07 21:23:40 -07:00
2016-10-04 10:56:14 -07:00
2016-10-05 14:50:51 -07:00
2016-10-14 13:43:08 -07:00
2016-10-11 12:52:41 -07:00
2016-09-27 12:33:47 +02:00
2016-10-11 15:06:33 -07:00
2016-10-14 15:17:12 -07:00
2016-10-07 21:23:40 -07:00
2016-10-07 08:35:35 -07:00
2016-10-03 20:17:35 -07:00
2016-10-14 13:43:08 -07:00
2016-10-07 21:23:40 -07:00
2016-10-07 21:23:40 -07:00
2016-10-07 21:23:40 -07:00
2016-10-13 16:52:39 -07:00
2016-09-20 20:57:12 +10:00
2016-10-06 17:03:49 -07:00
2016-10-14 13:13:44 -07:00
2016-10-07 09:28:53 -07:00
2016-10-14 11:37:50 -07:00
2016-10-14 11:07:42 -07:00
2016-10-11 15:06:33 -07:00
2016-10-11 15:06:33 -07:00
2016-09-29 13:36:38 -06:00
2016-10-06 11:19:10 -07:00