diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 76f965d58b..26ebf763f0 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -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;