|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 1/3] x86/cpufreq: Clean up powernow registration
On 15/11/2021 09:27, Roger Pau Monné wrote:
> On Fri, Nov 12, 2021 at 06:28:16PM +0000, Andrew Cooper wrote:
>> powernow_register_driver() is currently written with a K&R type definition;
>> I'm surprised that compilers don't object to a mismatch with its declaration,
>> which is written in an ANSI-C compatible way.
>>
>> Furthermore, its sole caller is cpufreq_driver_init() which is a pre-smp
>> initcall. There are no other online CPUs, and even if there were, checking
>> the BSP's CPUID data $N times is pointless. Simplify registration to only
>> look at the BSP.
> I guess an extra safety would be to add some check for the cpuid bit
> in the AP boot path if the cpufreq driver is enabled.
We already have a number of cases where we expect the system to be
reasonably homogeneous, microcode most notably.
Given that we don't currently check this, I don't think it is worth
changing things.
>> While at it, drop obviously unused includes. Also rewrite the expression in
>> cpufreq_driver_init() for clarity.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
>> ---
>> CC: Jan Beulich <JBeulich@xxxxxxxx>
>> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx>
>> CC: Wei Liu <wl@xxxxxxx>
>> ---
>> xen/arch/x86/acpi/cpufreq/cpufreq.c | 20 +++++++++++++-------
>> xen/arch/x86/acpi/cpufreq/powernow.c | 28 ++++++----------------------
>> 2 files changed, 19 insertions(+), 29 deletions(-)
>>
>> diff --git a/xen/arch/x86/acpi/cpufreq/cpufreq.c
>> b/xen/arch/x86/acpi/cpufreq/cpufreq.c
>> index f1f3c6923fb3..2251c87f9e42 100644
>> --- a/xen/arch/x86/acpi/cpufreq/cpufreq.c
>> +++ b/xen/arch/x86/acpi/cpufreq/cpufreq.c
>> @@ -640,13 +640,19 @@ static int __init cpufreq_driver_init(void)
>> {
>> int ret = 0;
>>
>> - if ((cpufreq_controller == FREQCTL_xen) &&
>> - (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL))
>> - ret = cpufreq_register_driver(&acpi_cpufreq_driver);
>> - else if ((cpufreq_controller == FREQCTL_xen) &&
>> - (boot_cpu_data.x86_vendor &
>> - (X86_VENDOR_AMD | X86_VENDOR_HYGON)))
>> - ret = powernow_register_driver();
>> + if ( cpufreq_controller == FREQCTL_xen )
>> + {
>> + switch ( boot_cpu_data.x86_vendor )
>> + {
>> + case X86_VENDOR_INTEL:
>> + ret = cpufreq_register_driver(&acpi_cpufreq_driver);
>> + break;
>> +
>> + case X86_VENDOR_AMD | X86_VENDOR_HYGON:
> This should be two separate case statements.
>
> With this fixed:
>
> Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
Thanks. I'd actually already found and fixed that bug - clearly I sent
out an old version of the patch.
~Andrew
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |