Now that we choose the GIC version based on hardware features when
no <gic/> element has been provided, we need a way to fake the GIC
capabilities of the host.
Update the qemuxml2argv and qemuxml2xml tests to allow this.
---
tests/qemuxml2argvtest.c | 49 +++++++++++++-----
tests/qemuxml2xmltest.c | 130 ++++++++++++++++++++++++-----------------------
tests/testutilsqemu.c | 36 +++++++++++++
tests/testutilsqemu.h | 10 ++++
4 files changed, 148 insertions(+), 77 deletions(-)
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index d1cfbec..6b804b8 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -452,6 +452,28 @@ testAddCPUModels(virQEMUCapsPtr caps, bool skipLegacy)
static int
+testPrepareExtraFlags(struct testInfo *info,
+ bool skipLegacyCPUs,
+ int gic)
+{
+ int ret = -1;
+
+ if (!(info->extraFlags = virQEMUCapsNew()))
+ goto out;
+
+ if (testAddCPUModels(info->extraFlags, skipLegacyCPUs) < 0)
+ goto out;
+
+ if (testQemuCapsSetGIC(info->extraFlags, gic) < 0)
+ goto out;
+
+ ret = 0;
+
+ out:
+ return ret;
+}
+
+static int
mymain(void)
{
int ret = 0;
@@ -501,14 +523,12 @@ mymain(void)
return EXIT_FAILURE;
# define DO_TEST_FULL(name, migrateFrom, migrateFd, flags, \
- parseFlags, ...) \
+ parseFlags, gic, ...) \
do { \
static struct testInfo info = { \
name, NULL, migrateFrom, migrateFd, (flags), parseFlags \
}; \
- if (!(info.extraFlags = virQEMUCapsNew())) \
- return EXIT_FAILURE; \
- if (testAddCPUModels(info.extraFlags, skipLegacyCPUs) < 0) \
+ if (testPrepareExtraFlags(&info, skipLegacyCPUs, gic) < 0) \
return EXIT_FAILURE; \
virQEMUCapsSetList(info.extraFlags, __VA_ARGS__, QEMU_CAPS_LAST);\
if (virtTestRun("QEMU XML-2-ARGV " name, \
@@ -518,23 +538,24 @@ mymain(void)
} while (0)
# define DO_TEST(name, ...) \
- DO_TEST_FULL(name, NULL, -1, 0, 0, __VA_ARGS__)
+ DO_TEST_FULL(name, NULL, -1, 0, 0, GIC_NONE, __VA_ARGS__)
# define DO_TEST_FAILURE(name, ...) \
- DO_TEST_FULL(name, NULL, -1, FLAG_EXPECT_FAILURE, 0, __VA_ARGS__)
+ DO_TEST_FULL(name, NULL, -1, FLAG_EXPECT_FAILURE, \
+ 0, GIC_NONE, __VA_ARGS__)
# define DO_TEST_PARSE_ERROR(name, ...) \
DO_TEST_FULL(name, NULL, -1, \
FLAG_EXPECT_PARSE_ERROR | FLAG_EXPECT_FAILURE, \
- 0, __VA_ARGS__)
+ 0, GIC_NONE, __VA_ARGS__)
# define DO_TEST_PARSE_FLAGS_ERROR(name, parseFlags, ...) \
DO_TEST_FULL(name, NULL, -1, \
FLAG_EXPECT_PARSE_ERROR | FLAG_EXPECT_FAILURE, \
- parseFlags, __VA_ARGS__)
+ parseFlags, GIC_NONE, __VA_ARGS__)
# define DO_TEST_LINUX(name, ...) \
- DO_TEST_LINUX_FULL(name, NULL, -1, 0, 0, __VA_ARGS__)
+ DO_TEST_LINUX_FULL(name, NULL, -1, 0, 0, GIC_NONE, __VA_ARGS__)
# ifdef __linux__
/* This is a macro that invokes test only on Linux. It's
@@ -1236,12 +1257,12 @@ mymain(void)
QEMU_CAPS_PCIDEVICE, QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_PCI_ROMBAR);
- DO_TEST_FULL("restore-v2", "exec:cat", 7, 0, 0, NONE);
- DO_TEST_FULL("restore-v2-fd", "stdio", 7, 0, 0, NONE);
- DO_TEST_FULL("restore-v2-fd", "fd:7", 7, 0, 0, NONE);
- DO_TEST_FULL("migrate", "tcp:10.0.0.1:5000", -1, 0, 0, NONE);
+ DO_TEST_FULL("restore-v2", "exec:cat", 7, 0, 0, GIC_NONE, NONE);
+ DO_TEST_FULL("restore-v2-fd", "stdio", 7, 0, 0, GIC_NONE, NONE);
+ DO_TEST_FULL("restore-v2-fd", "fd:7", 7, 0, 0, GIC_NONE, NONE);
+ DO_TEST_FULL("migrate", "tcp:10.0.0.1:5000", -1, 0, 0, GIC_NONE,
NONE);
- DO_TEST_LINUX_FULL("migrate-numa-unaligned", "stdio", 7, 0, 0,
+ DO_TEST_LINUX_FULL("migrate-numa-unaligned", "stdio", 7, 0, 0,
GIC_NONE,
QEMU_CAPS_NUMA,
QEMU_CAPS_OBJECT_MEMORY_RAM);
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 5a43fa9..9d2109b 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -201,7 +201,8 @@ testInfoFree(struct testInfo *info)
static int
testInfoSet(struct testInfo *info,
const char *name,
- int when)
+ int when,
+ int gic)
{
if (!(info->qemuCaps = virQEMUCapsNew()))
goto error;
@@ -210,6 +211,9 @@ testInfoSet(struct testInfo *info,
QEMU_CAPS_DEVICE,
QEMU_CAPS_LAST);
+ if (testQemuCapsSetGIC(info->qemuCaps, gic) < 0)
+ goto error;
+
if (qemuTestCapsCacheInsert(driver.qemuCapsCache, name,
info->qemuCaps) < 0)
goto error;
@@ -271,9 +275,9 @@ mymain(void)
/* TODO: test with format probing disabled too */
driver.config->allowDiskFormatProbing = true;
-# define DO_TEST_FULL(name, when, ...) \
+# define DO_TEST_FULL(name, when, gic, ...) \
do { \
- if (testInfoSet(&info, name, when) < 0) { \
+ if (testInfoSet(&info, name, when, gic) < 0) { \
VIR_TEST_DEBUG("Failed to generate test data for '%s'",
name); \
return -1; \
} \
@@ -300,7 +304,7 @@ mymain(void)
# define NONE QEMU_CAPS_LAST
# define DO_TEST(name) \
- DO_TEST_FULL(name, WHEN_BOTH, NONE)
+ DO_TEST_FULL(name, WHEN_BOTH, GIC_NONE, NONE)
@@ -398,36 +402,36 @@ mymain(void)
DO_TEST("disk-drive-network-rbd-ipv6");
DO_TEST("disk-drive-network-rbd-ceph-env");
DO_TEST("disk-drive-network-sheepdog");
- DO_TEST_FULL("disk-scsi-device", WHEN_ACTIVE,
+ DO_TEST_FULL("disk-scsi-device", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_SCSI_LSI);
DO_TEST("disk-scsi-vscsi");
- DO_TEST_FULL("disk-scsi-virtio-scsi", WHEN_ACTIVE,
+ DO_TEST_FULL("disk-scsi-virtio-scsi", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_VIRTIO_SCSI);
- DO_TEST_FULL("disk-virtio-scsi-num_queues", WHEN_ACTIVE,
+ DO_TEST_FULL("disk-virtio-scsi-num_queues", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_VIRTIO_SCSI);
- DO_TEST_FULL("disk-virtio-scsi-cmd_per_lun", WHEN_ACTIVE,
+ DO_TEST_FULL("disk-virtio-scsi-cmd_per_lun", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_VIRTIO_SCSI);
- DO_TEST_FULL("disk-virtio-scsi-max_sectors", WHEN_ACTIVE,
+ DO_TEST_FULL("disk-virtio-scsi-max_sectors", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_VIRTIO_SCSI);
- DO_TEST_FULL("disk-virtio-scsi-ioeventfd", WHEN_ACTIVE,
+ DO_TEST_FULL("disk-virtio-scsi-ioeventfd", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_VIRTIO_SCSI);
- DO_TEST_FULL("disk-scsi-megasas", WHEN_ACTIVE,
+ DO_TEST_FULL("disk-scsi-megasas", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_SCSI_MEGASAS);
- DO_TEST_FULL("disk-scsi-mptsas1068", WHEN_ACTIVE,
+ DO_TEST_FULL("disk-scsi-mptsas1068", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_SCSI_MPTSAS1068,
QEMU_CAPS_SCSI_DISK_WWN);
DO_TEST("disk-mirror-old");
- DO_TEST_FULL("disk-mirror", WHEN_ACTIVE, NONE);
- DO_TEST_FULL("disk-mirror", WHEN_INACTIVE, NONE);
- DO_TEST_FULL("disk-active-commit", WHEN_ACTIVE, NONE);
+ DO_TEST_FULL("disk-mirror", WHEN_ACTIVE, GIC_NONE, NONE);
+ DO_TEST_FULL("disk-mirror", WHEN_INACTIVE, GIC_NONE, NONE);
+ DO_TEST_FULL("disk-active-commit", WHEN_ACTIVE, GIC_NONE, NONE);
DO_TEST("graphics-listen-network");
DO_TEST("graphics-vnc");
DO_TEST("graphics-vnc-websocket");
@@ -501,7 +505,7 @@ mymain(void)
DO_TEST("cputune-iothreadsched");
DO_TEST("cputune-iothreadsched-zeropriority");
DO_TEST("cputune-numatune");
- DO_TEST_FULL("vcpu-placement-static", WHEN_ACTIVE,
+ DO_TEST_FULL("vcpu-placement-static", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE);
DO_TEST("smp");
@@ -510,12 +514,12 @@ mymain(void)
DO_TEST("iothreads-ids-partial");
DO_TEST("cputune-iothreads");
DO_TEST("iothreads-disk");
- DO_TEST_FULL("iothreads-disk-virtio-ccw", WHEN_ACTIVE,
+ DO_TEST_FULL("iothreads-disk-virtio-ccw", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_CCW, QEMU_CAPS_VIRTIO_S390);
- DO_TEST_FULL("iothreads-virtio-scsi-pci", WHEN_ACTIVE,
+ DO_TEST_FULL("iothreads-virtio-scsi-pci", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_VIRTIO_SCSI);
- DO_TEST_FULL("iothreads-virtio-scsi-ccw", WHEN_ACTIVE,
+ DO_TEST_FULL("iothreads-virtio-scsi-ccw", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_SCSI,
QEMU_CAPS_VIRTIO_CCW,
QEMU_CAPS_VIRTIO_S390);
@@ -532,24 +536,24 @@ mymain(void)
DO_TEST("blkdeviotune");
DO_TEST("controller-usb-order");
- DO_TEST_FULL("seclabel-dynamic-baselabel", WHEN_INACTIVE, NONE);
- DO_TEST_FULL("seclabel-dynamic-override", WHEN_INACTIVE, NONE);
- DO_TEST_FULL("seclabel-dynamic-labelskip", WHEN_INACTIVE, NONE);
- DO_TEST_FULL("seclabel-dynamic-relabel", WHEN_INACTIVE, NONE);
+ DO_TEST_FULL("seclabel-dynamic-baselabel", WHEN_INACTIVE, GIC_NONE, NONE);
+ DO_TEST_FULL("seclabel-dynamic-override", WHEN_INACTIVE, GIC_NONE, NONE);
+ DO_TEST_FULL("seclabel-dynamic-labelskip", WHEN_INACTIVE, GIC_NONE, NONE);
+ DO_TEST_FULL("seclabel-dynamic-relabel", WHEN_INACTIVE, GIC_NONE, NONE);
DO_TEST("seclabel-static");
- DO_TEST_FULL("seclabel-static-labelskip", WHEN_ACTIVE, NONE);
+ DO_TEST_FULL("seclabel-static-labelskip", WHEN_ACTIVE, GIC_NONE, NONE);
DO_TEST("seclabel-none");
DO_TEST("seclabel-dac-none");
DO_TEST("seclabel-dynamic-none");
DO_TEST("seclabel-device-multiple");
- DO_TEST_FULL("seclabel-dynamic-none-relabel", WHEN_INACTIVE, NONE);
+ DO_TEST_FULL("seclabel-dynamic-none-relabel", WHEN_INACTIVE, GIC_NONE,
NONE);
DO_TEST("numad-static-vcpu-no-numatune");
- DO_TEST_FULL("disk-scsi-lun-passthrough-sgio", WHEN_ACTIVE,
+ DO_TEST_FULL("disk-scsi-lun-passthrough-sgio", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_SCSI_CD, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI,
QEMU_CAPS_SCSI_DISK_WWN);
- DO_TEST_FULL("disk-scsi-disk-vpd", WHEN_ACTIVE,
+ DO_TEST_FULL("disk-scsi-disk-vpd", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_SCSI_CD, QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI,
QEMU_CAPS_SCSI_DISK_WWN);
@@ -569,7 +573,7 @@ mymain(void)
DO_TEST("balloon-device-period");
DO_TEST("channel-virtio-auto");
DO_TEST("console-compat-auto");
- DO_TEST_FULL("disk-scsi-device-auto", WHEN_ACTIVE,
+ DO_TEST_FULL("disk-scsi-device-auto", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG,
QEMU_CAPS_SCSI_LSI);
DO_TEST("console-virtio");
@@ -586,37 +590,37 @@ mymain(void)
DO_TEST("metadata");
DO_TEST("metadata-duplicate");
- DO_TEST_FULL("pci-bridge", WHEN_ACTIVE,
+ DO_TEST_FULL("pci-bridge", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE);
- DO_TEST_FULL("pci-bridge-many-disks", WHEN_ACTIVE,
+ DO_TEST_FULL("pci-bridge-many-disks", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE);
- DO_TEST_FULL("pci-autoadd-addr", WHEN_ACTIVE,
+ DO_TEST_FULL("pci-autoadd-addr", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE);
- DO_TEST_FULL("pci-autoadd-idx", WHEN_ACTIVE,
+ DO_TEST_FULL("pci-autoadd-idx", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE);
- DO_TEST_FULL("q35", WHEN_ACTIVE,
+ DO_TEST_FULL("q35", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
QEMU_CAPS_ICH9_AHCI,
QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_ICH9_USB_EHCI1,
QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL);
- DO_TEST_FULL("q35-usb2", WHEN_ACTIVE,
+ DO_TEST_FULL("q35-usb2", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
QEMU_CAPS_ICH9_AHCI,
QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_ICH9_USB_EHCI1,
QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL);
- DO_TEST_FULL("q35-usb2-multi", WHEN_ACTIVE,
+ DO_TEST_FULL("q35-usb2-multi", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
QEMU_CAPS_ICH9_AHCI,
QEMU_CAPS_PCI_MULTIFUNCTION, QEMU_CAPS_ICH9_USB_EHCI1,
QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL);
- DO_TEST_FULL("q35-usb2-reorder", WHEN_ACTIVE,
+ DO_TEST_FULL("q35-usb2-reorder", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
QEMU_CAPS_ICH9_AHCI,
@@ -624,38 +628,38 @@ mymain(void)
QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL);
- DO_TEST_FULL("pcie-root", WHEN_ACTIVE,
+ DO_TEST_FULL("pcie-root", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
QEMU_CAPS_DEVICE_IOH3420,
QEMU_CAPS_ICH9_AHCI,
QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL);
- DO_TEST_FULL("pcie-root-port", WHEN_ACTIVE,
+ DO_TEST_FULL("pcie-root-port", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
QEMU_CAPS_DEVICE_IOH3420,
QEMU_CAPS_ICH9_AHCI,
QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL);
- DO_TEST_FULL("pcie-switch-upstream-port", WHEN_ACTIVE,
+ DO_TEST_FULL("pcie-switch-upstream-port", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
QEMU_CAPS_DEVICE_IOH3420,
QEMU_CAPS_ICH9_AHCI,
QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL);
- DO_TEST_FULL("pcie-switch-downstream-port", WHEN_ACTIVE,
+ DO_TEST_FULL("pcie-switch-downstream-port", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
QEMU_CAPS_DEVICE_IOH3420,
QEMU_CAPS_ICH9_AHCI,
QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
QEMU_CAPS_VGA_QXL, QEMU_CAPS_DEVICE_QXL);
- DO_TEST_FULL("pci-expander-bus", WHEN_ACTIVE,
+ DO_TEST_FULL("pci-expander-bus", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_PXB);
- DO_TEST_FULL("pcie-expander-bus", WHEN_ACTIVE,
+ DO_TEST_FULL("pcie-expander-bus", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
QEMU_CAPS_DEVICE_IOH3420,
@@ -664,59 +668,59 @@ mymain(void)
QEMU_CAPS_DEVICE_PXB_PCIE);
- DO_TEST_FULL("hostdev-scsi-lsi", WHEN_ACTIVE,
+ DO_TEST_FULL("hostdev-scsi-lsi", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI,
QEMU_CAPS_DEVICE_SCSI_GENERIC);
- DO_TEST_FULL("hostdev-scsi-virtio-scsi", WHEN_ACTIVE,
+ DO_TEST_FULL("hostdev-scsi-virtio-scsi", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI,
QEMU_CAPS_DEVICE_SCSI_GENERIC);
- DO_TEST_FULL("hostdev-scsi-readonly", WHEN_ACTIVE,
+ DO_TEST_FULL("hostdev-scsi-readonly", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI,
QEMU_CAPS_DEVICE_SCSI_GENERIC);
- DO_TEST_FULL("hostdev-scsi-shareable", WHEN_ACTIVE,
+ DO_TEST_FULL("hostdev-scsi-shareable", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI,
QEMU_CAPS_DEVICE_SCSI_GENERIC);
- DO_TEST_FULL("hostdev-scsi-sgio", WHEN_ACTIVE,
+ DO_TEST_FULL("hostdev-scsi-sgio", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI,
QEMU_CAPS_DEVICE_SCSI_GENERIC);
- DO_TEST_FULL("hostdev-scsi-rawio", WHEN_ACTIVE,
+ DO_TEST_FULL("hostdev-scsi-rawio", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI,
QEMU_CAPS_DEVICE_SCSI_GENERIC);
- DO_TEST_FULL("hostdev-scsi-autogen-address", WHEN_ACTIVE,
+ DO_TEST_FULL("hostdev-scsi-autogen-address", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI,
QEMU_CAPS_DEVICE_SCSI_GENERIC);
- DO_TEST_FULL("hostdev-scsi-large-unit", WHEN_ACTIVE,
+ DO_TEST_FULL("hostdev-scsi-large-unit", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI,
QEMU_CAPS_DEVICE_SCSI_GENERIC);
- DO_TEST_FULL("hostdev-scsi-lsi-iscsi", WHEN_ACTIVE,
+ DO_TEST_FULL("hostdev-scsi-lsi-iscsi", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI,
QEMU_CAPS_DEVICE_SCSI_GENERIC);
- DO_TEST_FULL("hostdev-scsi-lsi-iscsi-auth", WHEN_ACTIVE,
+ DO_TEST_FULL("hostdev-scsi-lsi-iscsi-auth", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI,
QEMU_CAPS_DEVICE_SCSI_GENERIC);
- DO_TEST_FULL("hostdev-scsi-virtio-iscsi", WHEN_ACTIVE,
+ DO_TEST_FULL("hostdev-scsi-virtio-iscsi", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI,
QEMU_CAPS_DEVICE_SCSI_GENERIC);
- DO_TEST_FULL("hostdev-scsi-virtio-iscsi-auth", WHEN_ACTIVE,
+ DO_TEST_FULL("hostdev-scsi-virtio-iscsi-auth", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_LSI,
QEMU_CAPS_DEVICE_SCSI_GENERIC);
- DO_TEST_FULL("s390-defaultconsole", WHEN_ACTIVE,
+ DO_TEST_FULL("s390-defaultconsole", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_VIRTIO_CCW, QEMU_CAPS_VIRTIO_S390);
- DO_TEST_FULL("s390-panic", WHEN_BOTH,
+ DO_TEST_FULL("s390-panic", WHEN_BOTH, GIC_NONE,
QEMU_CAPS_VIRTIO_CCW, QEMU_CAPS_VIRTIO_S390);
- DO_TEST_FULL("s390-panic-missing", WHEN_BOTH,
+ DO_TEST_FULL("s390-panic-missing", WHEN_BOTH, GIC_NONE,
QEMU_CAPS_VIRTIO_CCW, QEMU_CAPS_VIRTIO_S390);
- DO_TEST_FULL("s390-panic-no-address", WHEN_BOTH,
+ DO_TEST_FULL("s390-panic-no-address", WHEN_BOTH, GIC_NONE,
QEMU_CAPS_VIRTIO_CCW, QEMU_CAPS_VIRTIO_S390);
DO_TEST("pcihole64");
DO_TEST("pcihole64-gib");
DO_TEST("pcihole64-none");
- DO_TEST_FULL("pcihole64-q35", WHEN_ACTIVE,
+ DO_TEST_FULL("pcihole64-q35", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
QEMU_CAPS_ICH9_AHCI,
@@ -754,17 +758,17 @@ mymain(void)
DO_TEST("smbios");
DO_TEST("smbios-multiple-type2");
- DO_TEST_FULL("aarch64-aavmf-virtio-mmio", WHEN_ACTIVE,
+ DO_TEST_FULL("aarch64-aavmf-virtio-mmio", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_DTB,
QEMU_CAPS_DEVICE_VIRTIO_MMIO,
QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM);
- DO_TEST_FULL("aarch64-virtio-pci-default", WHEN_ACTIVE,
+ DO_TEST_FULL("aarch64-virtio-pci-default", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_DTB,
QEMU_CAPS_DEVICE_VIRTIO_MMIO,
QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM,
QEMU_CAPS_OBJECT_GPEX, QEMU_CAPS_DEVICE_PCI_BRIDGE,
QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_VIRTIO_SCSI);
- DO_TEST_FULL("aarch64-virtio-pci-manual-addresses", WHEN_ACTIVE,
+ DO_TEST_FULL("aarch64-virtio-pci-manual-addresses", WHEN_ACTIVE, GIC_NONE,
QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_DTB,
QEMU_CAPS_DEVICE_VIRTIO_MMIO,
QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM,
@@ -790,7 +794,7 @@ mymain(void)
cfg = virQEMUDriverGetConfig(&driver);
cfg->vncAutoUnixSocket = true;
- DO_TEST_FULL("graphics-vnc-autosocket", WHEN_INACTIVE, NONE);
+ DO_TEST_FULL("graphics-vnc-autosocket", WHEN_INACTIVE, GIC_NONE, NONE);
cfg->vncAutoUnixSocket = false;
virObjectUnref(cfg);
diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c
index 8f7f52b..1cf72a9 100644
--- a/tests/testutilsqemu.c
+++ b/tests/testutilsqemu.c
@@ -556,4 +556,40 @@ int qemuTestDriverInit(virQEMUDriver *driver)
return -1;
}
+int
+testQemuCapsSetGIC(virQEMUCapsPtr qemuCaps,
+ int gic)
+{
+ virGICCapability *gicCapabilities = NULL;
+ size_t ngicCapabilities = 0;
+ int ret = -1;
+
+ if (VIR_ALLOC_N(gicCapabilities, 2) < 0)
+ goto out;
+
+# define IMPL_BOTH \
+ VIR_GIC_IMPLEMENTATION_KERNEL|VIR_GIC_IMPLEMENTATION_EMULATED
+
+ if (gic & GIC_V2) {
+ gicCapabilities[ngicCapabilities].version = VIR_GIC_VERSION_2;
+ gicCapabilities[ngicCapabilities].implementation = IMPL_BOTH;
+ ngicCapabilities++;
+ }
+ if (gic & GIC_V3) {
+ gicCapabilities[ngicCapabilities].version = VIR_GIC_VERSION_3;
+ gicCapabilities[ngicCapabilities].implementation = IMPL_BOTH;
+ ngicCapabilities++;
+ }
+
+# undef IMPL_BOTH
+
+ virQEMUCapsSetGICCapabilities(qemuCaps,
+ gicCapabilities, ngicCapabilities);
+
+ ret = 0;
+
+ out:
+ return ret;
+}
+
#endif
diff --git a/tests/testutilsqemu.h b/tests/testutilsqemu.h
index f5a8056..f2b71e9 100644
--- a/tests/testutilsqemu.h
+++ b/tests/testutilsqemu.h
@@ -5,6 +5,13 @@
# include "qemu/qemu_capabilities.h"
# include "qemu/qemu_conf.h"
+enum {
+ GIC_NONE = 0,
+ GIC_V2,
+ GIC_V3,
+ GIC_BOTH,
+};
+
virCapsPtr testQemuCapsInit(void);
virDomainXMLOptionPtr testQemuXMLConfInit(void);
@@ -20,6 +27,9 @@ void qemuTestDriverFree(virQEMUDriver *driver);
int qemuTestCapsCacheInsert(virQEMUCapsCachePtr cache, const char *binary,
virQEMUCapsPtr caps);
+int testQemuCapsSetGIC(virQEMUCapsPtr qemuCaps,
+ int gic);
+
/* This variable is actually defined in src/qemu/qemu_capabilities.c */
extern const char *qemuTestCapsName;
#endif
--
2.5.5