RE: [PATCH] ACPI: CPPC: Don't require _OSC if X86_FEATURE_CPPC is supported

From: Yuan, Perry
Date: Mon Jun 27 2022 - 13:26:11 EST


[AMD Official Use Only - General]

Hi Rafael:

> -----Original Message-----
> From: Limonciello, Mario <Mario.Limonciello@xxxxxxx>
> Sent: Tuesday, June 28, 2022 12:59 AM
> To: Limonciello, Mario <Mario.Limonciello@xxxxxxx>; Rafael J. Wysocki
> <rafael@xxxxxxxxxx>; Len Brown <lenb@xxxxxxxxxx>; Pierre Gondois
> <pierre.gondois@xxxxxxx>; Sudeep Holla <sudeep.holla@xxxxxxx>
> Cc: Yuan, Perry <Perry.Yuan@xxxxxxx>; linux-acpi@xxxxxxxxxxxxxxx; linux-
> kernel@xxxxxxxxxxxxxxx
> Subject: [PATCH] ACPI: CPPC: Don't require _OSC if X86_FEATURE_CPPC is
> supported
>
> commit 72f2ecb7ece7 ("ACPI: bus: Set CPPC _OSC bits for all and when
> CPPC_LIB is supported") added support for claiming to support CPPC in _OSC
> on non-Intel platforms.
>
> This unfortunately caused a regression on a vartiety of AMD platforms in the
> field because a number of AMD platforms don't set the `_OSC` bit 5 or 6 to
> indicate CPPC or CPPC v2 support.
>
> As these AMD platforms already claim CPPC support via
> `X86_FEATURE_CPPC`, use this enable this feature rather than requiring the
> `_OSC`.
>
> Fixes: 72f2ecb7ece7 ("Set CPPC _OSC bits for all and when CPPC_LIB is
> supported")
> Reported-by: Perry Yuan <perry.yuan@xxxxxxx>
> Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx>
> ---
> drivers/acpi/cppc_acpi.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c index
> 903528f7e187..5463e6309b9a 100644
> --- a/drivers/acpi/cppc_acpi.c
> +++ b/drivers/acpi/cppc_acpi.c
> @@ -629,6 +629,15 @@ static bool is_cppc_supported(int revision, int
> num_ent)
> return false;
> }
>
> + if (osc_sb_cppc_not_supported) {
> + pr_debug("Firmware missing _OSC support\n"); #ifdef
> CONFIG_X86
> + return boot_cpu_has(X86_FEATURE_CPPC); #else
> + return false;
> +#endif
> + }
> +
> return true;
> }
>

I align with Mario to use his patch to fix the amd pstate driver loading failure issue.
AMD CPUID include the cppc flag to mark the CPPC valid if the _OSC dose not have the CPPC support info added.

Tested-by: Perry Yuan <perry.yuan@xxxxxxx>


> @@ -684,9 +693,6 @@ int acpi_cppc_processor_probe(struct
> acpi_processor *pr)
> acpi_status status;
> int ret = -ENODATA;
>
> - if (osc_sb_cppc_not_supported)
> - return -ENODEV;
> -
> /* Parse the ACPI _CPC table for this CPU. */
> status = acpi_evaluate_object_typed(handle, "_CPC", NULL, &output,
> ACPI_TYPE_PACKAGE);
> --
> 2.34.1