Re: [Regression] 6.11.0-rc1: AMD CPU boot with error when CPPC feature disabled by BIOS

From: David Wang
Date: Tue Jul 30 2024 - 20:26:14 EST


Hi Du,

Thanks for the quick response

At 2024-07-31 01:43:47, "Xiaojian Du" <xiaojidu@xxxxxxx> wrote:
>Hi  David,
>
>CPPC feature is enabled by default in BIOS for new ZENX arch CPU, and
>amd-pstate driver is enabled in new linux kernel.
>
>For your system ,why CPPC is disabled, is it for debug or some special case?

I do not have any special purpose, it is just the default BIOS setup for my old system.

>
>If you want to use legacy acpi cpu driver, you can disable amd-pstate
>driver module in your linux kernel config file and compile a new kernel.
>
>> Those warning message was introduced by commit:
>> bff7d13c190ad98cf4f877189b022c75df4cb383 ("cpufreq: amd-pstate: add debug message while CPPC is supported and disabled by SBIOS)
>> , which make sense.
>>
>> Those error message was introduced by commit:
>> 8f8b42c1fcc939a73b547b172a9ffcb65ef4bf47 ("cpufreq: amd-pstate: optimize the initial frequency values verification")
>> , when CPPC is disabled by BIOS, this error message does not make sense, and the error return-code would abort the driver registeration,
>> but this behavior could be handled earlier when detecting CPPC feature.
>>
>> I feel following changes would make a clean fix: do not register amd_pstate driver when CPPC disabled by BIOS.
>> diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c
>> index 68c616b572f2..b06faea58fd4 100644
>> --- a/drivers/cpufreq/amd-pstate.c
>> +++ b/drivers/cpufreq/amd-pstate.c
>> @@ -1837,8 +1837,6 @@ static bool amd_cppc_supported(void)
>> * If the CPPC feature is disabled in the BIOS for processors that support MSR-based CPPC,
>> * the AMD Pstate driver may not function correctly.
>> * Check the CPPC flag and display a warning message if the platform supports CPPC.
>> - * Note: below checking code will not abort the driver registeration process because of
>> - * the code is added for debugging purposes.
>
>As you see, it is for debug purpose, in some corner case, if CPPC
>feature is disabled, this debug info will help to guide user to
>*re-enable* it.
>
>Target system, including CPU+baseboard+BIOS, is supposed to enable and
>use CPPC feature for better Performance per Watt.

I agree that the warning guide makes total sense, but the *errors* does not, why bother trying and report error when the feature is disabled by BIOS.


>
>> */
>> if (!cpu_feature_enabled(X86_FEATURE_CPPC)) {
>> if (cpu_feature_enabled(X86_FEATURE_ZEN1) || cpu_feature_enabled(X86_FEATURE_ZEN2)) {
>> @@ -1856,6 +1854,7 @@ static bool amd_cppc_supported(void)
>> if (warn)
>> pr_warn_once("The CPPC feature is supported but currently disabled by the BIOS.\n"
>> "Please enable it if your BIOS has the CPPC option.\n");
>> + return false;
>Maybe need a pair of curly brace after this "if(warn)" for your change.
>> return true;
>> }
>>
>>
>>
>> Thanks
>> David
>>