diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 0de35efb25..5030ec3a15 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -674,6 +674,7 @@ virNodeDeviceObjUnlock; virDomainNumaCheckABIStability; virDomainNumaEquals; virDomainNumaFree; +virDomainNumaGetCPUCountTotal; virDomainNumaGetMaxCPUID; virDomainNumaGetMemorySize; virDomainNumaGetNodeCount; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 5992492ebd..e5badf637a 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4903,6 +4903,13 @@ qemuDomainSetVcpusFlags(virDomainPtr dom, unsigned int nvcpus, if (persistentDef) { if (flags & VIR_DOMAIN_VCPU_MAXIMUM) { + if (virDomainNumaGetCPUCountTotal(persistentDef->numa) > nvcpus) { + virReportError(VIR_ERR_INVALID_ARG, "%s", + _("Number of CPUs in exceeds the desired " + "maximum vcpu count")); + goto endjob; + } + if (virDomainDefSetVcpusMax(persistentDef, nvcpus) < 0) goto endjob; } else {