]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ACPI: CPPC: Fix missing PCC check for guaranteed_perf
authorPengjie Zhang <zhangpengjie2@huawei.com>
Wed, 10 Dec 2025 13:22:27 +0000 (21:22 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jan 2026 12:09:45 +0000 (13:09 +0100)
commit 6ea3a44cef28add2d93b1ef119d84886cb1e3c9b upstream.

The current implementation overlooks the 'guaranteed_perf'
register in this check.

If the Guaranteed Performance register is located in the PCC
subspace, the function currently attempts to read it without
acquiring the lock and without sending the CMD_READ doorbell
to the firmware. This can result in reading stale data.

Fixes: 29523f095397 ("ACPI / CPPC: Add support for guaranteed performance")
Signed-off-by: Pengjie Zhang <zhangpengjie2@huawei.com>
Cc: 4.20+ <stable@vger.kernel.org> # 4.20+
[ rjw: Subject and changelog edits ]
Link: https://patch.msgid.link/20251210132227.1988380-1-zhangpengjie2@huawei.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/acpi/cppc_acpi.c

index 7ede4a504d272061c06370af15d397ba37b2626b..0387b293ea76a03637a11f804ad22b7fd2dda112 100644 (file)
@@ -1198,7 +1198,8 @@ int cppc_get_perf_caps(int cpunum, struct cppc_perf_caps *perf_caps)
        /* Are any of the regs PCC ?*/
        if (CPC_IN_PCC(highest_reg) || CPC_IN_PCC(lowest_reg) ||
                CPC_IN_PCC(lowest_non_linear_reg) || CPC_IN_PCC(nominal_reg) ||
-               CPC_IN_PCC(low_freq_reg) || CPC_IN_PCC(nom_freq_reg)) {
+               CPC_IN_PCC(low_freq_reg) || CPC_IN_PCC(nom_freq_reg) ||
+               CPC_IN_PCC(guaranteed_reg)) {
                if (pcc_ss_id < 0) {
                        pr_debug("Invalid pcc_ss_id\n");
                        return -ENODEV;