[libvirt] [PATCH] qemu: fix QEMU_CAPS_NO_ACPI detection

Li Zhang zhlcindy at gmail.com
Fri Dec 21 14:07:39 UTC 2012


On Fri, Dec 21, 2012 at 9:38 PM, Ján Tomko <jtomko at redhat.com> wrote:

> In commit c4bbaaf8, caps->arch was checked uninitialized, rendering the
> whole check useless.
>
> This patch moves the conditional setting of QEMU_CAPS_NO_ACPI to
> qemuCapsInitQMP, and removes the no longer needed exception for S390.
>
>
Will it get QEMU_CAPS_NO_ACPI capability by QMP if S390 doesn't support
ACPI?
I test it on PPC, it won't get this capability by QMP.

Thanks.

It also clears the flag for all non-x86 archs instead of just S390 in
> qemuCapsInitHelp.
> ---
>  src/qemu/qemu_capabilities.c |   29 ++++++++---------------------
>  1 files changed, 8 insertions(+), 21 deletions(-)
>
> diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
> index 167cdb2..e0d0c2a 100644
> --- a/src/qemu/qemu_capabilities.c
> +++ b/src/qemu/qemu_capabilities.c
> @@ -2175,13 +2175,11 @@ qemuCapsInitHelp(qemuCapsPtr caps, uid_t runUid,
> gid_t runGid)
>      if (caps->arch == VIR_ARCH_X86_64 ||
>          caps->arch == VIR_ARCH_I686) {
>          qemuCapsSet(caps, QEMU_CAPS_PCI_MULTIBUS);
> -    }
> -
> -    /* S390 and probably other archs do not support no-acpi -
> -       maybe the qemu option parsing should be re-thought. */
> -    if (caps->arch == VIR_ARCH_S390 ||
> -        caps->arch == VIR_ARCH_S390X)
> +    } else {
> +        /* -no-acpi is not supported on other archs
> +         * even if qemu reports it in -help */
>          qemuCapsClear(caps, QEMU_CAPS_NO_ACPI);
> +    }
>
>      /* qemuCapsExtractDeviceStr will only set additional caps if qemu
>       * understands the 0.13.0+ notion of "-device driver,".  */
> @@ -2260,13 +2258,6 @@ qemuCapsInitQMPBasic(qemuCapsPtr caps)
>      qemuCapsSet(caps, QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC);
>      qemuCapsSet(caps, QEMU_CAPS_NO_SHUTDOWN);
>      qemuCapsSet(caps, QEMU_CAPS_DRIVE_CACHE_UNSAFE);
> -
> -    /* ACPI is only supported on x86, PPC or
> -     * other platforms don't support it*/
> -    if (caps->arch == VIR_ARCH_I686 ||
> -        caps->arch == VIR_ARCH_X86_64)
> -        qemuCapsSet(caps, QEMU_CAPS_NO_ACPI);
> -
>      qemuCapsSet(caps, QEMU_CAPS_FSDEV_READONLY);
>      qemuCapsSet(caps, QEMU_CAPS_VIRTIO_BLK_SG_IO);
>      qemuCapsSet(caps, QEMU_CAPS_DRIVE_COPY_ON_READ);
> @@ -2402,16 +2393,12 @@ qemuCapsInitQMP(qemuCapsPtr caps,
>      }
>      VIR_FREE(archstr);
>
> -    /* Currently only x86_64 and i686 support PCI-multibus. */
> +    /* Currently only x86_64 and i686 support PCI-multibus and -no-acpi.
> */
>      if (caps->arch == VIR_ARCH_X86_64 ||
> -        caps->arch == VIR_ARCH_I686)
> +        caps->arch == VIR_ARCH_I686) {
>          qemuCapsSet(caps, QEMU_CAPS_PCI_MULTIBUS);
> -
> -    /* S390 and probably other archs do not support no-acpi -
> -       maybe the qemu option parsing should be re-thought. */
> -    if (caps->arch == VIR_ARCH_S390 ||
> -        caps->arch == VIR_ARCH_S390X)
> -        qemuCapsClear(caps, QEMU_CAPS_NO_ACPI);
> +        qemuCapsSet(caps, QEMU_CAPS_NO_ACPI);
> +    }
>
>      if (qemuCapsProbeQMPCommands(caps, mon) < 0)
>          goto cleanup;
> --
> 1.7.8.6
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
>



-- 

Best Regards
-Li
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20121221/1855356b/attachment-0001.htm>


More information about the libvir-list mailing list