diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 0de35efb258528984e3792114091ef2e09708063..5030ec3a1521930f15111918843d33e767848ec5 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 5992492ebddc747d9fb72d9e714026e23fb0f027..e5badf637af641a75d073bc0657789cc5da38721 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 {