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, }; @@ -381,7 +391,7 @@ static QEMUMachine pc_machine_v1_1 = { .name = "pc-1.1", .desc = "Standard PC", .init = pc_init_pci, - .max_cpus = 255, + .max_cpus = MAX_VCPUS, .compat_props = (GlobalProperty[]) { PC_COMPAT_1_1, { /* end of list */ } @@ -416,7 +426,7 @@ static QEMUMachine pc_machine_v1_0 = { .name = "pc-1.0", .desc = "Standard PC", .init = pc_init_pci, - .max_cpus = 255, + .max_cpus = MAX_VCPUS, .compat_props = (GlobalProperty[]) { PC_COMPAT_1_0, { /* end of list */ } @@ -431,7 +441,7 @@ static QEMUMachine pc_machine_v0_15 = { .name = "pc-0.15", .desc = "Standard PC", .init = pc_init_pci, - .max_cpus = 255, + .max_cpus = MAX_VCPUS, .compat_props = (GlobalProperty[]) { PC_COMPAT_0_15, { /* end of list */ } @@ -463,7 +473,7 @@ static QEMUMachine pc_machine_v0_14 = { .name = "pc-0.14", .desc = "Standard PC", .init = pc_init_pci, - .max_cpus = 255, + .max_cpus = MAX_VCPUS, .compat_props = (GlobalProperty[]) { PC_COMPAT_0_14, { @@ -496,7 +506,7 @@ static QEMUMachine pc_machine_v0_13 = { .name = "pc-0.13", .desc = "Standard PC", .init = pc_init_pci_no_kvmclock, - .max_cpus = 255, + .max_cpus = MAX_VCPUS, .compat_props = (GlobalProperty[]) { PC_COMPAT_0_13, { @@ -533,7 +543,7 @@ static QEMUMachine pc_machine_v0_12 = { .name = "pc-0.12", .desc = "Standard PC", .init = pc_init_pci_no_kvmclock, - .max_cpus = 255, + .max_cpus = MAX_VCPUS, .compat_props = (GlobalProperty[]) { PC_COMPAT_0_12, { @@ -566,7 +576,7 @@ static QEMUMachine pc_machine_v0_11 = { .name = "pc-0.11", .desc = "Standard PC, qemu 0.11", .init = pc_init_pci_no_kvmclock, - .max_cpus = 255, + .max_cpus = MAX_VCPUS, .compat_props = (GlobalProperty[]) { PC_COMPAT_0_11, { @@ -587,7 +597,7 @@ static QEMUMachine pc_machine_v0_10 = { .name = "pc-0.10", .desc = "Standard PC, qemu 0.10", .init = pc_init_pci_no_kvmclock, - .max_cpus = 255, + .max_cpus = MAX_VCPUS, .compat_props = (GlobalProperty[]) { PC_COMPAT_0_11, { -- 1.7.8.6