Commit b3e45fb2 authored by Sumit Gupta's avatar Sumit Gupta Committed by Rafael J. Wysocki
Browse files

ACPI: CPPC: Warn on missing mandatory DESIRED_PERF register

Add a warning during CPPC processor probe if the Desired Performance
register is not supported when it should be.

As per 8.4.6.1.2.3 section of ACPI 6.6 specification,
"The Desired Performance Register is optional only when OSPM indicates
support for CPPC2 in the platform-wide _OSC capabilities and the
Autonomous Selection Enable field is encoded as an Integer with a
value of 1."

In other words:
- In CPPC v1, DESIRED_PERF is mandatory
- In CPPC v2, it becomes optional only when AUTO_SEL_ENABLE is supported

This helps detect firmware configuration issues early during boot.

Link: https://lore.kernel.org/lkml/9fa21599-004a-4af8-acc2-190fd0404e35@nvidia.com/


Suggested-by: default avatarPierre Gondois <pierre.gondois@arm.com>
Signed-off-by: default avatarSumit Gupta <sumitg@nvidia.com>
Reviewed-by: default avatarPierre Gondois <pierre.gondois@arm.com>
Reviewed-by: default avatarLifeng Zheng <zhenglifeng1@huawei.com>
Link: https://patch.msgid.link/20260206142658.72583-3-sumitg@nvidia.com


Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 658fa7b1
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -853,6 +853,16 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr)
	}
	per_cpu(cpu_pcc_subspace_idx, pr->id) = pcc_subspace_id;

	/*
	 * In CPPC v1, DESIRED_PERF is mandatory. In CPPC v2, it is optional
	 * only when AUTO_SEL_ENABLE is supported.
	 */
	if (!CPC_SUPPORTED(&cpc_ptr->cpc_regs[DESIRED_PERF]) &&
	    (!osc_sb_cppc2_support_acked ||
	     !CPC_SUPPORTED(&cpc_ptr->cpc_regs[AUTO_SEL_ENABLE])))
		pr_warn("Desired perf. register is mandatory if CPPC v2 is not supported "
			"or autonomous selection is disabled\n");

	/*
	 * Initialize the remaining cpc_regs as unsupported.
	 * Example: In case FW exposes CPPC v2, the below loop will initialize