From 0cf2ad925d4c4258d08e85e80700d6b1163fff2c Mon Sep 17 00:00:00 2001 Message-Id: <0cf2ad925d4c4258d08e85e80700d6b1163fff2c@dist-git> From: Peter Krempa Date: Fri, 26 Aug 2016 15:45:27 -0400 Subject: [PATCH] qemu: driver: Validate configuration when setting maximum vcpu count Partially fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1370066 https://bugzilla.redhat.com/show_bug.cgi?id=1097930 https://bugzilla.redhat.com/show_bug.cgi?id=1224341 Setting vcpu count when cpu topology is specified may result into an invalid configuration. Since the topology can't be modified, reject the setting if it doesn't match the requested topology. This will allow fixing the topology in case it was broken. (cherry picked from commit 802fac97ec8c8bd5438ec5bcd4d13edb03b00fc2) --- src/qemu/qemu_driver.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index c8c7aee..8081417 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4736,6 +4736,18 @@ qemuDomainSetVcpusMax(virQEMUDriverPtr driver, goto cleanup; } + if (persistentDef && persistentDef->cpu && persistentDef->cpu->sockets) { + /* allow setting a valid vcpu count for the topology so an invalid + * setting may be corrected via this API */ + if (nvcpus != persistentDef->cpu->sockets * + persistentDef->cpu->cores * + persistentDef->cpu->threads) { + virReportError(VIR_ERR_INVALID_ARG, "%s", + _("CPU topology doesn't match the desired vcpu count")); + goto cleanup; + } + } + if (virDomainDefSetVcpusMax(persistentDef, nvcpus, driver->xmlopt) < 0) goto cleanup; -- 2.10.0