Messages in this thread |  | | From | "Natarajan, Janakarajan" <> | | Subject | [PATCHv3 0/6] CPPC optional registers AMD support | | Date | Wed, 10 Jul 2019 18:37:09 +0000 |
| |
CPPC (Collaborative Processor Performance Control) offers optional registers which can be used to tune the system based on energy and/or performance requirements.
Newer AMD processors (>= Family 17h) add support for a subset of these optional CPPC registers, based on ACPI v6.1.
The following are the supported CPPC registers for which sysfs entries are created: * enable (NEW) * max_perf (NEW) * min_perf (NEW) * energy_perf * lowest_perf * nominal_perf * desired_perf (NEW) * feedback_ctrs * auto_sel_enable (NEW) * lowest_nonlinear_perf
First, update cppc_acpi to create sysfs entries only when the optional registers are known to be supported.
Next, a new CPUFreq driver is introduced to enable the OSPM and the userspace to access the newly supported registers through sysfs entries found in /sys/devices/system/cpu/cpu<num>/amd_cpufreq/.
This new CPUFreq driver can only be used by providing a module parameter, amd_cpufreq.cppc_enable=1.
The purpose of exposing the registers via the amd-cpufreq sysfs entries is to allow the userspace to: * Tweak the values to fit its workload. * Apply a profile from AMD's optimization guides.
Profiles will be documented in the performance/optimization guides.
Note: * AMD systems will not have a policy applied in the kernel at this time.
TODO: * Create a linux userspace tool that will help users generate a CPPC profile for their target workload. * Create a general CPPC policy in the kernel.
v1->v2: * Add macro to ensure BUFFER only registers have BUFFER type. * Add support macro to make the right check based on register type. * Remove support checks for registers which are mandatory.
v2->v3: * Introduce new amd-cpufreq driver which will have priority over acpi-cpufreq. * Move new sysfs entries creation to amd-cpufreq.
Janakarajan Natarajan (3): acpi/cppc: Add macros for CPPC register checks acpi/cppc: Ensure only supported CPPC sysfs entries are created drivers/cpufreq: Add a CPUFreq driver for AMD processors (Fam17h and later)
Yazen Ghannam (3): acpi/cppc: Rework cppc_set_perf() to use cppc_regs index acpi/cppc: Add support for optional CPPC registers acpi/cppc: Add support for CPPC Enable register
drivers/acpi/cppc_acpi.c | 244 ++++++++++++++++++++++++++++----- drivers/cpufreq/Kconfig.x86 | 14 ++ drivers/cpufreq/Makefile | 4 +- drivers/cpufreq/amd-cpufreq.c | 233 +++++++++++++++++++++++++++++++ drivers/cpufreq/cppc_cpufreq.c | 6 +- include/acpi/cppc_acpi.h | 11 +- 6 files changed, 474 insertions(+), 38 deletions(-) create mode 100644 drivers/cpufreq/amd-cpufreq.c
-- 2.17.1
|  |