On Wed, Sep 29, 2010 at 06:02:14PM -0600, Eric Blake wrote: > * src/qemu/qemu_conf.c (qemuParseCommandLineSmp): Distinguish > between vcpus and maxvcpus, for new enough qemu. > * tests/qemuargv2xmltest.c (mymain): Add new test. > * tests/qemuxml2argvtest.c (mymain): Likewise. > * tests/qemuxml2xmltest.c (mymain): Likewise. > * tests/qemuxml2argvdata/qemuxml2argv-smp.args: New file. > --- > > This manages just the command-line aspects needed for qemu 0.12+; > so far, I haven't done anything about 0.11 or earlier (on those > versions of qemu, maxvcpus and vcpus must always be equal). > > src/qemu/qemu_conf.c | 13 +++++++++---- > tests/qemuargv2xmltest.c | 2 ++ > tests/qemuxml2argvdata/qemuxml2argv-smp.args | 1 + > tests/qemuxml2argvtest.c | 2 ++ > tests/qemuxml2xmltest.c | 2 ++ > 5 files changed, 16 insertions(+), 4 deletions(-) > create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-smp.args > > diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c > index 5169e3c..f387a5d 100644 > --- a/src/qemu/qemu_conf.c > +++ b/src/qemu/qemu_conf.c > @@ -3616,6 +3616,8 @@ qemuBuildSmpArgStr(const virDomainDefPtr def, > virBufferVSprintf(&buf, "%u", def->vcpus); > > if ((qemuCmdFlags & QEMUD_CMD_FLAG_SMP_TOPOLOGY)) { ohhh, we were already loking for this option at run time ... > + if (def->vcpus != def->maxvcpus) > + virBufferVSprintf(&buf, ",maxcpus=%u", def->maxvcpus); > /* sockets, cores, and threads are either all zero > * or all non-zero, thus checking one of them is enough */ > if (def->cpu && def->cpu->sockets) { > @@ -3628,12 +3630,12 @@ qemuBuildSmpArgStr(const virDomainDefPtr def, > virBufferVSprintf(&buf, ",cores=%u", 1); > virBufferVSprintf(&buf, ",threads=%u", 1); > } > - } > - if (def->vcpus != def->maxvcpus) { > + } else if (def->vcpus != def->maxvcpus) { > virBufferFreeAndReset(&buf); > + // FIXME - consider hot-unplugging cpus after boot Please no C++ like comments :-) > qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", > _("setting current vcpu count less than maximum is " > - "not supported yet")); > + "not supported with this QEMU binary")); > return NULL; > } > ACK, Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list