qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] pc: Fix max_cpus


From: Dunrong Huang
Subject: Re: [Qemu-devel] [PATCH] pc: Fix max_cpus
Date: Mon, 23 Jul 2012 20:33:26 +0800

2012/7/23 Andreas Färber <address@hidden>:
> Am 23.07.2012 12:47, schrieb address@hidden:
>> From: Dunrong Huang <address@hidden>
>>
>> The VCPU count limit in kernel now is 254, defined by KVM_MAX_VCPUS
>> in kernel's header files. But the count limit in QEMU is 255,
>> so QEMU will failed to start if user passes "-enable-kvm" and "-smp 255"
>> to it.
>>
>> This patch intruduces a Macro MAX_VCPUS whose value is KVM_MAX_VCPUS
>> if CONFIG_KVM is defined. If user do not use kvm, set it's value to 255.
>>
>> Signed-off-by: Dunrong Huang <address@hidden>
>> ---
>>  hw/pc_piix.c |   28 +++++++++++++++++++---------
>>  1 files changed, 19 insertions(+), 9 deletions(-)
>>
>> diff --git a/hw/pc_piix.c b/hw/pc_piix.c
>> index 0c0096f..49cda51 100644
>> --- a/hw/pc_piix.c
>> +++ b/hw/pc_piix.c
>> @@ -49,6 +49,16 @@
>>
>>  #define MAX_IDE_BUS 2
>>
>> +#ifndef KVM_MAX_VCPUS
>> +#define KVM_MAX_VCPUS 254
>> +#endif
>> +
>> +#ifdef CONFIG_KVM
>> +#define MAX_VCPUS KVM_MAX_VCPUS
>> +#else
>> +#define MAX_VCPUS 255
>> +#endif
>> +
>>  static const int ide_iobase[MAX_IDE_BUS] = { 0x1f0, 0x170 };
>>  static const int ide_iobase2[MAX_IDE_BUS] = { 0x3f6, 0x376 };
>>  static const int ide_irq[MAX_IDE_BUS] = { 14, 15 };
>> @@ -354,7 +364,7 @@ static QEMUMachine pc_machine_v1_2 = {
>>      .alias = "pc",
>>      .desc = "Standard PC",
>>      .init = pc_init_pci,
>> -    .max_cpus = 255,
>> +    .max_cpus = MAX_VCPUS,
>>      .is_default = 1,
>>  };
>>
> [snip]
>
> This is not so ideal: -enable-kvm is a runtime switch whereas you are
> changing a compile-time limit here. Any chance to change the runtime
> usage of .max_cpus instead? Possibly introducing a helper function?
>

Do you mean do some hacks in smp_parse?
I agree with you, there has codes for checking max_cpus in runtime:
if (max_cpus > 255) { // Should be changed to 254 if enable kvm.
    fprintf(stderr, "Unsupported number of maxcpus\n");
    exit(1);
}

I think we also need to change the hard coded value of .max_cpus from 255
to macro which should be synchronized with KVM_MAX_VCPUS or something else.
> Andreas
>
> --
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
>
>



-- 
Best Regards,

Dunrong Huang



reply via email to

[Prev in Thread] Current Thread [Next in Thread]