| From: |
| Sumit Gupta <sumitg-AT-nvidia.com> |
| To: |
| <rafael-AT-kernel.org>, <viresh.kumar-AT-linaro.org>, <lenb-AT-kernel.org>, <pierre.gondois-AT-arm.com>, <zhenglifeng1-AT-huawei.com>, <zhanjie9-AT-hisilicon.com>, <mario.limonciello-AT-amd.com>, <saket.dumbre-AT-intel.com>, <linux-acpi-AT-vger.kernel.org>, <linux-kernel-AT-vger.kernel.org>, <linux-pm-AT-vger.kernel.org>, <acpica-devel-AT-lists.linux.dev> |
| Subject: |
| [PATCH v4 0/2] ACPI: CPPC: Add CPPC v4 support (ACPI 6.6) |
| Date: |
| Thu, 28 May 2026 01:16:24 +0530 |
| Message-ID: |
| <20260527194626.185286-1-sumitg@nvidia.com> |
| Cc: |
| <treding-AT-nvidia.com>, <jonathanh-AT-nvidia.com>, <vsethi-AT-nvidia.com>, <ksitaraman-AT-nvidia.com>, <sanjayc-AT-nvidia.com>, <mochs-AT-nvidia.com>, <bbasu-AT-nvidia.com>, <sumitg-AT-nvidia.com> |
| Archive-link: |
| Article |
Add initial kernel support for CPPC v4 (ACPI 6.6, Section 8.4.6),
which extends the _CPC package from 23 to 25 entries with two
optional fields:
- OSPM Nominal Performance (8.4.6.1.2.6): register used by OSPM
to tell the platform what it considers nominal. The platform
classifies performance above this as boost and below as
throttle for power/thermal decisions.
- Resource Priority (8.4.6.1.2.7): Package of Resource Priority
Register Descriptor sub-packages. Full parsing is not yet
implemented; such entries are marked as unsupported.
Patch 1: Add v4 _CPC parsing - validate the 25-entry layout,
restrict the Resource Priority package fallback to that slot
only, and mark the two new registers optional.
Patch 2: Add per-policy sysfs attribute ospm_nominal_freq (kHz)
under cpufreq. Writes are converted to perf and applied to every
CPU in policy->cpus.
---
v3[3] -> v4:
- Patch 2:
- Add a bool cpu_data->ospm_nominal_perf_set to distinguish an
unwritten cache from a valid perf=0 write.
- Switch freq_khz to unsigned int and use kstrtouint().
- Add rollback in store_ospm_nominal_freq() to restore the previous
cached value on a partial multi-CPU write failure.
v2[2] -> v3:
- Patch 1:
- Accept ACPI_TYPE_PACKAGE only at RESOURCE_PRIORITY; abort otherwise.
- Added Reviewed-by from Pierre Gondois.
- Patch 2:
- Sysfs moved from per-CPU acpi_cppc to per-policy cpufreq.
- Read ospm_nominal_freq sysfs input in kHz and convert to perf.
- Cached ospm_nominal_perf moved from cpc_desc to cppc_cpudata.
- Validate input against [Lowest Performance, Nominal Performance]
in cppc_set_ospm_nominal_perf().
- Dropped unconditional init in cppc_cpufreq_cpu_init().
- Remove to skip write if cache matches in cppc_set_ospm_nominal_perf.
- Early -ENODEV return when no CPC descriptor.
- Added ABI documentation at
Documentation/ABI/testing/sysfs-devices-system-cpu.
v1[1] -> v2:
- Patch 1: Added Reviewed-by from Mario Limonciello.
- Patch 2:
- Make ospm_nominal_perf sysfs read-write; cache last write in
cpc_desc and skip redundant register writes.
- Validate input in cppc_set_ospm_nominal_perf.
Sumit Gupta (2):
ACPI: CPPC: Add support for CPPC v4
ACPI: CPPC: Add ospm_nominal_perf support
.../ABI/testing/sysfs-devices-system-cpu | 17 ++++++
drivers/acpi/cppc_acpi.c | 58 ++++++++++++++++--
drivers/cpufreq/cppc_cpufreq.c | 60 +++++++++++++++++++
include/acpi/cppc_acpi.h | 20 ++++++-
4 files changed, 147 insertions(+), 8 deletions(-)
[1] https://lore.kernel.org/lkml/20260427051823.280419-1-sumi...
[2] https://lore.kernel.org/lkml/20260430142430.755437-1-sumi...
[3] https://lore.kernel.org/lkml/20260514194822.1841748-1-sum...
--
2.34.1