[libvirt] [PATCH 4/4] virQEMUCapsHasPCIMultiBus: assume true if we have no version information

John Ferlan jferlan at redhat.com
Thu Nov 30 15:10:26 UTC 2017



On 11/29/2017 09:58 AM, Ján Tomko wrote:
> 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.

Does this only matter for user aliases?  I'm not totally clear on the
"scope" of the duration of the problem...

Would this be essentially a partial revert of 3a37af1e4 ?

John

> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1518148
> ---
>  src/qemu/qemu_capabilities.c | 16 ++++++++--------
>  src/qemu/qemu_capspriv.h     |  4 ----
>  tests/qemuxml2argvtest.c     |  5 -----
>  3 files changed, 8 insertions(+), 17 deletions(-)
> 
> diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
> index c9d0a66d8..7b52d1a71 100644
> --- a/src/qemu/qemu_capabilities.c
> +++ b/src/qemu/qemu_capabilities.c
> @@ -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;
> diff --git a/src/qemu/qemu_capspriv.h b/src/qemu/qemu_capspriv.h
> index f23995ec6..219daa362 100644
> --- a/src/qemu/qemu_capspriv.h
> +++ b/src/qemu/qemu_capspriv.h
> @@ -56,10 +56,6 @@ virQEMUCapsSetArch(virQEMUCapsPtr qemuCaps,
>                     virArch arch);
>  
>  void
> -virQEMUCapsSetVersion(virQEMUCapsPtr qemuCaps,
> -                      unsigned int version);
> -
> -void
>  virQEMUCapsInitHostCPUModel(virQEMUCapsPtr qemuCaps,
>                              virArch hostArch,
>                              virDomainVirtType type);
> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
> index d3ac569e2..385a54615 100644
> --- a/tests/qemuxml2argvtest.c
> +++ b/tests/qemuxml2argvtest.c
> @@ -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;
>  
> 




More information about the libvir-list mailing list