]> xenbits.xensource.com Git - libvirt.git/commitdiff
virQEMUCapsHasPCIMultiBus: assume true if we have no version information
authorJán Tomko <jtomko@redhat.com>
Wed, 29 Nov 2017 14:05:23 +0000 (15:05 +0100)
committerJán Tomko <jtomko@redhat.com>
Thu, 30 Nov 2017 15:49:05 +0000 (16:49 +0100)
In status XML, we do not store the QEMU version information, we only
format all the capabilities. We dropped QEMU_CAPS_PCI_MULTIBUS
in commit 5b783379 which was released in libvirt 3.2.0.

Therefore the only way of telling if the already running domain
at the time of daemon restart has been started with a QEMU that does
use 'pci.0' or not on PPC is to look at the pci-root controller's
alias. This is not an option if the domain has a user-specified alias
for the pci-root.

Instead of reintroducing the capability, assume 'pci.0' when we have
no version information. That way the only left broken use case would
be the combination of user aliases and very old QEMU.

Partially reverts commit 3a37af1e4.

https://bugzilla.redhat.com/show_bug.cgi?id=1518148

src/qemu/qemu_capabilities.c
src/qemu/qemu_capspriv.h
tests/qemuxml2argvtest.c

index 3da3a0cad5f3c7ca2a9a46ce5ab502ab38faec8b..29714855b06a10858838f442be295772588cb5e0 100644 (file)
@@ -2436,6 +2436,14 @@ bool virQEMUCapsHasPCIMultiBus(virQEMUCapsPtr qemuCaps,
          *     ppce500: 1.6.0
          */
 
+        /* We do not store the qemu version in domain status XML.
+         * Hope the user is using a QEMU new enough to use 'pci.0',
+         * otherwise the results of this function will be wrong
+         * for domains already running at the time of daemon
+         * restart */
+        if (qemuCaps->version == 0)
+            return true;
+
         if (qemuCaps->version >= 2000000)
             return true;
 
@@ -2487,14 +2495,6 @@ virArch virQEMUCapsGetArch(virQEMUCapsPtr qemuCaps)
 }
 
 
-void
-virQEMUCapsSetVersion(virQEMUCapsPtr qemuCaps,
-                      unsigned int version)
-{
-    qemuCaps->version = version;
-}
-
-
 unsigned int virQEMUCapsGetVersion(virQEMUCapsPtr qemuCaps)
 {
     return qemuCaps->version;
index f23995ec6e0aa9acc42364988fbf0a5f863324b9..219daa36294db2b0427db78547b1876a93f697d1 100644 (file)
@@ -55,10 +55,6 @@ void
 virQEMUCapsSetArch(virQEMUCapsPtr qemuCaps,
                    virArch arch);
 
-void
-virQEMUCapsSetVersion(virQEMUCapsPtr qemuCaps,
-                      unsigned int version);
-
 void
 virQEMUCapsInitHostCPUModel(virQEMUCapsPtr qemuCaps,
                             virArch hostArch,
index d3ac569e270f18c8a6f67d6d3987efc44ad9e9b8..385a54615f9925980c6c55bc6158200e483b2ce4 100644 (file)
@@ -384,11 +384,6 @@ testUpdateQEMUCaps(const struct testInfo *info,
 
     virQEMUCapsInitQMPBasicArch(info->qemuCaps);
 
-    /* We need to pretend QEMU 2.0.0 is in use so that pSeries guests
-     * will get the correct alias assigned to their buses.
-     * See virQEMUCapsHasPCIMultiBus() */
-    virQEMUCapsSetVersion(info->qemuCaps, 2000000);
-
     if (testAddCPUModels(info->qemuCaps, info->skipLegacyCPUs) < 0)
         goto cleanup;