Intel P-state driver
--------------------

This driver provides an interface to control the P state selection for
SandyBridge+ Intel processors.  The driver can operate two different
modes based on the processor model, legacy mode and Hardware P state (HWP)
mode.

In legacy mode, the Intel P-state implements two internal governors,
performance and powersave, that differ from the general cpufreq governors of
the same name (the general cpufreq governors implement target(), whereas the
internal Intel P-state governors implement setpolicy()).  The internal
performance governor sets the max_perf_pct and min_perf_pct to 100; that is,
the governor selects the highest available P state to maximize the performance
of the core.  The internal powersave governor selects the appropriate P state
based on the current load on the CPU.

In HWP mode P state selection is implemented in the processor
itself. The driver provides the interfaces between the cpufreq core and
the processor to control P state selection based on user preferences
and reporting frequency to the cpufreq core.  In this mode the
internal Intel P-state governor code is disabled.

In addition to the interfaces provided by the cpufreq core for
controlling frequency the driver provides sysfs files for
controlling P state selection. These files have been added to
/sys/devices/system/cpu/intel_pstate/

      max_perf_pct: limits the maximum P state that will be requested by
      the driver stated as a percentage of the available performance. The
      available (P states) performance may be reduced by the no_turbo
      setting described below.

      min_perf_pct: limits the minimum P state that will be  requested by
      the driver stated as a percentage of the max (non-turbo)
      performance level.

      no_turbo: limits the driver to selecting P states below the turbo
      frequency range.

      turbo_pct: displays the percentage of the total performance that
      is supported by hardware that is in the turbo range.  This number
      is independent of whether turbo has been disabled or not.

      num_pstates: displays the number of pstates that are supported
      by hardware.  This number is independent of whether turbo has
      been disabled or not.

For contemporary Intel processors, the frequency is controlled by the
processor itself and the P-states exposed to software are related to
performance levels.  The idea that frequency can be set to a single
frequency is fiction for Intel Core processors. Even if the scaling
driver selects a single P state the actual frequency the processor
will run at is selected by the processor itself.

For legacy mode debugfs files have also been added to allow tuning of
the internal governor algorythm. These files are located at
/sys/kernel/debug/pstate_snb/ These files are NOT present in HWP mode.

      deadband
      d_gain_pct
      i_gain_pct
      p_gain_pct
      sample_rate_ms
      setpoint

There is one more sysfs attribute in /sys/devices/system/cpu/intel_pstate/
that can be used for controlling the operation mode of the driver:

      status: Three settings are possible:
      "off"     - The driver is not in use at this time.
      "active"  - The driver works as a P-state governor (default).
      "passive" - The driver works as a regular cpufreq one and collaborates
                  with the generic cpufreq governors (it sets P-states as
                  requested by those governors).
      The current setting is returned by reads from this attribute.  Writing one
      of the above strings to it changes the operation mode as indicated by that
      string, if possible.  If HW-managed P-states (HWP) are enabled, it is not
      possible to change the driver's operation mode and attempts to write to
      this attribute will fail.
