summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPengjie Zhang <zhangpengjie2@huawei.com>2026-03-11 10:13:34 +0300
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2026-03-11 14:34:02 +0300
commitbe473f0591f183990a998edee02161b319047eaa (patch)
tree04ec69a0437d0c45bc689130b8e3274e43415bbc
parent8505bfb4e4eca28ef1b20d3369435ec2d6a125c6 (diff)
downloadlinux-be473f0591f183990a998edee02161b319047eaa.tar.xz
ACPI: CPPC: Fix uninitialized ref variable in cppc_get_perf_caps()
Commit 8505bfb4e4ec ("ACPI: CPPC: Move reference performance to capabilities") introduced a logical error when retrieving the reference performance. On platforms lacking the reference performance register, the fallback logic leaves the local 'ref' variable uninitialized (0). This causes the subsequent sanity check to incorrectly return -EFAULT, breaking amd_pstate initialization. Fix this by assigning 'ref = nom' in the fallback path. Fixes: 8505bfb4e4ec ("ACPI: CPPC: Move reference performance to capabilities") Reported-by: Nathan Chancellor <nathan@kernel.org> Closes: https://lore.kernel.org/all/20260310003026.GA2639793@ax162/ Tested-by: Nathan Chancellor <nathan@kernel.org> Signed-off-by: Pengjie Zhang <zhangpengjie2@huawei.com> [ rjw: Subject tweak ] Link: https://patch.msgid.link/20260311071334.1494960-1-zhangpengjie2@huawei.com Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r--drivers/acpi/cppc_acpi.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
index 07bbf5b366a4..5ad922eb937a 100644
--- a/drivers/acpi/cppc_acpi.c
+++ b/drivers/acpi/cppc_acpi.c
@@ -1407,12 +1407,11 @@ int cppc_get_perf_caps(int cpunum, struct cppc_perf_caps *perf_caps)
* If reference perf register is not supported then we should
* use the nominal perf value
*/
- if (CPC_SUPPORTED(reference_reg)) {
+ if (CPC_SUPPORTED(reference_reg))
cpc_read(cpunum, reference_reg, &ref);
- perf_caps->reference_perf = ref;
- } else {
- perf_caps->reference_perf = nom;
- }
+ else
+ ref = nom;
+ perf_caps->reference_perf = ref;
if (guaranteed_reg->type != ACPI_TYPE_BUFFER ||
IS_NULL_REG(&guaranteed_reg->cpc_entry.reg)) {