[PATCHv2 0/3] ACPI: CPPC: Avoid Desired Performance reads on ACPI 6.6+
Christian Loehle <[email protected]> Wed, 29 Jul 2026 11:02:42 +0100
| Newsgroups | gmane.linux.kernel,gmane.linux.power-management.general,gmane.linux.acpi.devel |
|---|---|
| Message-ID | <[email protected]> |
ACPI 6.6 changed the Optional Attribute of Desired Performance from Read/Write to Write. cppc-cpufreq reads Desired Performance when feedback counters cannot provide a usable sample because some older platforms repurpose the register to report actual delivered performance. Preserve that workaround on systems reporting an older ACPI revision, but do not attempt the read on ACPI 6.6 or later, where firmware no longer promises a readable value and cppc-cpufreq can fall back to its cached OSPM request instead. cppc_get_perf() also reads Desired Performance while populating the control values used during cppc-cpufreq initialization. Its only in-tree caller overwrites that value with highest_perf before the controls are first written, so the value is never consumed. Patches 1 and 2 provide minimal, backportable fixes for the two read paths. Patch 3 simplifies the mainline API by no longer reading Desired Performance through cppc_get_perf() on any ACPI revision. Changes since v1: - Mask the FADT minor revision's errata-generation bits. - Add patch 2 as fix to also avoid reading Desired Performance from cppc_get_perf(), as suggested by Zhongqiu Han. - Add patch 3 to change the API as there's currently no in-tree use of Desired Performance in cppc_get_perf() Christian Loehle (3): ACPI: CPPC: Reject desired_perf reads on ACPI 6.6+ ACPI: CPPC: Skip desired_perf read in cppc_get_perf() ACPI: CPPC: Stop reading desired_perf in cppc_get_perf() drivers/acpi/cppc_acpi.c | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) -- 2.34.1