qemu requires that the topology equals to the maximum vcpu count.
Document this along with the API to set maximum vcpu count and the XML
element.
Resolves:
https://bugzilla.redhat.com/show_bug.cgi?id=1426220
---
docs/formatdomain.html.in | 5 ++++-
src/libvirt-domain.c | 3 ++-
tools/virsh.pod | 3 ++-
3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index aae5e9c07..b1e38f00e 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -1401,7 +1401,10 @@
virtual CPU provided to the guest. Three non-zero values have to be
given for <code>sockets</code>, <code>cores</code>, and
<code>threads</code>: total number of CPU sockets, number of cores
per
- socket, and number of threads per core, respectively.</dd>
+ socket, and number of threads per core, respectively. Hypervisors may
+ require that the maximum number of vCPUs specified by the
+ <code>cpus</code> element equals to the number of vcpus resulting
+ from the topology.</dd>
<dt><code>feature</code></dt>
<dd>The <code>cpu</code> element can contain zero or more
diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
index 4670c54e5..310b91b37 100644
--- a/src/libvirt-domain.c
+++ b/src/libvirt-domain.c
@@ -7010,7 +7010,8 @@ virDomainSetVcpus(virDomainPtr domain, unsigned int nvcpus)
* CPU limit is altered; generally, this value must be less than or
* equal to virConnectGetMaxVcpus(). Otherwise, this call affects the
* current virtual CPU limit, which must be less than or equal to the
- * maximum limit.
+ * maximum limit. Note that hypervisors may not allow changing the maximum
+ * vcpu count if processor topology is specified.
*
* If @flags includes VIR_DOMAIN_VCPU_GUEST, then the state of processors is
* modified inside the guest instead of the hypervisor. This flag can only
diff --git a/tools/virsh.pod b/tools/virsh.pod
index 9a52d6716..d1030808a 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -2477,7 +2477,8 @@ marked as hotpluggable.
The I<--maximum> flag controls the maximum number of virtual cpus that can
be hot-plugged the next time the domain is booted. As such, it must only be
used with the I<--config> flag, and not with the I<--live> or the
I<--current>
-flag.
+flag. Note that it may not be possible to change the maximum vcpu count if
+the processor topology is specified for the guest.
=item B<setvcpu> I<domain> I<vcpulist> [I<--enable>] |
[I<--disable>]
[[I<--live>] [I<--config>] | [I<--current>]]
--
2.12.2