]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Use saner defaults for domain capabilities
authorJiri Denemark <jdenemar@redhat.com>
Tue, 15 Nov 2016 19:02:56 +0000 (20:02 +0100)
committerJiri Denemark <jdenemar@redhat.com>
Fri, 25 Nov 2016 19:34:26 +0000 (20:34 +0100)
When domain capabilities were introduced we did not have enough data to
decide whether KVM works on the host or not and thus working legacy/VFIO
device assignment was used as a witness. Now that we know whether KVM
was enabled when probing QEMU capabilities (and thus we know it's
working), we can use this knowledge to provide better default value for
virttype.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
src/qemu/qemu_driver.c

index 76f965d58b736e4136e34ac56d4091ee5c66c99c..26ebf763f012353f9f47b2f64a2dcd5e018489f3 100644 (file)
@@ -18718,7 +18718,7 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn,
     char *ret = NULL;
     virQEMUDriverPtr driver = conn->privateData;
     virQEMUCapsPtr qemuCaps = NULL;
-    int virttype; /* virDomainVirtType */
+    int virttype = VIR_DOMAIN_VIRT_NONE;
     virDomainCapsPtr domCaps = NULL;
     int arch = virArchFromHost(); /* virArch */
     virQEMUDriverConfigPtr cfg = NULL;
@@ -18734,12 +18734,6 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn,
     if (!(caps = virQEMUDriverGetCapabilities(driver, false)))
         goto cleanup;
 
-    if (qemuHostdevHostSupportsPassthroughLegacy() ||
-        qemuHostdevHostSupportsPassthroughVFIO())
-        virttype = VIR_DOMAIN_VIRT_KVM;
-    else
-        virttype = VIR_DOMAIN_VIRT_QEMU;
-
     if (virttype_str &&
         (virttype = virDomainVirtTypeFromString(virttype_str)) < 0) {
         virReportError(VIR_ERR_INVALID_ARG,
@@ -18803,6 +18797,13 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn,
         machine = virQEMUCapsGetDefaultMachine(qemuCaps);
     }
 
+    if (virttype == VIR_DOMAIN_VIRT_NONE) {
+        if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM))
+            virttype = VIR_DOMAIN_VIRT_KVM;
+        else
+            virttype = VIR_DOMAIN_VIRT_QEMU;
+    }
+
     if (!(domCaps = virDomainCapsNew(emulatorbin, machine, arch, virttype)))
         goto cleanup;