|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 05/15] xen/x86: introduce "cpufreq=amd-cppc" xen cmdline
On 26.03.2025 09:35, Penny, Zheng wrote:
>> -----Original Message-----
>> From: Jan Beulich <jbeulich@xxxxxxxx>
>> Sent: Monday, March 24, 2025 11:26 PM
>>
>> On 06.03.2025 09:39, Penny Zheng wrote:
>>> @@ -514,5 +515,14 @@ acpi_cpufreq_driver = {
>>>
>>> int __init acpi_cpufreq_register(void) {
>>> - return cpufreq_register_driver(&acpi_cpufreq_driver);
>>> + int ret;
>>> +
>>> + ret = cpufreq_register_driver(&acpi_cpufreq_driver);
>>> + if ( ret )
>>> + return ret;
>>> +
>>> + if ( IS_ENABLED(CONFIG_AMD) )
>>> + xen_processor_pmbits &= ~XEN_PROCESSOR_PM_CPPC;
>>
>> What's the purpose of the if() here?
>
> After cpufreq driver properly registered, I'd like XEN_PROCESSOR_PM_PX and
> XEN_PROCESSOR_PM_CPPC
> being exclusive value to represent the actual underlying registered driver.
> As users could define something like "cpufreq=amd-cppc,xen", which implies
> both XEN_PROCESSOR_PM_PX and XEN_PROCESSOR_PM_CPPC
> got set in parsing logic. With amd-cppc failing to register, we are falling
> back to legacy ones. Then XEN_PROCESSOR_PM_CPPC needs to clear.
Looks like you try to explain the &= when my question was about the if().
I understand the purpose of the &=. What I don't understand is why it needs
to be conditional.
>>> --- a/xen/include/acpi/cpufreq/cpufreq.h
>>> +++ b/xen/include/acpi/cpufreq/cpufreq.h
>>> @@ -28,6 +28,7 @@ enum cpufreq_xen_opt {
>>> CPUFREQ_none,
>>> CPUFREQ_xen,
>>> CPUFREQ_hwp,
>>> + CPUFREQ_amd_cppc,
>>> };
>>> extern enum cpufreq_xen_opt cpufreq_xen_opts[2];
>>
>> I'm pretty sure I pointed out before that this array needs to grow, now that
>> you add a
>> 3rd kind of handling.
>>
>
> Hmmm, but the CPUFREQ_hwp and CPUFREQ_amd_cppc are incompatible options.
> I thought cpufreq_xen_opts[] shall reflect available choices on their
> hardware.
> Even if users define "cpufreq=hwp;amd-cppc;xen", in Intel platform,
> cpufreq_xen_opts[] shall
> contain CPUFREQ_hwp and CPUFREQ_xen, while in amd platform,
> cpufreq_xen_opts[] shall
> contain CPUFREQ_amd_cppc and CPUFREQ_xen
Maybe I misread the code, but the impression I got was that
"cpufreq=hwp;amd-cppc;xen"
would populate 3 slots of the array (with one of "hwp" and "amd-cppc"
necessarily not
working, leading to the next one to be tried).
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |