OSDN Git Service

platform/x86: Add support for Uncore frequency control
authorSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Mon, 13 Jan 2020 18:00:14 +0000 (10:00 -0800)
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 13 Jan 2020 19:02:36 +0000 (21:02 +0200)
commit49a474c7ba51ce999803c269adbad778495589af
tree3bda1a5ce75ecb3c3400b59860e7830bb474b2e6
parent26e66a0cf258d413bd64095b0fea6e34f9e46587
platform/x86: Add support for Uncore frequency control

Some server users set limits on the uncore frequency using MSR 620H, while
running latency sensitive workloads. Here uncore frequency controls
RING/LLC(last-level cache) clocks.

But MSR control is not always possible from the user space, so this driver
provides a sysfs interface to set max and min frequency limits. This MSR
620H is a die scoped in multi-die system or package scoped in non multi-die
systems.

When this driver is loaded, a new directory is created under
 /sys/devices/system/cpu.

For example on a two package Skylake server:
$cd /sys/devices/system/cpu/intel_uncore_frequency

$ls
package_00_die_00 package_01_die_00

$ls package_00_die_00
max_freq_khz  min_freq_khz  initial_max_freq_khz
initial_min_freq_khz

$grep . *
    max_freq_khz:2400000
    min_freq_khz:1200000
    initial_max_freq_khz:2400000
    initial_min_freq_khz:1200000

Here, initial_max_freq_khz and initial_min_freq_khz are read only
attributes to show power up or initial values of max and min frequencies
respectively. Other attributes are read-write, so that users can modify.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
drivers/platform/x86/Kconfig
drivers/platform/x86/Makefile
drivers/platform/x86/intel-uncore-frequency.c [new file with mode: 0644]