On 08.07.2016 18:04, Andrea Bolognani wrote:
If we don't HAVE_LINUX_KVM_H, we can't query /dev/kvm to
discover
the limits on the number of vCPUs, so we report an error and
return a negative value instead.
---
src/util/virhostcpu.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
index 4ff4e72..a33932f 100644
--- a/src/util/virhostcpu.c
+++ b/src/util/virhostcpu.c
@@ -1299,6 +1299,7 @@ virHostCPUGetThreadsPerSubcore(virArch arch ATTRIBUTE_UNUSED)
#endif /* HAVE_LINUX_KVM_H && defined(KVM_CAP_PPC_SMT) */
+#if HAVE_LINUX_KVM_H
int
virHostCPUGetKVMMaxVCPUs(void)
{
@@ -1310,11 +1311,11 @@ virHostCPUGetKVMMaxVCPUs(void)
return -1;
}
-#ifdef KVM_CAP_MAX_VCPUS
+# ifdef KVM_CAP_MAX_VCPUS
/* at first try KVM_CAP_MAX_VCPUS to determine the maximum count */
if ((ret = ioctl(fd, KVM_CHECK_EXTENSION, KVM_CAP_MAX_VCPUS)) > 0)
goto cleanup;
-#endif /* KVM_CAP_MAX_VCPUS */
+# endif /* KVM_CAP_MAX_VCPUS */
/* as a fallback get KVM_CAP_NR_VCPUS (the recommended maximum number of
* vcpus). Note that on most machines this is set to 160. */
@@ -1329,3 +1330,12 @@ virHostCPUGetKVMMaxVCPUs(void)
VIR_FORCE_CLOSE(fd);
return ret;
}
+#else
+int
+virHostCPUGetKVMMaxVCPUs(void)
+{
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("KVM is not supported on this platform"));
Don't mean to bikeshed, but I'd prefer if this were:
virReportSystemError(ENOSYS, ..);
I think it's the common patter we use for non-Linux, non-BSD* platform
stubs. And if you think of it, it really is a property of a system, not
unsupported config on libvirt level. BTW I know that we are not
consistent in the error codes. It's one big mess.
+ return -1;
+}
+#endif /* HAVE_LINUX_KVM_H */
Michal