2012/7/23 Andreas Färber <afaer...@suse.de>: > Am 23.07.2012 12:47, schrieb riegama...@gmail.com: >> From: Dunrong Huang <riegama...@gmail.com> >> >> 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 <riegama...@gmail.com> >> --- >> 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