[libvirt] [PATCH 0/4] qemu: ACPI and UEFI fixes

Changes from [RFC]: * Add patches 3 and 4. [RFC] https://www.redhat.com/archives/libvir-list/2017-March/msg00347.html Andrea Bolognani (4): qemu: Advertise ACPI support for aarch64 guests tests: Initialize basic capabilities properly qemu: Enforce ACPI, UEFI requirements tests: Test ACPI, UEFI requirements src/qemu/qemu_capabilities.c | 30 +++++++++++++++++----- src/qemu/qemu_command.c | 20 ++++++++++++++- .../caps_2.6.0-gicv2.aarch64.xml | 1 + .../caps_2.6.0-gicv3.aarch64.xml | 1 + .../qemuxml2argv-aarch64-aavmf-virtio-mmio.args | 1 + .../qemuxml2argv-aarch64-aavmf-virtio-mmio.xml | 1 - ....args => qemuxml2argv-aarch64-acpi-nouefi.args} | 9 ++++--- ...gh.xml => qemuxml2argv-aarch64-acpi-nouefi.xml} | 18 ++++++------- .../qemuxml2argv-aarch64-acpi-uefi.args | 22 ++++++++++++++++ ...ough.xml => qemuxml2argv-aarch64-acpi-uefi.xml} | 17 ++++++------ .../qemuxml2argv-aarch64-cpu-passthrough.args | 1 + .../qemuxml2argv-aarch64-cpu-passthrough.xml | 1 - ...rgs => qemuxml2argv-aarch64-noacpi-nouefi.args} | 13 +++++----- ....xml => qemuxml2argv-aarch64-noacpi-nouefi.xml} | 21 +++++++-------- .../qemuxml2argv-aarch64-noacpi-uefi.args | 23 +++++++++++++++++ ...gh.xml => qemuxml2argv-aarch64-noacpi-uefi.xml} | 20 ++++++--------- .../qemuxml2argv-aarch64-video-virtio-gpu-pci.args | 1 + .../qemuxml2argv-aarch64-video-virtio-gpu-pci.xml | 3 --- ...l2argv-aarch64-virt-2.6-virtio-pci-default.args | 1 + ...ml2argv-aarch64-virt-2.6-virtio-pci-default.xml | 1 - .../qemuxml2argv-aarch64-virt-default-nic.args | 1 + .../qemuxml2argv-aarch64-virt-default-nic.xml | 3 --- .../qemuxml2argv-aarch64-virt-virtio.args | 1 + .../qemuxml2argv-aarch64-virt-virtio.xml | 1 - .../qemuxml2argv-aarch64-virtio-pci-default.args | 1 + .../qemuxml2argv-aarch64-virtio-pci-default.xml | 1 - ...l2argv-aarch64-virtio-pci-manual-addresses.args | 1 + ...ml2argv-aarch64-virtio-pci-manual-addresses.xml | 1 - .../qemuxml2argv-balloon-ccw-deflate.args | 1 - .../qemuxml2argv-balloon-mmio-deflate.args | 1 + .../qemuxml2argv-balloon-mmio-deflate.xml | 1 - .../qemuxml2argv-console-sclp.args | 1 - .../qemuxml2argv-console-virtio-ccw.args | 1 - .../qemuxml2argv-console-virtio-s390.args | 1 - .../qemuxml2argv-cpu-s390-features.args | 1 - .../qemuxml2argv-cpu-s390-zEC12.args | 1 - .../qemuxml2argv-disk-virtio-ccw-many.args | 1 - .../qemuxml2argv-disk-virtio-ccw.args | 1 - .../qemuxml2argv-disk-virtio-s390.args | 1 - .../qemuxml2argv-disk-virtio-scsi-ccw.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-fs9p-ccw.args | 1 - .../qemuxml2argv-hostdev-scsi-vhost-scsi-ccw.args | 1 - .../qemuxml2argv-hugepages-numa.args | 1 + .../qemuxml2argv-iothreads-disk-virtio-ccw.args | 1 - .../qemuxml2argv-iothreads-virtio-scsi-ccw.args | 1 - .../qemuxml2argv-machine-aeskeywrap-off-cap.args | 1 - .../qemuxml2argv-machine-aeskeywrap-off-caps.args | 1 - .../qemuxml2argv-machine-aeskeywrap-on-cap.args | 1 - .../qemuxml2argv-machine-aeskeywrap-on-caps.args | 1 - .../qemuxml2argv-machine-deakeywrap-off-cap.args | 1 - .../qemuxml2argv-machine-deakeywrap-off-caps.args | 1 - .../qemuxml2argv-machine-deakeywrap-on-cap.args | 1 - .../qemuxml2argv-machine-deakeywrap-on-caps.args | 1 - .../qemuxml2argv-machine-keywrap-none-caps.args | 1 - .../qemuxml2argv-machine-keywrap-none.args | 1 - .../qemuxml2argv-memory-hotplug-ppc64-nonuma.args | 1 - .../qemuxml2argv-net-virtio-ccw.args | 1 - .../qemuxml2argv-net-virtio-s390.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-ppc-dtb.args | 1 - .../qemuxml2argv-ppce500-serial.args | 1 - .../qemuxml2argv-pseries-basic.args | 1 - .../qemuxml2argv-pseries-cpu-compat.args | 1 - .../qemuxml2argv-pseries-cpu-exact.args | 1 - .../qemuxml2argv-pseries-cpu-le.args | 1 - .../qemuxml2argv-pseries-nvram.args | 1 - .../qemuxml2argv-pseries-panic-missing.args | 1 - .../qemuxml2argv-pseries-panic-no-address.args | 1 - .../qemuxml2argv-pseries-usb-default.args | 1 - .../qemuxml2argv-pseries-usb-kbd.args | 1 - .../qemuxml2argv-pseries-usb-multi.args | 1 - .../qemuxml2argv-pseries-vio-user-assigned.args | 1 - .../qemuxml2argvdata/qemuxml2argv-pseries-vio.args | 1 - .../qemuxml2argv-q35-acpi-nouefi.args | 21 +++++++++++++++ .../qemuxml2argv-q35-acpi-nouefi.xml | 27 +++++++++++++++++++ .../qemuxml2argv-q35-acpi-uefi.args | 22 ++++++++++++++++ .../qemuxml2argv-q35-acpi-uefi.xml | 26 +++++++++++++++++++ .../qemuxml2argv-q35-noacpi-nouefi.args | 22 ++++++++++++++++ .../qemuxml2argv-q35-noacpi-nouefi.xml | 24 +++++++++++++++++ .../qemuxml2argv-q35-noacpi-uefi.xml | 23 +++++++++++++++++ .../qemuxml2argv-q35-virt-manager-basic.args | 1 + ...muxml2argv-s390-allow-bogus-usb-controller.args | 1 - .../qemuxml2argv-s390-allow-bogus-usb-none.args | 1 - .../qemuxml2argv-s390-panic-missing.args | 1 - .../qemuxml2argv-s390-panic-no-address.args | 1 - .../qemuxml2argv-virtio-rng-ccw.args | 1 - .../qemuxml2argv-watchdog-diag288.args | 1 - tests/qemuxml2argvtest.c | 30 ++++++++++++++++++++-- .../qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml | 1 - ...qemuxml2xmlout-aarch64-video-virtio-gpu-pci.xml | 1 - .../qemuxml2xmlout-aarch64-virtio-pci-default.xml | 1 - ...2xmlout-aarch64-virtio-pci-manual-addresses.xml | 1 - 91 files changed, 339 insertions(+), 126 deletions(-) copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-cpu-passthrough.args => qemuxml2argv-aarch64-acpi-nouefi.args} (55%) copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-cpu-passthrough.xml => qemuxml2argv-aarch64-acpi-nouefi.xml} (59%) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-uefi.args copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-cpu-passthrough.xml => qemuxml2argv-aarch64-acpi-uefi.xml} (63%) copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-cpu-passthrough.args => qemuxml2argv-aarch64-noacpi-nouefi.args} (50%) copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-cpu-passthrough.xml => qemuxml2argv-aarch64-noacpi-nouefi.xml} (57%) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-uefi.args copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-cpu-passthrough.xml => qemuxml2argv-aarch64-noacpi-uefi.xml} (61%) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-uefi.xml -- 2.7.4

So far, libvirt has assumed that only x86 supports ACPI, but that's inaccurate since aarch64 supports it too. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1429509 --- src/qemu/qemu_capabilities.c | 28 ++++++++++++++++------ .../caps_2.6.0-gicv2.aarch64.xml | 1 + .../caps_2.6.0-gicv3.aarch64.xml | 1 + 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 5a3b4ac..4ec34f8 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1038,13 +1038,17 @@ virQEMUCapsInitGuestFromBinary(virCapsPtr caps, machines = NULL; nmachines = 0; + } + if ((ARCH_IS_X86(guestarch) || guestarch == VIR_ARCH_AARCH64) && + virCapabilitiesAddGuestFeature(guest, "acpi", true, true) == NULL) { + goto cleanup; } if (ARCH_IS_X86(guestarch) && - (virCapabilitiesAddGuestFeature(guest, "acpi", true, true) == NULL || - virCapabilitiesAddGuestFeature(guest, "apic", true, false) == NULL)) + virCapabilitiesAddGuestFeature(guest, "apic", true, false) == NULL) { goto cleanup; + } if ((guestarch == VIR_ARCH_I686) && (virCapabilitiesAddGuestFeature(guest, "pae", true, false) == NULL || @@ -4122,10 +4126,15 @@ virQEMUCapsInitHelp(virQEMUCapsPtr qemuCaps, uid_t runUid, gid_t runGid, const c qmperr) < 0) goto cleanup; - /* -no-acpi is not supported on non-x86 - * even if qemu reports it in -help */ - if (!ARCH_IS_X86(qemuCaps->arch)) + /* Older QEMU versions reported -no-acpi in the output of -help even + * though it was not supported by the architecture. The issue has since + * been fixed, but to maintain compatibility with all release we still + * need to filter out the capability for architectures that we know + * don't support the feature, eg. anything but x86 and aarch64 */ + if (!ARCH_IS_X86(qemuCaps->arch) && + qemuCaps->arch != VIR_ARCH_AARCH64) { virQEMUCapsClear(qemuCaps, QEMU_CAPS_NO_ACPI); + } /* virQEMUCapsExtractDeviceStr will only set additional caps if qemu * understands the 0.13.0+ notion of "-device driver,". */ @@ -4222,9 +4231,14 @@ virQEMUCapsInitArchQMPBasic(virQEMUCapsPtr qemuCaps, goto cleanup; } - /* ACPI/HPET/KVM PIT are x86 specific */ - if (ARCH_IS_X86(qemuCaps->arch)) { + /* ACPI only works on x86 and aarch64 */ + if (ARCH_IS_X86(qemuCaps->arch) || + qemuCaps->arch == VIR_ARCH_AARCH64) { virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_ACPI); + } + + /* HPET and KVM PIT are x86 specific */ + if (ARCH_IS_X86(qemuCaps->arch)) { virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_HPET); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_KVM_PIT); } diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml index 0aed651..b64a6f8 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml @@ -40,6 +40,7 @@ <flag name='no-shutdown'/> <flag name='cache-unsafe'/> <flag name='ich9-ahci'/> + <flag name='no-acpi'/> <flag name='fsdev-readonly'/> <flag name='virtio-blk-pci.scsi'/> <flag name='drive-copy-on-read'/> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml index 1041a12..46e368f 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml @@ -40,6 +40,7 @@ <flag name='no-shutdown'/> <flag name='cache-unsafe'/> <flag name='ich9-ahci'/> + <flag name='no-acpi'/> <flag name='fsdev-readonly'/> <flag name='virtio-blk-pci.scsi'/> <flag name='drive-copy-on-read'/> -- 2.7.4

On 03/09/2017 12:37 PM, Andrea Bolognani wrote:
So far, libvirt has assumed that only x86 supports ACPI, but that's inaccurate since aarch64 supports it too.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1429509 --- src/qemu/qemu_capabilities.c | 28 ++++++++++++++++------ .../caps_2.6.0-gicv2.aarch64.xml | 1 + .../caps_2.6.0-gicv3.aarch64.xml | 1 + 3 files changed, 23 insertions(+), 7 deletions(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 5a3b4ac..4ec34f8 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1038,13 +1038,17 @@ virQEMUCapsInitGuestFromBinary(virCapsPtr caps,
machines = NULL; nmachines = 0; + }
+ if ((ARCH_IS_X86(guestarch) || guestarch == VIR_ARCH_AARCH64) && + virCapabilitiesAddGuestFeature(guest, "acpi", true, true) == NULL) { + goto cleanup; }
if (ARCH_IS_X86(guestarch) && - (virCapabilitiesAddGuestFeature(guest, "acpi", true, true) == NULL || - virCapabilitiesAddGuestFeature(guest, "apic", true, false) == NULL)) + virCapabilitiesAddGuestFeature(guest, "apic", true, false) == NULL) { goto cleanup; + }
if ((guestarch == VIR_ARCH_I686) && (virCapabilitiesAddGuestFeature(guest, "pae", true, false) == NULL || @@ -4122,10 +4126,15 @@ virQEMUCapsInitHelp(virQEMUCapsPtr qemuCaps, uid_t runUid, gid_t runGid, const c qmperr) < 0) goto cleanup;
- /* -no-acpi is not supported on non-x86 - * even if qemu reports it in -help */ - if (!ARCH_IS_X86(qemuCaps->arch)) + /* Older QEMU versions reported -no-acpi in the output of -help even + * though it was not supported by the architecture. The issue has since + * been fixed, but to maintain compatibility with all release we still
"releases"
+ * need to filter out the capability for architectures that we know + * don't support the feature, eg. anything but x86 and aarch64 */ + if (!ARCH_IS_X86(qemuCaps->arch) && + qemuCaps->arch != VIR_ARCH_AARCH64) { virQEMUCapsClear(qemuCaps, QEMU_CAPS_NO_ACPI); + }
Some day maybe we'll be able to stop parsing the help output. Still makes me wonder is AARCH64 even support on those older versions and thus is this necessary? IDC either way as I suppose this is preventative or "more complete".
/* virQEMUCapsExtractDeviceStr will only set additional caps if qemu * understands the 0.13.0+ notion of "-device driver,". */ @@ -4222,9 +4231,14 @@ virQEMUCapsInitArchQMPBasic(virQEMUCapsPtr qemuCaps, goto cleanup; }
- /* ACPI/HPET/KVM PIT are x86 specific */ - if (ARCH_IS_X86(qemuCaps->arch)) { + /* ACPI only works on x86 and aarch64 */ + if (ARCH_IS_X86(qemuCaps->arch) || + qemuCaps->arch == VIR_ARCH_AARCH64) { virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_ACPI); + } + + /* HPET and KVM PIT are x86 specific */ + if (ARCH_IS_X86(qemuCaps->arch)) { virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_HPET); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_KVM_PIT); }
Considering on what's coming in patch 2, this would be better as a virQEMUCapsSetFirmwareCaps? "utility" function... That way the added comments in both places referencing the other place could be dropped. John
diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml index 0aed651..b64a6f8 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0-gicv2.aarch64.xml @@ -40,6 +40,7 @@ <flag name='no-shutdown'/> <flag name='cache-unsafe'/> <flag name='ich9-ahci'/> + <flag name='no-acpi'/> <flag name='fsdev-readonly'/> <flag name='virtio-blk-pci.scsi'/> <flag name='drive-copy-on-read'/> diff --git a/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml index 1041a12..46e368f 100644 --- a/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.6.0-gicv3.aarch64.xml @@ -40,6 +40,7 @@ <flag name='no-shutdown'/> <flag name='cache-unsafe'/> <flag name='ich9-ahci'/> + <flag name='no-acpi'/> <flag name='fsdev-readonly'/> <flag name='virtio-blk-pci.scsi'/> <flag name='drive-copy-on-read'/>

On Mon, 2017-03-27 at 08:03 -0400, John Ferlan wrote: [...]
+ /* Older QEMU versions reported -no-acpi in the output of -help even + * though it was not supported by the architecture. The issue has since + * been fixed, but to maintain compatibility with all release we still "releases"
Good catch!
+ * need to filter out the capability for architectures that we know + * don't support the feature, eg. anything but x86 and aarch64 */ + if (!ARCH_IS_X86(qemuCaps->arch) && + qemuCaps->arch != VIR_ARCH_AARCH64) { virQEMUCapsClear(qemuCaps, QEMU_CAPS_NO_ACPI); + } Some day maybe we'll be able to stop parsing the help output. Still makes me wonder is AARCH64 even support on those older versions and thus is this necessary? IDC either way as I suppose this is preventative or "more complete".
Probably not, but I don't think having different arch-specific handling in the two code paths is a good idea: we should stay consistent, if anything not to confuse our future selves :) [...]
@@ -4222,9 +4231,14 @@ virQEMUCapsInitArchQMPBasic(virQEMUCapsPtr qemuCaps, goto cleanup; } - /* ACPI/HPET/KVM PIT are x86 specific */ - if (ARCH_IS_X86(qemuCaps->arch)) { + /* ACPI only works on x86 and aarch64 */ + if (ARCH_IS_X86(qemuCaps->arch) || + qemuCaps->arch == VIR_ARCH_AARCH64) { virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_ACPI); + } + + /* HPET and KVM PIT are x86 specific */ + if (ARCH_IS_X86(qemuCaps->arch)) { virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_HPET); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_KVM_PIT); } Considering on what's coming in patch 2, this would be better as a virQEMUCapsSetFirmwareCaps? "utility" function... That way the added comments in both places referencing the other place could be dropped.
HPET and KVM PIT are not firmware-related, though. How about I move setting the arch based on the monitor to a separate virQEMUCapsInitQMPArch() and leave only setting the actual arch-dependent capabilities in this function? -- Andrea Bolognani / Red Hat / Virtualization

On 03/27/2017 09:57 AM, Andrea Bolognani wrote:
On Mon, 2017-03-27 at 08:03 -0400, John Ferlan wrote: [...]
+ /* Older QEMU versions reported -no-acpi in the output of -help even + * though it was not supported by the architecture. The issue has since + * been fixed, but to maintain compatibility with all release we still
"releases"
Good catch!
+ * need to filter out the capability for architectures that we know + * don't support the feature, eg. anything but x86 and aarch64 */ + if (!ARCH_IS_X86(qemuCaps->arch) && + qemuCaps->arch != VIR_ARCH_AARCH64) { virQEMUCapsClear(qemuCaps, QEMU_CAPS_NO_ACPI); + }
Some day maybe we'll be able to stop parsing the help output. Still makes me wonder is AARCH64 even support on those older versions and thus is this necessary? IDC either way as I suppose this is preventative or "more complete".
Probably not, but I don't think having different arch-specific handling in the two code paths is a good idea: we should stay consistent, if anything not to confuse our future selves :)
[...]
That's fine...
@@ -4222,9 +4231,14 @@ virQEMUCapsInitArchQMPBasic(virQEMUCapsPtr qemuCaps, goto cleanup; }
- /* ACPI/HPET/KVM PIT are x86 specific */ - if (ARCH_IS_X86(qemuCaps->arch)) { + /* ACPI only works on x86 and aarch64 */ + if (ARCH_IS_X86(qemuCaps->arch) || + qemuCaps->arch == VIR_ARCH_AARCH64) { virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_ACPI); + } + + /* HPET and KVM PIT are x86 specific */ + if (ARCH_IS_X86(qemuCaps->arch)) { virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_HPET); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_KVM_PIT); }
Considering on what's coming in patch 2, this would be better as a virQEMUCapsSetFirmwareCaps? "utility" function... That way the added comments in both places referencing the other place could be dropped.
HPET and KVM PIT are not firmware-related, though.
How about I move setting the arch based on the monitor to a separate virQEMUCapsInitQMPArch() and leave only setting the actual arch-dependent capabilities in this function?
I think if "all" the lines were in a single API it would reduce the chance that some future self would have to have to (or be told to) keep this in sync with testUpdateQEMUCaps. While PIT (Programmable? Interval Timer) and HPET (High Precision Event Timer) aren't necessarily "firmware" type things they got lumped together with the APCI and well are at least "related" to a degree... One gsearch lands on http://wiki.osdev.org/HPET Maybe "Firmware" is a poor selection of names on my part, but it was as close as I could get. John

On Mon, 2017-03-27 at 10:26 -0400, John Ferlan wrote: [...]
Considering on what's coming in patch 2, this would be better as a virQEMUCapsSetFirmwareCaps? "utility" function... That way the added comments in both places referencing the other place could be dropped. HPET and KVM PIT are not firmware-related, though. How about I move setting the arch based on the monitor to a separate virQEMUCapsInitQMPArch() and leave only setting the actual arch-dependent capabilities in this function? I think if "all" the lines were in a single API it would reduce the chance that some future self would have to have to (or be told to) keep this in sync with testUpdateQEMUCaps.
Sorry, maybe I was not clear enough: I like your idea of moving those to a separate function and calling that function from the test suite instead of duplicating code! The only thing I'm questioning is the name. The attached patch should give you an idea of the direction I'm heading: virQEMUCapsInitQMPArch() would only be called from the library code, while virQEMUCapsInitArchQMPBasic() would be called both there and in the test suite. Does that look reasonable? -- Andrea Bolognani / Red Hat / Virtualization

On 03/27/2017 10:39 AM, Andrea Bolognani wrote:
On Mon, 2017-03-27 at 10:26 -0400, John Ferlan wrote: [...]
Considering on what's coming in patch 2, this would be better as a virQEMUCapsSetFirmwareCaps? "utility" function... That way the added comments in both places referencing the other place could be dropped.
HPET and KVM PIT are not firmware-related, though.
How about I move setting the arch based on the monitor to a separate virQEMUCapsInitQMPArch() and leave only setting the actual arch-dependent capabilities in this function?
I think if "all" the lines were in a single API it would reduce the chance that some future self would have to have to (or be told to) keep this in sync with testUpdateQEMUCaps.
Sorry, maybe I was not clear enough: I like your idea of moving those to a separate function and calling that function from the test suite instead of duplicating code! The only thing I'm questioning is the name.
Name I provided was just an "example"...
The attached patch should give you an idea of the direction I'm heading: virQEMUCapsInitQMPArch() would only be called from the library code, while virQEMUCapsInitArchQMPBasic() would be called both there and in the test suite.
Does that look reasonable?
Sure... John

The capabilities used in test cases should match those used during normal operation for the tests to make any sense. --- src/qemu/qemu_capabilities.c | 2 ++ .../qemuxml2argv-balloon-ccw-deflate.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-console-sclp.args | 1 - .../qemuxml2argv-console-virtio-ccw.args | 1 - .../qemuxml2argv-console-virtio-s390.args | 1 - .../qemuxml2argvdata/qemuxml2argv-cpu-s390-features.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-cpu-s390-zEC12.args | 1 - .../qemuxml2argv-disk-virtio-ccw-many.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-ccw.args | 1 - .../qemuxml2argvdata/qemuxml2argv-disk-virtio-s390.args | 1 - .../qemuxml2argv-disk-virtio-scsi-ccw.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-fs9p-ccw.args | 1 - .../qemuxml2argv-hostdev-scsi-vhost-scsi-ccw.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-hugepages-numa.args | 1 + .../qemuxml2argv-iothreads-disk-virtio-ccw.args | 1 - .../qemuxml2argv-iothreads-virtio-scsi-ccw.args | 1 - .../qemuxml2argv-machine-aeskeywrap-off-cap.args | 1 - .../qemuxml2argv-machine-aeskeywrap-off-caps.args | 1 - .../qemuxml2argv-machine-aeskeywrap-on-cap.args | 1 - .../qemuxml2argv-machine-aeskeywrap-on-caps.args | 1 - .../qemuxml2argv-machine-deakeywrap-off-cap.args | 1 - .../qemuxml2argv-machine-deakeywrap-off-caps.args | 1 - .../qemuxml2argv-machine-deakeywrap-on-cap.args | 1 - .../qemuxml2argv-machine-deakeywrap-on-caps.args | 1 - .../qemuxml2argv-machine-keywrap-none-caps.args | 1 - .../qemuxml2argv-machine-keywrap-none.args | 1 - .../qemuxml2argv-memory-hotplug-ppc64-nonuma.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-net-virtio-ccw.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-net-virtio-s390.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-ppc-dtb.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-ppce500-serial.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.args | 1 - .../qemuxml2argv-pseries-cpu-compat.args | 1 - .../qemuxml2argvdata/qemuxml2argv-pseries-cpu-exact.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-le.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-pseries-nvram.args | 1 - .../qemuxml2argv-pseries-panic-missing.args | 1 - .../qemuxml2argv-pseries-panic-no-address.args | 1 - .../qemuxml2argv-pseries-usb-default.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-kbd.args | 1 - .../qemuxml2argvdata/qemuxml2argv-pseries-usb-multi.args | 1 - .../qemuxml2argv-pseries-vio-user-assigned.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.args | 1 - .../qemuxml2argv-q35-virt-manager-basic.args | 1 + .../qemuxml2argv-s390-allow-bogus-usb-controller.args | 1 - .../qemuxml2argv-s390-allow-bogus-usb-none.args | 1 - .../qemuxml2argv-s390-panic-missing.args | 1 - .../qemuxml2argv-s390-panic-no-address.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-ccw.args | 1 - .../qemuxml2argvdata/qemuxml2argv-watchdog-diag288.args | 1 - tests/qemuxml2argvtest.c | 16 ++++++++++++++-- 51 files changed, 18 insertions(+), 49 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 4ec34f8..a2d8e9e 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -4231,6 +4231,8 @@ virQEMUCapsInitArchQMPBasic(virQEMUCapsPtr qemuCaps, goto cleanup; } + /* Important: keep this in sync with testUpdateQEMUCaps() */ + /* ACPI only works on x86 and aarch64 */ if (ARCH_IS_X86(qemuCaps->arch) || qemuCaps->arch == VIR_ARCH_AARCH64) { diff --git a/tests/qemuxml2argvdata/qemuxml2argv-balloon-ccw-deflate.args b/tests/qemuxml2argvdata/qemuxml2argv-balloon-ccw-deflate.args index 8565071..c8bb726 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-balloon-ccw-deflate.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-balloon-ccw-deflate.args @@ -15,6 +15,5 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -device virtio-balloon-ccw,id=balloon0,devno=fe.0.000a,deflate-on-oom=on diff --git a/tests/qemuxml2argvdata/qemuxml2argv-console-sclp.args b/tests/qemuxml2argvdata/qemuxml2argv-console-sclp.args index dc9f7af..17f6055 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-console-sclp.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-console-sclp.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-s390,drive=drive-virtio-disk0,id=virtio-disk0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-console-virtio-ccw.args b/tests/qemuxml2argvdata/qemuxml2argv-console-virtio-ccw.args index 4fe0d6d..73868d4 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-console-virtio-ccw.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-console-virtio-ccw.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -device virtio-serial-ccw,id=virtio-serial0,devno=fe.0.0001 \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-console-virtio-s390.args b/tests/qemuxml2argvdata/qemuxml2argv-console-virtio-s390.args index 6e0e11e..06ef1b7 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-console-virtio-s390.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-console-virtio-s390.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -device virtio-serial-s390,id=virtio-serial0 \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-s390,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-s390-features.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-s390-features.args index 07abc93..0b4ce4c 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-s390-features.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-s390-features.args @@ -15,5 +15,4 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-guest1/monitor.sock,server,nowait \ --no-acpi \ -boot c diff --git a/tests/qemuxml2argvdata/qemuxml2argv-cpu-s390-zEC12.args b/tests/qemuxml2argvdata/qemuxml2argv-cpu-s390-zEC12.args index 4c95d6a..48850b8 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-cpu-s390-zEC12.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-cpu-s390-zEC12.args @@ -15,5 +15,4 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-guest1/monitor.sock,server,nowait \ --no-acpi \ -boot c diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-ccw-many.args b/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-ccw-many.args index 5f6b087..8290cd6 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-ccw-many.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-ccw-many.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=0.0.0007,drive=drive-virtio-disk0,id=virtio-disk0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-ccw.args b/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-ccw.args index 45f51a8..2f77a29 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-ccw.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-ccw.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-s390.args b/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-s390.args index 30aa47a..45c4659 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-s390.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-s390.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-s390,drive=drive-virtio-disk0,id=virtio-disk0 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-scsi-ccw.args b/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-scsi-ccw.args index 3b352bf..522fd99 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-scsi-ccw.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-scsi-ccw.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -device virtio-scsi-ccw,id=scsi0,devno=fe.0.0001 \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-fs9p-ccw.args b/tests/qemuxml2argvdata/qemuxml2argv-fs9p-ccw.args index d4bf19c..6d4f65e 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-fs9p-ccw.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-fs9p-ccw.args @@ -15,7 +15,6 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-vhost-scsi-ccw.args b/tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-vhost-scsi-ccw.args index 199adfa..03de632 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-vhost-scsi-ccw.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-vhost-scsi-ccw.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest2/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -device virtio-scsi-ccw,id=scsi0,devno=fe.0.0001 \ -drive file=/dev/HostVG/QEMUGuest2,format=raw,if=none,id=drive-virtio-disk0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-hugepages-numa.args b/tests/qemuxml2argvdata/qemuxml2argv-hugepages-numa.args index 26e9496..1b2a52b 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-hugepages-numa.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-hugepages-numa.args @@ -22,6 +22,7 @@ host-nodes=1-3,policy=bind \ -monitor unix:/tmp/lib/domain--1-fedora/monitor.sock,server,nowait \ -rtc base=utc,driftfix=slew \ -no-kvm-pit-reinjection \ +-no-hpet \ -global PIIX4_PM.disable_s3=1 \ -global PIIX4_PM.disable_s4=1 \ -boot c \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-iothreads-disk-virtio-ccw.args b/tests/qemuxml2argvdata/qemuxml2argv-iothreads-disk-virtio-ccw.args index 5e001de..ba4e699 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-iothreads-disk-virtio-ccw.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-iothreads-disk-virtio-ccw.args @@ -16,7 +16,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,iothread=iothread1,devno=fe.0.0000,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-iothreads-virtio-scsi-ccw.args b/tests/qemuxml2argvdata/qemuxml2argv-iothreads-virtio-scsi-ccw.args index 1ebb6d4..e87912b 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-iothreads-virtio-scsi-ccw.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-iothreads-virtio-scsi-ccw.args @@ -16,7 +16,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -device virtio-scsi-ccw,iothread=iothread2,id=scsi0,devno=fe.0.0001 \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-off-cap.args b/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-off-cap.args index 33a53a0..c718084 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-off-cap.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-off-cap.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-off-caps.args b/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-off-caps.args index 33a53a0..c718084 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-off-caps.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-off-caps.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-on-cap.args b/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-on-cap.args index 9536cce..c6eaa24 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-on-cap.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-on-cap.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-on-caps.args b/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-on-caps.args index 9536cce..c6eaa24 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-on-caps.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-machine-aeskeywrap-on-caps.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-off-cap.args b/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-off-cap.args index 9afa7c2..434f506 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-off-cap.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-off-cap.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-off-caps.args b/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-off-caps.args index 9afa7c2..434f506 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-off-caps.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-off-caps.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-on-cap.args b/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-on-cap.args index e73ed67..24e2035 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-on-cap.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-on-cap.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-on-caps.args b/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-on-caps.args index e73ed67..24e2035 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-on-caps.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-machine-deakeywrap-on-caps.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-keywrap-none-caps.args b/tests/qemuxml2argvdata/qemuxml2argv-machine-keywrap-none-caps.args index 19d2c35..acde08a 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-machine-keywrap-none-caps.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-machine-keywrap-none-caps.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-machine-keywrap-none.args b/tests/qemuxml2argvdata/qemuxml2argv-machine-keywrap-none.args index 19d2c35..acde08a 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-machine-keywrap-none.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-machine-keywrap-none.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-memory-hotplug-ppc64-nonuma.args b/tests/qemuxml2argvdata/qemuxml2argv-memory-hotplug-ppc64-nonuma.args index 781f30d..88ed6b6 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-memory-hotplug-ppc64-nonuma.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-memory-hotplug-ppc64-nonuma.args @@ -18,7 +18,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -kernel /media/ram/uImage \ -initrd /media/ram/ramdisk \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-net-virtio-ccw.args b/tests/qemuxml2argvdata/qemuxml2argv-net-virtio-ccw.args index 86b6add..8a0598a 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-net-virtio-ccw.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-net-virtio-ccw.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -device virtio-net-ccw,vlan=0,id=net0,mac=00:11:22:33:44:55,devno=fe.0.0001 \ -net user,vlan=0,name=hostnet0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-net-virtio-s390.args b/tests/qemuxml2argvdata/qemuxml2argv-net-virtio-s390.args index 46ccbc9..ef31b79 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-net-virtio-s390.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-net-virtio-s390.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -device virtio-net-s390,vlan=0,id=net0,mac=00:11:22:33:44:55 \ -net user,vlan=0,name=hostnet0 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-ppc-dtb.args b/tests/qemuxml2argvdata/qemuxml2argv-ppc-dtb.args index 58c1526..10ddca0 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-ppc-dtb.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-ppc-dtb.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -kernel /media/ram/uImage \ -initrd /media/ram/ramdisk \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-ppce500-serial.args b/tests/qemuxml2argvdata/qemuxml2argv-ppce500-serial.args index d623836..87f4ee5 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-ppce500-serial.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-ppce500-serial.args @@ -16,7 +16,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -kernel /media/ram/uImage \ -initrd /media/ram/ramdisk \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.args index 2839dea..97a7057 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -usb \ -chardev pty,id=charserial0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args index 06595a2..7740e2f 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args @@ -18,7 +18,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -usb \ -chardev pty,id=charserial0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-exact.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-exact.args index 803c1aa..d2c99a7 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-exact.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-exact.args @@ -18,7 +18,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -usb \ -chardev pty,id=charserial0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-le.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-le.args index 2839dea..97a7057 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-le.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-le.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -usb \ -chardev pty,id=charserial0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-nvram.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-nvram.args index 89e0e56..904b951 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-nvram.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-nvram.args @@ -14,7 +14,6 @@ QEMU_AUDIO_DRV=none \ -nographic \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-QEMUGuest1/monitor.sock,server,nowait \ --no-acpi \ -boot c \ -usb \ -global spapr-nvram.reg=0x4000 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-panic-missing.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-panic-missing.args index 2839dea..97a7057 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-panic-missing.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-panic-missing.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -usb \ -chardev pty,id=charserial0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-panic-no-address.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-panic-no-address.args index 2839dea..97a7057 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-panic-no-address.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-panic-no-address.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -usb \ -chardev pty,id=charserial0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-default.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-default.args index 56e3552..a92b1e0 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-default.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-default.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -device pci-ohci,id=usb,bus=pci.0,addr=0x1 \ -chardev pty,id=charserial0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-kbd.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-kbd.args index 1a672c6..caaccdb 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-kbd.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-kbd.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -device pci-ohci,id=usb,bus=pci.0,addr=0x1 \ -chardev pty,id=charserial0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-multi.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-multi.args index 7273891..b9bd905 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-multi.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-multi.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1 \ -device pci-ohci,id=usb1,bus=pci.0,addr=0x2 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-user-assigned.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-user-assigned.args index 5754d3c..63cf3c1 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-user-assigned.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-user-assigned.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -device spapr-vscsi,id=scsi0,reg=0x2000 \ -device spapr-vscsi,id=scsi1,reg=0x30000000 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.args index 43381dd..0294067 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -device spapr-vscsi,id=scsi0,reg=0x2000 \ -device spapr-vscsi,id=scsi1,reg=0x3000 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-q35-virt-manager-basic.args b/tests/qemuxml2argvdata/qemuxml2argv-q35-virt-manager-basic.args index e139e52..91598e9 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-q35-virt-manager-basic.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-q35-virt-manager-basic.args @@ -15,6 +15,7 @@ QEMU_AUDIO_DRV=spice \ -monitor unix:/tmp/lib/domain--1-virt-manager-basic/monitor.sock,server,nowait \ -rtc base=utc,driftfix=slew \ -no-kvm-pit-reinjection \ +-no-hpet \ -global ICH9-LPC.disable_s3=1 \ -global ICH9-LPC.disable_s4=1 \ -boot c \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-s390-allow-bogus-usb-controller.args b/tests/qemuxml2argvdata/qemuxml2argv-s390-allow-bogus-usb-controller.args index a1c1c85..8abe0df 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-s390-allow-bogus-usb-controller.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-s390-allow-bogus-usb-controller.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-test/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -device virtio-serial-s390,id=virtio-serial0 \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-s390,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-s390-allow-bogus-usb-none.args b/tests/qemuxml2argvdata/qemuxml2argv-s390-allow-bogus-usb-none.args index a1c1c85..8abe0df 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-s390-allow-bogus-usb-none.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-s390-allow-bogus-usb-none.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-test/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -device virtio-serial-s390,id=virtio-serial0 \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-s390,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-s390-panic-missing.args b/tests/qemuxml2argvdata/qemuxml2argv-s390-panic-missing.args index a18b5a5..3267814 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-s390-panic-missing.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-s390-panic-missing.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -device virtio-serial-ccw,id=virtio-serial0,devno=fe.0.0000 \ -chardev pty,id=charconsole0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-s390-panic-no-address.args b/tests/qemuxml2argvdata/qemuxml2argv-s390-panic-no-address.args index e49c8df..fa8fbbc 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-s390-panic-no-address.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-s390-panic-no-address.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -boot c \ -device virtio-serial-ccw,id=virtio-serial0,devno=fe.0.0000 \ -chardev pty,id=charconsole0 \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-ccw.args b/tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-ccw.args index dec49e1..a73bce8 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-ccw.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-ccw.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -device virtio-serial-ccw,id=virtio-serial0,devno=fe.0.0001 \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-ccw,devno=fe.0.0000,drive=drive-virtio-disk0,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-watchdog-diag288.args b/tests/qemuxml2argvdata/qemuxml2argv-watchdog-diag288.args index 2997c12..95f915c 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-watchdog-diag288.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-watchdog-diag288.args @@ -17,7 +17,6 @@ QEMU_AUDIO_DRV=none \ -chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\ server,nowait \ -mon chardev=charmonitor,id=monitor,mode=readline \ --no-acpi \ -drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-s390,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \ -device diag288,id=watchdog0 \ diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index d2d267f..5ddede9 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -360,8 +360,6 @@ testInitQEMUCaps(struct testInfo *info, if (!(info->qemuCaps = virQEMUCapsNew())) goto cleanup; - virQEMUCapsSet(info->qemuCaps, QEMU_CAPS_NO_ACPI); - if (testQemuCapsSetGIC(info->qemuCaps, gic) < 0) goto cleanup; @@ -381,6 +379,20 @@ testUpdateQEMUCaps(const struct testInfo *info, virQEMUCapsSetArch(info->qemuCaps, vm->def->os.arch); + /* Important: keep this in sync with virQEMUCapsInitArchQMPBasic() */ + + /* ACPI only works on x86 and aarch64 */ + if (ARCH_IS_X86(vm->def->os.arch) || + vm->def->os.arch == VIR_ARCH_AARCH64) { + virQEMUCapsSet(info->qemuCaps, QEMU_CAPS_NO_ACPI); + } + + /* HPET and KVM PIT are x86 specific */ + if (ARCH_IS_X86(vm->def->os.arch)) { + virQEMUCapsSet(info->qemuCaps, QEMU_CAPS_NO_HPET); + virQEMUCapsSet(info->qemuCaps, QEMU_CAPS_NO_KVM_PIT); + } + /* 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() */ -- 2.7.4

On 03/09/2017 12:37 PM, Andrea Bolognani wrote:
The capabilities used in test cases should match those used during normal operation for the tests to make any sense. --- src/qemu/qemu_capabilities.c | 2 ++ .../qemuxml2argv-balloon-ccw-deflate.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-console-sclp.args | 1 - .../qemuxml2argv-console-virtio-ccw.args | 1 - .../qemuxml2argv-console-virtio-s390.args | 1 - .../qemuxml2argvdata/qemuxml2argv-cpu-s390-features.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-cpu-s390-zEC12.args | 1 - .../qemuxml2argv-disk-virtio-ccw-many.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-disk-virtio-ccw.args | 1 - .../qemuxml2argvdata/qemuxml2argv-disk-virtio-s390.args | 1 - .../qemuxml2argv-disk-virtio-scsi-ccw.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-fs9p-ccw.args | 1 - .../qemuxml2argv-hostdev-scsi-vhost-scsi-ccw.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-hugepages-numa.args | 1 + .../qemuxml2argv-iothreads-disk-virtio-ccw.args | 1 - .../qemuxml2argv-iothreads-virtio-scsi-ccw.args | 1 - .../qemuxml2argv-machine-aeskeywrap-off-cap.args | 1 - .../qemuxml2argv-machine-aeskeywrap-off-caps.args | 1 - .../qemuxml2argv-machine-aeskeywrap-on-cap.args | 1 - .../qemuxml2argv-machine-aeskeywrap-on-caps.args | 1 - .../qemuxml2argv-machine-deakeywrap-off-cap.args | 1 - .../qemuxml2argv-machine-deakeywrap-off-caps.args | 1 - .../qemuxml2argv-machine-deakeywrap-on-cap.args | 1 - .../qemuxml2argv-machine-deakeywrap-on-caps.args | 1 - .../qemuxml2argv-machine-keywrap-none-caps.args | 1 - .../qemuxml2argv-machine-keywrap-none.args | 1 - .../qemuxml2argv-memory-hotplug-ppc64-nonuma.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-net-virtio-ccw.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-net-virtio-s390.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-ppc-dtb.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-ppce500-serial.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.args | 1 - .../qemuxml2argv-pseries-cpu-compat.args | 1 - .../qemuxml2argvdata/qemuxml2argv-pseries-cpu-exact.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-le.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-pseries-nvram.args | 1 - .../qemuxml2argv-pseries-panic-missing.args | 1 - .../qemuxml2argv-pseries-panic-no-address.args | 1 - .../qemuxml2argv-pseries-usb-default.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-pseries-usb-kbd.args | 1 - .../qemuxml2argvdata/qemuxml2argv-pseries-usb-multi.args | 1 - .../qemuxml2argv-pseries-vio-user-assigned.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.args | 1 - .../qemuxml2argv-q35-virt-manager-basic.args | 1 + .../qemuxml2argv-s390-allow-bogus-usb-controller.args | 1 - .../qemuxml2argv-s390-allow-bogus-usb-none.args | 1 - .../qemuxml2argv-s390-panic-missing.args | 1 - .../qemuxml2argv-s390-panic-no-address.args | 1 - tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-ccw.args | 1 - .../qemuxml2argvdata/qemuxml2argv-watchdog-diag288.args | 1 - tests/qemuxml2argvtest.c | 16 ++++++++++++++-- 51 files changed, 18 insertions(+), 49 deletions(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 4ec34f8..a2d8e9e 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -4231,6 +4231,8 @@ virQEMUCapsInitArchQMPBasic(virQEMUCapsPtr qemuCaps, goto cleanup; }
+ /* Important: keep this in sync with testUpdateQEMUCaps() */ +
Using my suggestion from previous patch, this becomes unnecessary...
/* ACPI only works on x86 and aarch64 */ if (ARCH_IS_X86(qemuCaps->arch) || qemuCaps->arch == VIR_ARCH_AARCH64) {
[...]
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index d2d267f..5ddede9 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -360,8 +360,6 @@ testInitQEMUCaps(struct testInfo *info, if (!(info->qemuCaps = virQEMUCapsNew())) goto cleanup;
- virQEMUCapsSet(info->qemuCaps, QEMU_CAPS_NO_ACPI); - if (testQemuCapsSetGIC(info->qemuCaps, gic) < 0) goto cleanup;
@@ -381,6 +379,20 @@ testUpdateQEMUCaps(const struct testInfo *info,
virQEMUCapsSetArch(info->qemuCaps, vm->def->os.arch);
+ /* Important: keep this in sync with virQEMUCapsInitArchQMPBasic() */ + + /* ACPI only works on x86 and aarch64 */ + if (ARCH_IS_X86(vm->def->os.arch) || + vm->def->os.arch == VIR_ARCH_AARCH64) { + virQEMUCapsSet(info->qemuCaps, QEMU_CAPS_NO_ACPI); + } + + /* HPET and KVM PIT are x86 specific */ + if (ARCH_IS_X86(vm->def->os.arch)) { + virQEMUCapsSet(info->qemuCaps, QEMU_CAPS_NO_HPET); + virQEMUCapsSet(info->qemuCaps, QEMU_CAPS_NO_KVM_PIT); + } +
And this just calls the function John
/* 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() */

Depending on the architecture, requirements for ACPI and UEFI can be different; more specifically, while on x86 UEFI requires ACPI, on aarch64 it's the other way around. Enforce these requirements when building the QEMU command line, and make the error message more accurate by mentioning that the requirements are not necessarily applicable to all architectures. Several aarch64 test cases had to be tweaked because they didn't respect the requirements. --- src/qemu/qemu_command.c | 20 +++++++++++++++++++- .../qemuxml2argv-aarch64-aavmf-virtio-mmio.args | 1 + .../qemuxml2argv-aarch64-aavmf-virtio-mmio.xml | 1 - .../qemuxml2argv-aarch64-cpu-passthrough.args | 1 + .../qemuxml2argv-aarch64-cpu-passthrough.xml | 1 - .../qemuxml2argv-aarch64-video-virtio-gpu-pci.args | 1 + .../qemuxml2argv-aarch64-video-virtio-gpu-pci.xml | 3 --- ...xml2argv-aarch64-virt-2.6-virtio-pci-default.args | 1 + ...uxml2argv-aarch64-virt-2.6-virtio-pci-default.xml | 1 - .../qemuxml2argv-aarch64-virt-default-nic.args | 1 + .../qemuxml2argv-aarch64-virt-default-nic.xml | 3 --- .../qemuxml2argv-aarch64-virt-virtio.args | 1 + .../qemuxml2argv-aarch64-virt-virtio.xml | 1 - .../qemuxml2argv-aarch64-virtio-pci-default.args | 1 + .../qemuxml2argv-aarch64-virtio-pci-default.xml | 1 - ...xml2argv-aarch64-virtio-pci-manual-addresses.args | 1 + ...uxml2argv-aarch64-virtio-pci-manual-addresses.xml | 1 - .../qemuxml2argv-balloon-mmio-deflate.args | 1 + .../qemuxml2argv-balloon-mmio-deflate.xml | 1 - .../qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml | 1 - .../qemuxml2xmlout-aarch64-video-virtio-gpu-pci.xml | 1 - .../qemuxml2xmlout-aarch64-virtio-pci-default.xml | 1 - ...ml2xmlout-aarch64-virtio-pci-manual-addresses.xml | 1 - 23 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 6545a93..282ffaa 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6252,9 +6252,23 @@ qemuBuildPMCommandLine(virCommandPtr cmd, virCommandAddArg(cmd, "-no-shutdown"); } + /* Architectures that support ACPI also support -no-acpi as a way + * of turning it off, and vice versa */ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_ACPI)) { + + /* ACPI is off unless explicitly turned on */ if (def->features[VIR_DOMAIN_FEATURE_ACPI] != VIR_TRISTATE_SWITCH_ON) virCommandAddArg(cmd, "-no-acpi"); + + /* aarch64 requires UEFI to be in use for ACPI to work */ + if (def->features[VIR_DOMAIN_FEATURE_ACPI] == VIR_TRISTATE_SWITCH_ON && + def->os.arch == VIR_ARCH_AARCH64 && + (!def->os.loader || + def->os.loader->type != VIR_DOMAIN_LOADER_TYPE_PFLASH)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("ACPI requires UEFI on this architecture")); + return -1; + } } /* We fall back to PIIX4_PM even for q35, since it's what we did @@ -9099,10 +9113,14 @@ qemuBuildDomainLoaderCommandLine(virCommandPtr cmd, break; case VIR_DOMAIN_LOADER_TYPE_PFLASH: + + /* On x86, ACPI is a requirement for UEFI; other architectures, + * such as aarch64, might have different requirements */ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_ACPI) && + ARCH_IS_X86(def->os.arch) && def->features[VIR_DOMAIN_FEATURE_ACPI] != VIR_TRISTATE_SWITCH_ON) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("ACPI must be enabled in order to use UEFI")); + _("UEFI requires ACPI on this architecture")); goto cleanup; } diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.args index bf4b2f7..68fb61b 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.xml index 8c7428c..5d72173 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.xml @@ -13,7 +13,6 @@ <boot dev='hd'/> </os> <features> - <acpi/> <apic/> <pae/> <gic version='2'/> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.args index 52d2112..9c8c001 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -drive file=/aarch64.raw,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-device,drive=drive-virtio-disk0,id=virtio-disk0 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.xml index 4cdf387..0dda095 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.xml @@ -8,7 +8,6 @@ <type arch="aarch64" machine="virt">hvm</type> </os> <features> - <acpi/> <apic/> <pae/> </features> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.args index 76ee977..2f8c516 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64-vgpu/monitor.sock,server,nowait \ +-no-acpi \ -device ioh3420,port=0x8,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,\ addr=0x1 \ -device ioh3420,port=0x9,chassis=2,id=pci.2,bus=pcie.0,multifunction=on,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.xml index 4b52a73..d9a0128 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.xml @@ -7,9 +7,6 @@ <os> <type arch='aarch64' machine='virt'>hvm</type> </os> - <features> - <acpi/> - </features> <cpu mode='custom' match='exact'> <model fallback='allow'>cortex-a57</model> </cpu> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.args index df03c6e..e99d412 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.xml index e745101..43bc008 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.xml @@ -12,7 +12,6 @@ <cmdline>earlyprintk console=ttyAMA0,115200n8 rw root=/dev/vda rootwait</cmdline> </os> <features> - <acpi/> <apic/> <pae/> </features> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.args index 29f65f6..47d7761 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.args @@ -17,6 +17,7 @@ QEMU_AUDIO_DRV=none \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64-virt-default/monitor.sock,server,\ nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.xml index 3a6f098..17ddc90 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.xml @@ -4,9 +4,6 @@ <memory>1048576</memory> <currentMemory>1048576</currentMemory> <vcpu>1</vcpu> - <features> - <acpi/> - </features> <cpu match='exact'> <model>cortex-a53</model> </cpu> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args index b5b010c..5fef3b4 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml index ad34615..2692e61 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml @@ -12,7 +12,6 @@ <cmdline>earlyprintk console=ttyAMA0,115200n8 rw root=/dev/vda rootwait</cmdline> </os> <features> - <acpi/> <apic/> <pae/> </features> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.args index 46ac51d..23a5fff 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.xml index 2a84a96..72bf0c9 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.xml @@ -12,7 +12,6 @@ <cmdline>earlyprintk console=ttyAMA0,115200n8 rw root=/dev/vda rootwait</cmdline> </os> <features> - <acpi/> <apic/> <pae/> </features> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.args index 0640399..54244fd 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.xml index 5e1b494..fee3258 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.xml @@ -13,7 +13,6 @@ <boot dev='hd'/> </os> <features> - <acpi/> <apic/> <pae/> </features> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.args b/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.args index 10d1362..e568e3c 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.xml b/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.xml index 1b5b48c..49b7d2c 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.xml @@ -12,7 +12,6 @@ <cmdline>earlyprintk console=ttyAMA0,115200n8 rw root=/dev/vda rootwait</cmdline> </os> <features> - <acpi/> <apic/> <pae/> </features> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml index 2f1f8dd..6eac9db 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml @@ -13,7 +13,6 @@ <boot dev='hd'/> </os> <features> - <acpi/> <apic/> <pae/> <gic version='2'/> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-video-virtio-gpu-pci.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-video-virtio-gpu-pci.xml index 26f6a51..4a3c747 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-video-virtio-gpu-pci.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-video-virtio-gpu-pci.xml @@ -8,7 +8,6 @@ <type arch='aarch64' machine='virt'>hvm</type> </os> <features> - <acpi/> <gic version='2'/> </features> <cpu mode='custom' match='exact'> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-default.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-default.xml index f7fbdc7..7bd1d7b 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-default.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-default.xml @@ -13,7 +13,6 @@ <boot dev='hd'/> </os> <features> - <acpi/> <apic/> <pae/> <gic version='2'/> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-manual-addresses.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-manual-addresses.xml index 1b50f75..8a3a1f5 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-manual-addresses.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-manual-addresses.xml @@ -13,7 +13,6 @@ <boot dev='hd'/> </os> <features> - <acpi/> <apic/> <pae/> <gic version='2'/> -- 2.7.4

On 03/09/2017 12:37 PM, Andrea Bolognani wrote:
Depending on the architecture, requirements for ACPI and UEFI can be different; more specifically, while on x86 UEFI requires ACPI, on aarch64 it's the other way around.
Enforce these requirements when building the QEMU command line, and make the error message more accurate by mentioning that the requirements are not necessarily applicable to all architectures.
Several aarch64 test cases had to be tweaked because they didn't respect the requirements. --- src/qemu/qemu_command.c | 20 +++++++++++++++++++- .../qemuxml2argv-aarch64-aavmf-virtio-mmio.args | 1 + .../qemuxml2argv-aarch64-aavmf-virtio-mmio.xml | 1 - .../qemuxml2argv-aarch64-cpu-passthrough.args | 1 + .../qemuxml2argv-aarch64-cpu-passthrough.xml | 1 - .../qemuxml2argv-aarch64-video-virtio-gpu-pci.args | 1 + .../qemuxml2argv-aarch64-video-virtio-gpu-pci.xml | 3 --- ...xml2argv-aarch64-virt-2.6-virtio-pci-default.args | 1 + ...uxml2argv-aarch64-virt-2.6-virtio-pci-default.xml | 1 - .../qemuxml2argv-aarch64-virt-default-nic.args | 1 + .../qemuxml2argv-aarch64-virt-default-nic.xml | 3 --- .../qemuxml2argv-aarch64-virt-virtio.args | 1 + .../qemuxml2argv-aarch64-virt-virtio.xml | 1 - .../qemuxml2argv-aarch64-virtio-pci-default.args | 1 + .../qemuxml2argv-aarch64-virtio-pci-default.xml | 1 - ...xml2argv-aarch64-virtio-pci-manual-addresses.args | 1 + ...uxml2argv-aarch64-virtio-pci-manual-addresses.xml | 1 - .../qemuxml2argv-balloon-mmio-deflate.args | 1 + .../qemuxml2argv-balloon-mmio-deflate.xml | 1 - .../qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml | 1 - .../qemuxml2xmlout-aarch64-video-virtio-gpu-pci.xml | 1 - .../qemuxml2xmlout-aarch64-virtio-pci-default.xml | 1 - ...ml2xmlout-aarch64-virtio-pci-manual-addresses.xml | 1 - 23 files changed, 28 insertions(+), 18 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 6545a93..282ffaa 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6252,9 +6252,23 @@ qemuBuildPMCommandLine(virCommandPtr cmd, virCommandAddArg(cmd, "-no-shutdown"); }
+ /* Architectures that support ACPI also support -no-acpi as a way + * of turning it off, and vice versa */ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_ACPI)) { + + /* ACPI is off unless explicitly turned on */ if (def->features[VIR_DOMAIN_FEATURE_ACPI] != VIR_TRISTATE_SWITCH_ON) virCommandAddArg(cmd, "-no-acpi"); + + /* aarch64 requires UEFI to be in use for ACPI to work */ + if (def->features[VIR_DOMAIN_FEATURE_ACPI] == VIR_TRISTATE_SWITCH_ON && + def->os.arch == VIR_ARCH_AARCH64 && + (!def->os.loader || + def->os.loader->type != VIR_DOMAIN_LOADER_TYPE_PFLASH)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("ACPI requires UEFI on this architecture")); + return -1; + }
Why isn't this check in qemuDomainDefPostParse? Avoids errors in command line building which IIRC was something where there was an "effort" to avoid in favor of "earlier" checking. Beyond that - mixing a is there a no-acpi cap flag set and the aarch64 ACPI requirement check feels like we could miss something...
}
/* We fall back to PIIX4_PM even for q35, since it's what we did @@ -9099,10 +9113,14 @@ qemuBuildDomainLoaderCommandLine(virCommandPtr cmd, break;
case VIR_DOMAIN_LOADER_TYPE_PFLASH: + + /* On x86, ACPI is a requirement for UEFI; other architectures, + * such as aarch64, might have different requirements */ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_ACPI) && + ARCH_IS_X86(def->os.arch) && def->features[VIR_DOMAIN_FEATURE_ACPI] != VIR_TRISTATE_SWITCH_ON) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("ACPI must be enabled in order to use UEFI")); + _("UEFI requires ACPI on this architecture")); goto cleanup; }
This is another one where I think something could be checked in qemuDomainDefPostParse... If we have a loader of type flash on an X86 system, then ACPI had better be on - regardless of the -no-acpi cap check. John
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.args index bf4b2f7..68fb61b 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.xml index 8c7428c..5d72173 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-aavmf-virtio-mmio.xml @@ -13,7 +13,6 @@ <boot dev='hd'/> </os> <features> - <acpi/> <apic/> <pae/> <gic version='2'/> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.args index 52d2112..9c8c001 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -drive file=/aarch64.raw,format=raw,if=none,id=drive-virtio-disk0 \ -device virtio-blk-device,drive=drive-virtio-disk0,id=virtio-disk0 diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.xml index 4cdf387..0dda095 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-cpu-passthrough.xml @@ -8,7 +8,6 @@ <type arch="aarch64" machine="virt">hvm</type> </os> <features> - <acpi/> <apic/> <pae/> </features> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.args index 76ee977..2f8c516 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64-vgpu/monitor.sock,server,nowait \ +-no-acpi \ -device ioh3420,port=0x8,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,\ addr=0x1 \ -device ioh3420,port=0x9,chassis=2,id=pci.2,bus=pcie.0,multifunction=on,\ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.xml index 4b52a73..d9a0128 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-video-virtio-gpu-pci.xml @@ -7,9 +7,6 @@ <os> <type arch='aarch64' machine='virt'>hvm</type> </os> - <features> - <acpi/> - </features> <cpu mode='custom' match='exact'> <model fallback='allow'>cortex-a57</model> </cpu> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.args index df03c6e..e99d412 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.xml index e745101..43bc008 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-2.6-virtio-pci-default.xml @@ -12,7 +12,6 @@ <cmdline>earlyprintk console=ttyAMA0,115200n8 rw root=/dev/vda rootwait</cmdline> </os> <features> - <acpi/> <apic/> <pae/> </features> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.args index 29f65f6..47d7761 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.args @@ -17,6 +17,7 @@ QEMU_AUDIO_DRV=none \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64-virt-default/monitor.sock,server,\ nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.xml index 3a6f098..17ddc90 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-default-nic.xml @@ -4,9 +4,6 @@ <memory>1048576</memory> <currentMemory>1048576</currentMemory> <vcpu>1</vcpu> - <features> - <acpi/> - </features> <cpu match='exact'> <model>cortex-a53</model> </cpu> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args index b5b010c..5fef3b4 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml index ad34615..2692e61 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virt-virtio.xml @@ -12,7 +12,6 @@ <cmdline>earlyprintk console=ttyAMA0,115200n8 rw root=/dev/vda rootwait</cmdline> </os> <features> - <acpi/> <apic/> <pae/> </features> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.args index 46ac51d..23a5fff 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.xml index 2a84a96..72bf0c9 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-default.xml @@ -12,7 +12,6 @@ <cmdline>earlyprintk console=ttyAMA0,115200n8 rw root=/dev/vda rootwait</cmdline> </os> <features> - <acpi/> <apic/> <pae/> </features> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.args index 0640399..54244fd 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.xml index 5e1b494..fee3258 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-virtio-pci-manual-addresses.xml @@ -13,7 +13,6 @@ <boot dev='hd'/> </os> <features> - <acpi/> <apic/> <pae/> </features> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.args b/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.args index 10d1362..e568e3c 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.args +++ b/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.args @@ -16,6 +16,7 @@ QEMU_AUDIO_DRV=none \ -nodefconfig \ -nodefaults \ -monitor unix:/tmp/lib/domain--1-aarch64test/monitor.sock,server,nowait \ +-no-acpi \ -boot c \ -kernel /aarch64.kernel \ -initrd /aarch64.initrd \ diff --git a/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.xml b/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.xml index 1b5b48c..49b7d2c 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-balloon-mmio-deflate.xml @@ -12,7 +12,6 @@ <cmdline>earlyprintk console=ttyAMA0,115200n8 rw root=/dev/vda rootwait</cmdline> </os> <features> - <acpi/> <apic/> <pae/> </features> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml index 2f1f8dd..6eac9db 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml @@ -13,7 +13,6 @@ <boot dev='hd'/> </os> <features> - <acpi/> <apic/> <pae/> <gic version='2'/> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-video-virtio-gpu-pci.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-video-virtio-gpu-pci.xml index 26f6a51..4a3c747 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-video-virtio-gpu-pci.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-video-virtio-gpu-pci.xml @@ -8,7 +8,6 @@ <type arch='aarch64' machine='virt'>hvm</type> </os> <features> - <acpi/> <gic version='2'/> </features> <cpu mode='custom' match='exact'> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-default.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-default.xml index f7fbdc7..7bd1d7b 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-default.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-default.xml @@ -13,7 +13,6 @@ <boot dev='hd'/> </os> <features> - <acpi/> <apic/> <pae/> <gic version='2'/> diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-manual-addresses.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-manual-addresses.xml index 1b50f75..8a3a1f5 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-manual-addresses.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-manual-addresses.xml @@ -13,7 +13,6 @@ <boot dev='hd'/> </os> <features> - <acpi/> <apic/> <pae/> <gic version='2'/>

On Mon, 2017-03-27 at 08:03 -0400, John Ferlan wrote:
@@ -6252,9 +6252,23 @@ qemuBuildPMCommandLine(virCommandPtr cmd, virCommandAddArg(cmd, "-no-shutdown"); } + /* Architectures that support ACPI also support -no-acpi as a way + * of turning it off, and vice versa */ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_ACPI)) { + + /* ACPI is off unless explicitly turned on */ if (def->features[VIR_DOMAIN_FEATURE_ACPI] != VIR_TRISTATE_SWITCH_ON) virCommandAddArg(cmd, "-no-acpi"); + + /* aarch64 requires UEFI to be in use for ACPI to work */ + if (def->features[VIR_DOMAIN_FEATURE_ACPI] == VIR_TRISTATE_SWITCH_ON && + def->os.arch == VIR_ARCH_AARCH64 && + (!def->os.loader || + def->os.loader->type != VIR_DOMAIN_LOADER_TYPE_PFLASH)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("ACPI requires UEFI on this architecture")); + return -1; + } Why isn't this check in qemuDomainDefPostParse? Avoids errors in command line building which IIRC was something where there was an "effort" to avoid in favor of "earlier" checking.
Good point. I've actually moved both checks to qemuDomainDefValidate() rather than qemuDomainDefPostParse(), so that we can prevent users from defining or starting guests that don't follow the requirements without losing existing guests. I've just posted [v2], if you feel like taking a look :) [v2] https://www.redhat.com/archives/libvir-list/2017-March/msg01531.html -- Andrea Bolognani / Red Hat / Virtualization

On 03/29/2017 10:12 AM, Andrea Bolognani wrote:
On Mon, 2017-03-27 at 08:03 -0400, John Ferlan wrote:
@@ -6252,9 +6252,23 @@ qemuBuildPMCommandLine(virCommandPtr cmd, virCommandAddArg(cmd, "-no-shutdown"); }
+ /* Architectures that support ACPI also support -no-acpi as a way + * of turning it off, and vice versa */ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_ACPI)) { + + /* ACPI is off unless explicitly turned on */ if (def->features[VIR_DOMAIN_FEATURE_ACPI] != VIR_TRISTATE_SWITCH_ON) virCommandAddArg(cmd, "-no-acpi"); + + /* aarch64 requires UEFI to be in use for ACPI to work */ + if (def->features[VIR_DOMAIN_FEATURE_ACPI] == VIR_TRISTATE_SWITCH_ON && + def->os.arch == VIR_ARCH_AARCH64 && + (!def->os.loader || + def->os.loader->type != VIR_DOMAIN_LOADER_TYPE_PFLASH)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("ACPI requires UEFI on this architecture")); + return -1; + }
Why isn't this check in qemuDomainDefPostParse?
Avoids errors in command line building which IIRC was something where there was an "effort" to avoid in favor of "earlier" checking.
Good point.
I've actually moved both checks to qemuDomainDefValidate() rather than qemuDomainDefPostParse(), so that we can prevent users from defining or starting guests that don't follow the requirements without losing existing guests.
As long we don't make a guest disappear then we're good.
I've just posted [v2], if you feel like taking a look :)
I'll look later today. John
[v2] https://www.redhat.com/archives/libvir-list/2017-March/msg01531.html -- Andrea Bolognani / Red Hat / Virtualization

Make sure every combination of ACPI and UEFI works, or fails to work, as expected. --- .../qemuxml2argv-aarch64-acpi-nouefi.args | 22 ++++++++++++++++++ .../qemuxml2argv-aarch64-acpi-nouefi.xml | 27 ++++++++++++++++++++++ .../qemuxml2argv-aarch64-acpi-uefi.args | 22 ++++++++++++++++++ .../qemuxml2argv-aarch64-acpi-uefi.xml | 26 +++++++++++++++++++++ .../qemuxml2argv-aarch64-noacpi-nouefi.args | 22 ++++++++++++++++++ .../qemuxml2argv-aarch64-noacpi-nouefi.xml | 24 +++++++++++++++++++ .../qemuxml2argv-aarch64-noacpi-uefi.args | 23 ++++++++++++++++++ .../qemuxml2argv-aarch64-noacpi-uefi.xml | 23 ++++++++++++++++++ .../qemuxml2argv-q35-acpi-nouefi.args | 21 +++++++++++++++++ .../qemuxml2argv-q35-acpi-nouefi.xml | 27 ++++++++++++++++++++++ .../qemuxml2argv-q35-acpi-uefi.args | 22 ++++++++++++++++++ .../qemuxml2argv-q35-acpi-uefi.xml | 26 +++++++++++++++++++++ .../qemuxml2argv-q35-noacpi-nouefi.args | 22 ++++++++++++++++++ .../qemuxml2argv-q35-noacpi-nouefi.xml | 24 +++++++++++++++++++ .../qemuxml2argv-q35-noacpi-uefi.xml | 23 ++++++++++++++++++ tests/qemuxml2argvtest.c | 14 +++++++++++ 16 files changed, 368 insertions(+) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-nouefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-nouefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-uefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-uefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-nouefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-nouefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-uefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-uefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-uefi.xml diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-nouefi.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-nouefi.args new file mode 100644 index 0000000..5d9e1fb --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-nouefi.args @@ -0,0 +1,22 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-aarch64 \ +-name guest \ +-S \ +-M virt \ +-cpu host \ +-m 1024 \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-nographic \ +-nodefconfig \ +-nodefaults \ +-monitor unix:/tmp/lib/domain--1-guest/monitor.sock,server,nowait \ +-boot c \ +-kernel /var/lib/libvirt/images/guest.vmlinux \ +-initrd /var/lib/libvirt/images/guest.initramfs \ +-append 'console=ttyAMA0 rw root=/dev/vda rootwait' diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-nouefi.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-nouefi.xml new file mode 100644 index 0000000..790a8ab --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-nouefi.xml @@ -0,0 +1,27 @@ +<domain type="qemu"> + <name>guest</name> + <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <memory>1048576</memory> + <currentMemory>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch="aarch64" machine="virt">hvm</type> + <kernel>/var/lib/libvirt/images/guest.vmlinux</kernel> + <initrd>/var/lib/libvirt/images/guest.initramfs</initrd> + <cmdline>console=ttyAMA0 rw root=/dev/vda rootwait</cmdline> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom'> + <model>cortex-a57</model> + </cpu> + <clock offset="utc"/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-aarch64</emulator> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-uefi.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-uefi.args new file mode 100644 index 0000000..36371ba --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-uefi.args @@ -0,0 +1,22 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-aarch64 \ +-name guest \ +-S \ +-M virt \ +-cpu cortex-a57 \ +-drive file=/usr/share/AAVMF/AAVMF_CODE.fd,if=pflash,format=raw,unit=0,\ +readonly=on \ +-drive file=/var/lib/libvirt/qemu/nvram/guest_VARS.fd,if=pflash,format=raw,\ +unit=1 \ +-m 1024 \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-nographic \ +-nodefaults \ +-monitor unix:/tmp/lib/domain--1-guest/monitor.sock,server,nowait \ +-boot c diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-uefi.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-uefi.xml new file mode 100644 index 0000000..d430f72 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-uefi.xml @@ -0,0 +1,26 @@ +<domain type="qemu"> + <name>guest</name> + <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <memory>1048576</memory> + <currentMemory>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch="aarch64" machine="virt">hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> + <nvram>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom'> + <model>cortex-a57</model> + </cpu> + <clock offset="utc"/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-aarch64</emulator> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-nouefi.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-nouefi.args new file mode 100644 index 0000000..fef3ed1 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-nouefi.args @@ -0,0 +1,22 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-aarch64 \ +-name guest \ +-S \ +-M virt \ +-cpu cortex-a57 \ +-m 1024 \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-nographic \ +-nodefaults \ +-monitor unix:/tmp/lib/domain--1-guest/monitor.sock,server,nowait \ +-no-acpi \ +-boot c \ +-kernel /var/lib/libvirt/images/guest.vmlinux \ +-initrd /var/lib/libvirt/images/guest.initramfs \ +-append 'console=ttyAMA0 rw root=/dev/vda rootwait' diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-nouefi.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-nouefi.xml new file mode 100644 index 0000000..bd9c01c --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-nouefi.xml @@ -0,0 +1,24 @@ +<domain type="qemu"> + <name>guest</name> + <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <memory>1048576</memory> + <currentMemory>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch="aarch64" machine="virt">hvm</type> + <kernel>/var/lib/libvirt/images/guest.vmlinux</kernel> + <initrd>/var/lib/libvirt/images/guest.initramfs</initrd> + <cmdline>console=ttyAMA0 rw root=/dev/vda rootwait</cmdline> + </os> + <cpu mode='custom'> + <model>cortex-a57</model> + </cpu> + <clock offset="utc"/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-aarch64</emulator> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-uefi.args b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-uefi.args new file mode 100644 index 0000000..c62de75 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-uefi.args @@ -0,0 +1,23 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-aarch64 \ +-name guest \ +-S \ +-M virt \ +-cpu cortex-a57 \ +-drive file=/usr/share/AAVMF/AAVMF_CODE.fd,if=pflash,format=raw,unit=0,\ +readonly=on \ +-drive file=/var/lib/libvirt/qemu/nvram/guest_VARS.fd,if=pflash,format=raw,\ +unit=1 \ +-m 1024 \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-nographic \ +-nodefaults \ +-monitor unix:/tmp/lib/domain--1-guest/monitor.sock,server,nowait \ +-no-acpi \ +-boot c diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-uefi.xml b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-uefi.xml new file mode 100644 index 0000000..0104c28 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-uefi.xml @@ -0,0 +1,23 @@ +<domain type="qemu"> + <name>guest</name> + <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <memory>1048576</memory> + <currentMemory>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch="aarch64" machine="virt">hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> + <nvram>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> + </os> + <cpu mode='custom'> + <model>cortex-a57</model> + </cpu> + <clock offset="utc"/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-aarch64</emulator> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.args b/tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.args new file mode 100644 index 0000000..e64edd2 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.args @@ -0,0 +1,21 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-x86_64 \ +-name guest \ +-S \ +-M q35 \ +-cpu Haswell \ +-m 1024 \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-nographic \ +-nodefaults \ +-monitor unix:/tmp/lib/domain--1-guest/monitor.sock,server,nowait \ +-boot c \ +-kernel /var/lib/libvirt/images/guest.vmlinux \ +-initrd /var/lib/libvirt/images/guest.initramfs \ +-append 'rw root=/dev/vda rootwait' diff --git a/tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.xml b/tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.xml new file mode 100644 index 0000000..6305dc7 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.xml @@ -0,0 +1,27 @@ +<domain type="qemu"> + <name>guest</name> + <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <memory>1048576</memory> + <currentMemory>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch="x86_64" machine="q35">hvm</type> + <kernel>/var/lib/libvirt/images/guest.vmlinux</kernel> + <initrd>/var/lib/libvirt/images/guest.initramfs</initrd> + <cmdline>rw root=/dev/vda rootwait</cmdline> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom'> + <model>Haswell</model> + </cpu> + <clock offset="utc"/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.args b/tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.args new file mode 100644 index 0000000..9dfa583 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.args @@ -0,0 +1,22 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-x86_64 \ +-name guest \ +-S \ +-M q35 \ +-cpu Haswell \ +-drive file=/usr/share/OVMF/OVMF_CODE.fd,if=pflash,format=raw,unit=0,\ +readonly=on \ +-drive file=/var/lib/libvirt/qemu/nvram/guest_VARS.fd,if=pflash,format=raw,\ +unit=1 \ +-m 1024 \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-nographic \ +-nodefaults \ +-monitor unix:/tmp/lib/domain--1-guest/monitor.sock,server,nowait \ +-boot c diff --git a/tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.xml b/tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.xml new file mode 100644 index 0000000..da3e93e --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.xml @@ -0,0 +1,26 @@ +<domain type="qemu"> + <name>guest</name> + <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <memory>1048576</memory> + <currentMemory>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch="x86_64" machine="q35">hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> + <nvram>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom'> + <model>Haswell</model> + </cpu> + <clock offset="utc"/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.args b/tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.args new file mode 100644 index 0000000..b8ae308 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.args @@ -0,0 +1,22 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/home/test \ +USER=test \ +LOGNAME=test \ +QEMU_AUDIO_DRV=none \ +/usr/bin/qemu-system-x86_64 \ +-name guest \ +-S \ +-M q35 \ +-cpu Haswell \ +-m 1024 \ +-smp 1,sockets=1,cores=1,threads=1 \ +-uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-nographic \ +-nodefaults \ +-monitor unix:/tmp/lib/domain--1-guest/monitor.sock,server,nowait \ +-no-acpi \ +-boot c \ +-kernel /var/lib/libvirt/images/guest.vmlinux \ +-initrd /var/lib/libvirt/images/guest.initramfs \ +-append 'rw root=/dev/vda rootwait' diff --git a/tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.xml b/tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.xml new file mode 100644 index 0000000..c3407e1 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.xml @@ -0,0 +1,24 @@ +<domain type="qemu"> + <name>guest</name> + <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <memory>1048576</memory> + <currentMemory>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch="x86_64" machine="q35">hvm</type> + <kernel>/var/lib/libvirt/images/guest.vmlinux</kernel> + <initrd>/var/lib/libvirt/images/guest.initramfs</initrd> + <cmdline>rw root=/dev/vda rootwait</cmdline> + </os> + <cpu mode='custom'> + <model>Haswell</model> + </cpu> + <clock offset="utc"/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-uefi.xml b/tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-uefi.xml new file mode 100644 index 0000000..2e4c2dd --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-uefi.xml @@ -0,0 +1,23 @@ +<domain type="qemu"> + <name>guest</name> + <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <memory>1048576</memory> + <currentMemory>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch="x86_64" machine="q35">hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> + <nvram>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> + </os> + <cpu mode='custom'> + <model>Haswell</model> + </cpu> + <clock offset="utc"/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 5ddede9..38a159d 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -772,6 +772,13 @@ mymain(void) QEMU_CAPS_MACHINE_OPT, QEMU_CAPS_MACHINE_SMM_OPT, QEMU_CAPS_VIRTIO_SCSI); + + /* Make sure all combinations of ACPI and UEFI behave as expected */ + DO_TEST("q35-acpi-uefi", NONE); + DO_TEST_FAILURE("q35-noacpi-uefi", NONE); + DO_TEST("q35-noacpi-nouefi", NONE); + DO_TEST("q35-acpi-nouefi", NONE); + DO_TEST("clock-utc", QEMU_CAPS_NODEFCONFIG); DO_TEST("clock-localtime", NONE); DO_TEST("clock-localtime-basis-localtime", QEMU_CAPS_RTC); @@ -2309,6 +2316,13 @@ mymain(void) DO_TEST_FAILURE("aarch64-kvm-32-on-64", QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_DEVICE_VIRTIO_MMIO, QEMU_CAPS_KVM); + + /* Make sure all combinations of ACPI and UEFI behave as expected */ + DO_TEST("aarch64-acpi-uefi", NONE); + DO_TEST("aarch64-noacpi-uefi", NONE); + DO_TEST("aarch64-noacpi-nouefi", NONE); + DO_TEST_FAILURE("aarch64-acpi-nouefi", NONE); + qemuTestSetHostArch(driver.caps, VIR_ARCH_NONE); DO_TEST("kvm-pit-delay", QEMU_CAPS_KVM_PIT_TICK_POLICY); -- 2.7.4

On 03/09/2017 12:37 PM, Andrea Bolognani wrote:
Make sure every combination of ACPI and UEFI works, or fails to work, as expected. --- .../qemuxml2argv-aarch64-acpi-nouefi.args | 22 ++++++++++++++++++ .../qemuxml2argv-aarch64-acpi-nouefi.xml | 27 ++++++++++++++++++++++ .../qemuxml2argv-aarch64-acpi-uefi.args | 22 ++++++++++++++++++ .../qemuxml2argv-aarch64-acpi-uefi.xml | 26 +++++++++++++++++++++ .../qemuxml2argv-aarch64-noacpi-nouefi.args | 22 ++++++++++++++++++ .../qemuxml2argv-aarch64-noacpi-nouefi.xml | 24 +++++++++++++++++++ .../qemuxml2argv-aarch64-noacpi-uefi.args | 23 ++++++++++++++++++ .../qemuxml2argv-aarch64-noacpi-uefi.xml | 23 ++++++++++++++++++ .../qemuxml2argv-q35-acpi-nouefi.args | 21 +++++++++++++++++ .../qemuxml2argv-q35-acpi-nouefi.xml | 27 ++++++++++++++++++++++ .../qemuxml2argv-q35-acpi-uefi.args | 22 ++++++++++++++++++ .../qemuxml2argv-q35-acpi-uefi.xml | 26 +++++++++++++++++++++ .../qemuxml2argv-q35-noacpi-nouefi.args | 22 ++++++++++++++++++ .../qemuxml2argv-q35-noacpi-nouefi.xml | 24 +++++++++++++++++++ .../qemuxml2argv-q35-noacpi-uefi.xml | 23 ++++++++++++++++++ tests/qemuxml2argvtest.c | 14 +++++++++++ 16 files changed, 368 insertions(+) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-nouefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-nouefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-uefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-uefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-nouefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-nouefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-uefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-uefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.xml create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-uefi.xml
This seems reasonable and I think would validate my comments from 1-3 ACK in principle... John
participants (2)
-
Andrea Bolognani
-
John Ferlan