Re: [PATCH v3] cpufreq/amd-pstate: Skip auto_sel write when it already matches the mode
From: K Prateek Nayak
Date: Fri Oct 16 2026 - 02:45:08 EST
Hello Wentao,
On 10/16/2026 11:21 AM, Wentao Guan wrote:
> Hi,
>
>> Since commit 9dfd13f80c85 ("cpufreq/amd-pstate: Toggle auto_sel in active
>> mode on shared memory systems"), shmem_init_perf() programs
>> AUTONOMOUS_SELECTION_ENABLE unconditionally, including in active mode.
>>
>> Platforms that exclusively support autonomous selection report this field
>> as an Integer of 1, as required by the ACPI specification, instead of as a
>> register descriptor. cppc_get_reg_val() reads such a field back
>> successfully, but cppc_set_reg_val() rejects the write with -EOPNOTSUPP
>> because the entry is not an ACPI_TYPE_BUFFER.
>>
>> shmem_init_perf() propagates that error, so every amd_pstate_epp_cpu_init()
>> fails, cpufreq_register_driver() ends up with an empty policy list and
>> returns -ENODEV, and amd-pstate refuses to load at all:
>>
>> amd_pstate: failed to set auto_sel, ret: -95
>> amd_pstate: Failed to initialize CPU 0: -95
>> ...
>> amd_pstate: failed to register with return -19
>>
>> Skip the write when the register already holds the value the requested mode
>> needs. Active and guided mode are fixed on these platforms, which report
>> auto_sel as 1, while passive mode still fails to load on a platform that
>> cannot disable autonomous selection, exactly as it did before the
>> offending commit.
>>
>> Fixes: 9dfd13f80c85 ("cpufreq/amd-pstate: Toggle auto_sel in active mode on shared memory systems")
>> Cc: stable@xxxxxxxxxxxxxxx
>> Reviewed-by: K Prateek Nayak <kprateek.nayak@xxxxxxx>
>> Tested-by: K Prateek Nayak <kprateek.nayak@xxxxxxx>
>> Tested-by: LFRon <ronforever@xxxxxxxxxxx>
>> Signed-off-by: Wentao Guan <guanwentao@xxxxxxxxxxxxx>
>> ---
>> changelog v3:
>> Include the K Prateek Nayak reviews to remove that ternary op base on current
>> condition now have.
>>
>> v2 link:
>> https://lore.kernel.org/stable/c3eb86bd-70a6-4bb2-8eff-b2a3c0817514@xxxxxxx/#R
>> changelog v2:
>> Accecpt and tested the K Prateek Nayak reviews.
>> v1 link:
>> https://lore.kernel.org/stable/20260918054808.48999-1-guanwentao@xxxxxxxxxxxxx/#R
>> ---
>> ---
>> drivers/cpufreq/amd-pstate.c | 6 ++++--
>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c
>> index 80d99ba1902c9..2d1f5292d1738 100644
>> --- a/drivers/cpufreq/amd-pstate.c
>> +++ b/drivers/cpufreq/amd-pstate.c
>> @@ -532,8 +532,10 @@ static int shmem_init_perf(struct amd_cpudata *cpudata)
>> return 0;
>> }
>>
>> - ret = cppc_set_auto_sel(cpudata->cpu,
>> - (cppc_state == AMD_PSTATE_PASSIVE) ? 0 : 1);
>> + if ((cppc_state != AMD_PSTATE_PASSIVE) == auto_sel)
>> + return 0;
>> +
>> + ret = cppc_set_auto_sel(cpudata->cpu, !auto_sel);
>>
>> if (ret)
>> pr_warn("failed to set auto_sel, ret: %d\n", ret);
>> --
>> 2.30.2
>
> Ping? Nearly a month passed, anything update?
On a similar issue here
https://lore.kernel.org/all/851316da-2cfa-4a22-947c-1838532d05cf@xxxxxxx/
Mario had recently pointed out that this might be a BIOS issue on
systems that may have MSR interface but running an old BIOS that does
not advertise the CPUID bit.
Could you please share your system details here and check if you are
running the latest BIOS from your vendor?
--
Thanks and Regards,
Prateek