[PATCH 0/8] ACPI: CPPC: Resource Priority Register support and sysfs interface
From: Lifeng Zheng
Date: Thu Jul 16 2026 - 22:49:08 EST
This series implements support for the CPPC v4 Resource Priority Register
mechanism defined in ACPI 6.6, Section 8.4.6.1.2.7, and exposes it to
userspace via sysfs.
Resource Priority allows OSPM to control the relative priority among
processors for shared resources. The controlled resource types include
processor boost, throttle, L2 cache, L3 cache, and memory bandwidth.
Each Resource Priority group consists of:
- CONTROLLED_RESOURCES: which resource types the group affects
- ENABLE_VALUE / ENABLE_REGISTER: enable/disable the group
- PRIORITY_COUNT / PRIORITY_REGISTER: read/write the priority level
The patch series is organized in three parts:
- patches 1-4 extend the CPPC data structures and _CPC parser to handle
Package-type entries and parse Resource Priority sub-packages into
structured descriptors.
- patches 5-7 refactor existing register I/O helpers to support direct
register access and add accessor functions for Resource Priority
attributes (enable, priority count, priority value).
- patch 8 creates a "resource_priority" sysfs hierarchy under each
cpufreq policy to expose the Resource Priority attributes to userspace.
---
RFC: sysfs placement
The sysfs interface is currently placed under /sys/devices/system/cpu/cpufreq/
(i.e. the cpufreq policy directory). I am unsure whether this is the best
location and would appreciate reviewer feedback.
The concern is that Resource Priority covers resource types beyond CPU
frequency control:
- PROCESSOR_BOOST, PROCESSOR_THROTTLE -- clearly CPU-frequency related
- L2_CACHE, L3_CACHE -- cache partitioning, not frequency
- MEMORY_BANDWIDTH -- memory QoS, not frequency
Placing the attributes under cpufreq makes sense for boost/throttle but
feels semantically wrong for cache and memory bandwidth resources.
I would appreciate feedback on whether cpufreq is the right home for
this interface, or whether a different location would be more appropriate.
Lifeng Zheng (8):
ACPI: CPPC: Prepare cpc_register_resource for Package-type entries
ACPI: CPPC: Refactor element parsing into parse_cpc_element()
ACPI: CPPC: Refactor resource cleanup into free_reg_resource()
ACPI: CPPC: Parse Resource Priority Register entries from _CPC package
ACPI: CPPC: Store optional flag in cpc_register_resource
ACPI: CPPC: Factor out cpc_read_reg() and cpc_write_reg()
ACPI: CPPC: Add Resource Priority accessors
cpufreq: cppc: Expose Resource Priority attributes via sysfs
drivers/acpi/cppc_acpi.c | 729 +++++++++++++++++++++++++++------
drivers/cpufreq/cppc_cpufreq.c | 270 ++++++++++++
include/acpi/cppc_acpi.h | 60 +++
3 files changed, 927 insertions(+), 132 deletions(-)
--
2.33.0