• L
    tools/power x86_energy_perf_policy: support HWP.EPP · 4beec1d7
    Len Brown 提交于
    x86_energy_perf_policy(8) was created as an example
    of how the user, or upper-level OS, can manage
    MSR_IA32_ENERGY_PERF_BIAS (EPB).
    
    Hardware consults EPB when it makes internal decisions
    balancing energy-saving vs performance.
    For example, should HW quickly or slowly
    transition into and out of power-saving idles states?
    Should HW quickly or slowly ramp frequency up or down
    in response to demand in the turbo-frequency range?
    
    Depending on the processor, EPB may have package, core,
    or CPU thread scope.  As such, the only general policy
    is to write the same value to EPB on every CPU in the system.
    
    Recent platforms add support for Hardware Performance States (HWP).
    HWP effectively extends hardware frequency control from
    the opportunistic turbo-frequency range to control the entire
    range of available processor frequencies.
    
    Just as turbo-mode used EPB, HWP can use EPB to help decicde
    how quickly to ramp frequency and voltage up and down
    in response to changing demand.  Indeed, BDX and BDX-DE,
    the first processors to support HWP, use EPB for this purpose.
    
    Starting in SKL, HWP no longer looks to EPB for influence.
    Instead, it looks in a new MSR specifically for this purpose:
    IA32_HWP_REQUEST.Energy_Performance_Preference (HWP.EPP).
    HWP.EPP is like EPB, except that it is specific to HWP-mode
    frequency selection.  Also, HWP.EPP is defined to have
    per CPU-thread scope.
    
    Starting in SKX, IA32_HWP_REQUEST is augmented by
    IA32_HWP_REQUEST_PKG -- which has the same function, but is
    defined to have package-wide scope.  A new bit in IA32_HWP_REQUEST
    determines if it over-rides the IA32_HWP_REQUEST_PKG or not.
    
    Note that HWP-mode can be enabled in several ways.
    The "in-band" method is for HWP to be exposed in CPUID,
    and for the Linux intel_pstate driver to recognized that,
    and thus enable HWP.  In this case, starting in Linux 4.10, intel_pstate
    exports cpufreq sysfs attribute "energy_performance_preference"
    which can be used to manage HWP.EPP.  This interface can be
    used to set HWP.EPP to these values:
    
    0 performance
    128 balance_performance (default)
    192 balance_power
    255 power
    
    Here, x86_energy_performance_policy is updated to use
    idential strings and values as intel_pstate.
    
    But HWP-mode may also be enabled by firmware before the OS boots,
    and the OS may not be aware of HWP.  In this case, intel_pstate
    is not available to provide sysfs attributes, and x86_energy_perf_policy
    or a similar utility is invaluable for managing HWP.EPP, for
    this utility works the same, no matter if cpufreq is enabled or not.
    Signed-off-by: NLen Brown <len.brown@intel.com>
    4beec1d7
Makefile 719 字节