Commit be473f05 authored by Pengjie Zhang's avatar Pengjie Zhang Committed by Rafael J. Wysocki
Browse files

ACPI: CPPC: Fix uninitialized ref variable in cppc_get_perf_caps()



Commit 8505bfb4 ("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: 8505bfb4 ("ACPI: CPPC: Move reference performance to capabilities")
Reported-by: default avatarNathan Chancellor <nathan@kernel.org>
Closes: https://lore.kernel.org/all/20260310003026.GA2639793@ax162/


Tested-by: default avatarNathan Chancellor <nathan@kernel.org>
Signed-off-by: default avatarPengjie Zhang <zhangpengjie2@huawei.com>
[ rjw: Subject tweak ]
Link: https://patch.msgid.link/20260311071334.1494960-1-zhangpengjie2@huawei.com


Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 8505bfb4
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -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);
	else
		ref = nom;
	perf_caps->reference_perf = ref;
	} else {
		perf_caps->reference_perf = nom;
	}

	if (guaranteed_reg->type != ACPI_TYPE_BUFFER  ||
	    IS_NULL_REG(&guaranteed_reg->cpc_entry.reg)) {