From: Peter Krempa Date: Fri, 15 Aug 2014 14:28:58 +0000 (+0200) Subject: qemu: cpu: unplug: Remove vcpu pinning on cold cpu unplug X-Git-Tag: v1.2.8-rc1~97 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=60df621f75af6e29d721d95a738c8860eed5590e;p=thirdparty%2Flibvirt.git qemu: cpu: unplug: Remove vcpu pinning on cold cpu unplug Remove the pinning info when removing to CPU, otherwise when the VM will be started our code will try to pin non-existing vcpus as the definition wasn't updated. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1129372 --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index ac0717c6f9..bff8f77bbc 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4277,6 +4277,7 @@ qemuDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus, qemuAgentCPUInfoPtr cpuinfo = NULL; int ncpuinfo; qemuDomainObjPrivatePtr priv; + size_t i; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG | @@ -4386,6 +4387,12 @@ qemuDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus, } if (flags & VIR_DOMAIN_AFFECT_CONFIG) { + /* remove vcpupin entries for vcpus that were unplugged */ + if (nvcpus < persistentDef->vcpus) { + for (i = persistentDef->vcpus; i >= nvcpus; i--) + virDomainVcpuPinDel(persistentDef, i); + } + if (maximum) { persistentDef->maxvcpus = nvcpus; if (nvcpus < persistentDef->vcpus)