[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <cover.1562781484.git.Janakarajan.Natarajan@amd.com>
Date: Wed, 10 Jul 2019 18:37:09 +0000
From: "Natarajan, Janakarajan" <Janakarajan.Natarajan@....com>
To: "linux-acpi@...r.kernel.org" <linux-acpi@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-pm@...r.kernel.org" <linux-pm@...r.kernel.org>,
"devel@...ica.org" <devel@...ica.org>
CC: "Rafael J . Wysocki" <rjw@...ysocki.net>,
Len Brown <lenb@...nel.org>,
Viresh Kumar <viresh.kumar@...aro.org>,
Robert Moore <robert.moore@...el.com>,
Erik Schmauss <erik.schmauss@...el.com>,
"Ghannam, Yazen" <Yazen.Ghannam@....com>,
"Natarajan, Janakarajan" <Janakarajan.Natarajan@....com>
Subject: [PATCHv3 0/6] CPPC optional registers AMD support
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
Powered by blists - more mailing lists