[PATCH 20/31] qemuhotplugtest: Use real 'latest' capabilities for hotplug testing

Peter Krempa pkrempa at redhat.com
Thu Mar 30 13:38:14 UTC 2023


Rather than test with synthetic capabilities which might get outdated
reuse testQemuGetRealCaps to fetch latest capabilities and use those.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 tests/qemuhotplugtest.c                       | 231 +++++++++---------
 .../ppc64-modern-bulk-result-conf.xml         |   5 +-
 .../ppc64-modern-bulk-result-live.xml         |   5 +-
 .../ppc64-modern-individual-result-conf.xml   |   5 +-
 .../ppc64-modern-individual-result-live.xml   |   5 +-
 .../x86-modern-bulk-result-conf.xml           |   5 +-
 .../x86-modern-bulk-result-live.xml           |   5 +-
 .../x86-modern-individual-add-result-conf.xml |   5 +-
 .../x86-modern-individual-add-result-live.xml |   5 +-
 .../qemuhotplug-base-ccw-live+ccw-virtio.xml  |  13 +-
 ...with-2-ccw-virtio+ccw-virtio-1-reverse.xml |  13 +-
 ...otplug-base-ccw-live-with-2-ccw-virtio.xml |  13 +-
 ...-with-ccw-virtio+ccw-virtio-2-explicit.xml |  13 +-
 ...-ccw-live-with-ccw-virtio+ccw-virtio-2.xml |  13 +-
 ...uhotplug-base-ccw-live-with-ccw-virtio.xml |  13 +-
 .../qemuhotplug-base-ccw-live.xml             |  13 +-
 .../qemuhotplug-base-live+cdrom-scsi.xml      |   5 +-
 .../qemuhotplug-base-live+cdrom-usb.xml       |   5 +-
 ...uhotplug-base-live+disk-scsi-multipath.xml |   5 +-
 ...+disk-scsi-wwn+disk-scsi-duplicate-wwn.xml |   5 +-
 .../qemuhotplug-base-live+disk-scsi.xml       |   5 +-
 .../qemuhotplug-base-live+disk-usb.xml        |   5 +-
 .../qemuhotplug-base-live+disk-virtio.xml     |   5 +-
 .../qemuhotplug-base-live+guestfwd.xml        |   5 +-
 .../qemuhotplug-base-live+hostdev-pci.xml     |   5 +-
 .../qemuhotplug-base-live+interface-vdpa.xml  |   5 +-
 ...qemuhotplug-base-live+ivshmem-doorbell.xml |   5 +-
 .../qemuhotplug-base-live+ivshmem-plain.xml   |   5 +-
 .../qemuhotplug-base-live+qemu-agent.xml      |   5 +-
 ...uhotplug-base-live+watchdog-user-alias.xml |   5 +-
 .../qemuhotplug-base-live+watchdog.xml        |   5 +-
 .../qemuhotplug-base-live.xml                 |   5 +-
 ...hotplug-base-with-scsi-controller-live.xml |   5 +-
 ...thout-scsi-controller-live+disk-scsi-2.xml |   5 +-
 ...g-console-compat-2-live+console-virtio.xml |   5 +-
 .../qemuhotplug-console-compat-2-live.xml     |   5 +-
 ...uhotplug-pseries-base-live+hostdev-pci.xml |   5 +-
 .../qemuhotplug-pseries-base-live.xml         |   5 +-
 38 files changed, 299 insertions(+), 173 deletions(-)

diff --git a/tests/qemuhotplugtest.c b/tests/qemuhotplugtest.c
index 186958cd57..9c8407c5ef 100644
--- a/tests/qemuhotplugtest.c
+++ b/tests/qemuhotplugtest.c
@@ -53,12 +53,22 @@ struct qemuHotplugTestData {
     bool keep;
     virDomainObj *vm;
     bool deviceDeletedEvent;
+    const char *arch;
+    GHashTable *capsLatestFiles;
+    GHashTable *capsCache;
+    GHashTable *schemaCache;
 };

 static int
 qemuHotplugCreateObjects(virDomainXMLOption *xmlopt,
                          virDomainObj **vm,
-                         const char *domxml)
+                         const char *domxml,
+                         const char *arch,
+                         GHashTable *capsLatestFiles,
+                         GHashTable *capsCache,
+                         GHashTable *schemaCache,
+                         GHashTable **schema)
+
 {
     qemuDomainObjPrivate *priv = NULL;
     const unsigned int parseFlags = 0;
@@ -68,28 +78,10 @@ qemuHotplugCreateObjects(virDomainXMLOption *xmlopt,

     priv = (*vm)->privateData;

-    priv->qemuCaps = virQEMUCapsNew();
-
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_SCSI_LSI);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_VIRTIO_SCSI);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_USB_STORAGE);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_IVSHMEM_PLAIN);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_SCSI_DISK_WWN);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_QXL);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_VGA);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_CIRRUS_VGA);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_PIIX_DISABLE_S3);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_PIIX_DISABLE_S4);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_VNC);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_SPICE);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_PR_MANAGER_HELPER);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_SCSI_BLOCK);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_DEVICE_USB_KBD);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_NETDEV_VHOST_VDPA);
-    virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_SET_ACTION);
+    if (!(priv->qemuCaps = testQemuGetRealCaps(arch, "latest", "",
+                                               capsLatestFiles, capsCache,
+                                               schemaCache, schema)))
+        return -1;

     if (qemuTestCapsCacheInsert(driver.qemuCapsCache, priv->qemuCaps) < 0)
         return -1;
@@ -347,7 +339,10 @@ testQemuHotplug(const void *data)
             goto cleanup;
         }
     } else {
-        if (qemuHotplugCreateObjects(driver.xmlopt, &vm, domain_xml) < 0)
+        if (qemuHotplugCreateObjects(driver.xmlopt, &vm, domain_xml,
+                                     test->arch, test->capsLatestFiles,
+                                     test->capsCache, test->schemaCache,
+                                     NULL) < 0)
             goto cleanup;
     }

@@ -478,7 +473,10 @@ struct testQemuHotplugCpuParams {
     bool state;
     bool modern;
     bool fail;
-    GHashTable *schema;
+    const char *arch;
+    GHashTable *capsLatestFiles;
+    GHashTable *capsCache;
+    GHashTable *schemaCache;
 };


@@ -488,6 +486,7 @@ testQemuHotplugCpuPrepare(const struct testQemuHotplugCpuParams *params)
     qemuDomainObjPrivate *priv = NULL;
     g_autofree char *prefix = NULL;
     struct testQemuHotplugCpuData *data = NULL;
+    GHashTable *schema = NULL;

     prefix = g_strdup_printf("%s/qemuhotplugtestcpus/%s", abs_srcdir, params->test);

@@ -503,7 +502,9 @@ testQemuHotplugCpuPrepare(const struct testQemuHotplugCpuParams *params)
     if (virTestLoadFile(data->file_xml_dom, &data->xml_dom) < 0)
         goto error;

-    if (qemuHotplugCreateObjects(driver.xmlopt, &data->vm, data->xml_dom) < 0)
+    if (qemuHotplugCreateObjects(driver.xmlopt, &data->vm, data->xml_dom,
+                                 params->arch, params->capsLatestFiles,
+                                 params->capsCache, params->schemaCache, &schema) < 0)
         goto error;

     /* create vm->newDef */
@@ -517,7 +518,7 @@ testQemuHotplugCpuPrepare(const struct testQemuHotplugCpuParams *params)
         virQEMUCapsSet(priv->qemuCaps, QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS);

     if (!(data->mon = qemuMonitorTestNewFromFileFull(data->file_json_monitor,
-                                                     &driver, data->vm, params->schema)))
+                                                     &driver, data->vm, schema)))
         goto error;

     if (params->fail)
@@ -645,11 +646,17 @@ testQemuHotplugCpuIndividual(const void *opaque)
 static int
 mymain(void)
 {
-    g_autoptr(GHashTable) qmpschema = NULL;
     int ret = 0;
-    struct qemuHotplugTestData data = {0};
-    struct testQemuHotplugCpuParams cpudata;
     g_autoptr(virQEMUDriverConfig) cfg = NULL;
+    g_autoptr(GHashTable) capsLatestFiles = testQemuGetLatestCaps();
+    g_autoptr(GHashTable) capsCache = virHashNew(virObjectUnref);
+    g_autoptr(GHashTable) schemaCache = virHashNew((GDestroyNotify) g_hash_table_unref);
+    struct qemuHotplugTestData data = { .capsLatestFiles = capsLatestFiles,
+                                        .capsCache = capsCache,
+                                        .schemaCache = schemaCache };
+    struct testQemuHotplugCpuParams cpudata = { .capsLatestFiles = capsLatestFiles,
+                                                .capsCache = capsCache,
+                                                .schemaCache = schemaCache };

     if (qemuTestDriverInit(&driver) < 0)
         return EXIT_FAILURE;
@@ -661,13 +668,6 @@ mymain(void)
     if (!(driver.domainEventState = virObjectEventStateNew()))
         return EXIT_FAILURE;

-    if (!(qmpschema = testQEMUSchemaLoadLatest("x86_64"))) {
-        VIR_TEST_VERBOSE("failed to load qapi schema\n");
-        return EXIT_FAILURE;
-    }
-
-    cpudata.schema = qmpschema;
-
     driver.lockManager = virLockManagerPluginNew("nop", "qemu",
                                                  driver.config->configBaseDir,
                                                  0);
@@ -682,10 +682,11 @@ mymain(void)
     }


-#define DO_TEST(file, ACTION, dev, fail_, keep_, ...) \
+#define DO_TEST(archname, file, ACTION, dev, fail_, keep_, ...) \
     do { \
         const char *my_mon[] = { __VA_ARGS__, NULL}; \
         const char *name = file " " #ACTION " " dev; \
+        data.arch = archname; \
         data.action = ACTION; \
         data.domain_filename = file; \
         data.device_filename = dev; \
@@ -696,14 +697,14 @@ mymain(void)
             ret = -1; \
     } while (0)

-#define DO_TEST_ATTACH(file, dev, fail, keep, ...) \
-    DO_TEST(file, ATTACH, dev, fail, keep, __VA_ARGS__)
+#define DO_TEST_ATTACH(arch, file, dev, fail, keep, ...) \
+    DO_TEST(arch, file, ATTACH, dev, fail, keep, __VA_ARGS__)

-#define DO_TEST_DETACH(file, dev, fail, keep, ...) \
-    DO_TEST(file, DETACH, dev, fail, keep, __VA_ARGS__)
+#define DO_TEST_DETACH(arch, file, dev, fail, keep, ...) \
+    DO_TEST(arch, file, DETACH, dev, fail, keep, __VA_ARGS__)

-#define DO_TEST_UPDATE(file, dev, fail, keep, ...) \
-    DO_TEST(file, UPDATE, dev, fail, keep, __VA_ARGS__)
+#define DO_TEST_UPDATE(arch, file, dev, fail, keep, ...) \
+    DO_TEST(arch, file, UPDATE, dev, fail, keep, __VA_ARGS__)


 #define QMP_OK      "{\"return\": {}}"
@@ -722,60 +723,60 @@ mymain(void)
     "}\r\n"

     cfg->spiceTLS = true;
-    DO_TEST_UPDATE("graphics-spice", "graphics-spice-nochange", false, false, NULL);
-    DO_TEST_UPDATE("graphics-spice-timeout", "graphics-spice-timeout-nochange", false, false,
+    DO_TEST_UPDATE("x86_64", "graphics-spice", "graphics-spice-nochange", false, false, NULL);
+    DO_TEST_UPDATE("x86_64", "graphics-spice-timeout", "graphics-spice-timeout-nochange", false, false,
                    "set_password", QMP_OK, "expire_password", QMP_OK);
-    DO_TEST_UPDATE("graphics-spice-timeout", "graphics-spice-timeout-password", false, false,
+    DO_TEST_UPDATE("x86_64", "graphics-spice-timeout", "graphics-spice-timeout-password", false, false,
                    "set_password", QMP_OK, "expire_password", QMP_OK);
-    DO_TEST_UPDATE("graphics-spice", "graphics-spice-listen", true, false, NULL);
-    DO_TEST_UPDATE("graphics-spice-listen-network", "graphics-spice-listen-network-password", false, false,
+    DO_TEST_UPDATE("x86_64", "graphics-spice", "graphics-spice-listen", true, false, NULL);
+    DO_TEST_UPDATE("x86_64", "graphics-spice-listen-network", "graphics-spice-listen-network-password", false, false,
                    "set_password", QMP_OK, "expire_password", QMP_OK);
     cfg->spiceTLS = false;
     /* Strange huh? Currently, only graphics can be updated :-P */
-    DO_TEST_UPDATE("disk-cdrom", "disk-cdrom-nochange", true, false, NULL);
+    DO_TEST_UPDATE("x86_64", "disk-cdrom", "disk-cdrom-nochange", true, false, NULL);

-    DO_TEST_ATTACH("console-compat-2-live", "console-virtio", false, true,
+    DO_TEST_ATTACH("x86_64", "console-compat-2-live", "console-virtio", false, true,
                    "chardev-add", "{\"return\": {\"pty\": \"/dev/pts/26\"}}",
                    "device_add", QMP_OK);

-    DO_TEST_DETACH("console-compat-2-live", "console-virtio", false, false,
+    DO_TEST_DETACH("x86_64", "console-compat-2-live", "console-virtio", false, false,
                    "device_del", QMP_DEVICE_DELETED("console1") QMP_OK,
                    "chardev-remove", QMP_OK, "query-fdsets", "{\"return\": []}");

-    DO_TEST_ATTACH("base-live", "disk-virtio", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "disk-virtio", false, true,
                    "blockdev-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("base-live", "disk-virtio", true, true,
+    DO_TEST_DETACH("x86_64", "base-live", "disk-virtio", true, true,
                    "device_del", QMP_OK);
-    DO_TEST_DETACH("base-live", "disk-virtio", false, false,
+    DO_TEST_DETACH("x86_64", "base-live", "disk-virtio", false, false,
                    "device_del", QMP_DEVICE_DELETED("virtio-disk4") QMP_OK,
                    "blockdev-del", QMP_OK,
                    "blockdev-del", QMP_OK);

-    DO_TEST_ATTACH("base-live", "disk-usb", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "disk-usb", false, true,
                    "blockdev-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("base-live", "disk-usb", true, true,
+    DO_TEST_DETACH("x86_64", "base-live", "disk-usb", true, true,
                    "device_del", QMP_OK);
-    DO_TEST_DETACH("base-live", "disk-usb", false, false,
+    DO_TEST_DETACH("x86_64", "base-live", "disk-usb", false, false,
                    "device_del", QMP_DEVICE_DELETED("usb-disk16") QMP_OK,
                    "blockdev-del", QMP_OK,
                    "blockdev-del", QMP_OK);

-    DO_TEST_ATTACH("base-live", "disk-scsi", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "disk-scsi", false, true,
                    "blockdev-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("base-live", "disk-scsi", true, true,
+    DO_TEST_DETACH("x86_64", "base-live", "disk-scsi", true, true,
                    "device_del", QMP_OK);
-    DO_TEST_DETACH("base-live", "disk-scsi", false, false,
+    DO_TEST_DETACH("x86_64", "base-live", "disk-scsi", false, false,
                    "device_del", QMP_DEVICE_DELETED("scsi0-0-0-5") QMP_OK,
                    "blockdev-del", QMP_OK,
                    "blockdev-del", QMP_OK);

-    DO_TEST_ATTACH("base-without-scsi-controller-live", "disk-scsi-2", false, true,
+    DO_TEST_ATTACH("x86_64", "base-without-scsi-controller-live", "disk-scsi-2", false, true,
                    /* Four controllers added */
                    "device_add", QMP_OK,
                    "device_add", QMP_OK,
@@ -784,109 +785,109 @@ mymain(void)
                    "blockdev-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("base-with-scsi-controller-live", "disk-scsi-2", true, true,
+    DO_TEST_DETACH("x86_64", "base-with-scsi-controller-live", "disk-scsi-2", true, true,
                    "device_del", QMP_OK);
-    DO_TEST_DETACH("base-with-scsi-controller-live", "disk-scsi-2", false, false,
+    DO_TEST_DETACH("x86_64", "base-with-scsi-controller-live", "disk-scsi-2", false, false,
                    "device_del", QMP_DEVICE_DELETED("scsi3-0-6") QMP_OK,
                    "blockdev-del", QMP_OK,
                    "blockdev-del", QMP_OK);

-    DO_TEST_ATTACH("base-live", "disk-scsi-multipath", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "disk-scsi-multipath", false, true,
                    "object-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("base-live", "disk-scsi-multipath", true, true,
+    DO_TEST_DETACH("x86_64", "base-live", "disk-scsi-multipath", true, true,
                    "device_del", QMP_OK);
-    DO_TEST_DETACH("base-live", "disk-scsi-multipath", false, false,
+    DO_TEST_DETACH("x86_64", "base-live", "disk-scsi-multipath", false, false,
                    "device_del", QMP_DEVICE_DELETED("scsi0-0-0-0") QMP_OK,
                    "blockdev-del", QMP_OK,
                    "blockdev-del", QMP_OK,
                    "object-del", QMP_OK);

-    DO_TEST_ATTACH("base-live", "qemu-agent", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "qemu-agent", false, true,
                    "getfd", QMP_OK,
                    "chardev-add", QMP_OK,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("base-live", "qemu-agent-detach", false, false,
+    DO_TEST_DETACH("x86_64", "base-live", "qemu-agent-detach", false, false,
                    "device_del", QMP_DEVICE_DELETED("channel0") QMP_OK,
                    "chardev-remove", QMP_OK, "query-fdsets", "{\"return\": []}");

-    DO_TEST_ATTACH("base-ccw-live", "ccw-virtio", false, true,
+    DO_TEST_ATTACH("s390x", "base-ccw-live", "ccw-virtio", false, true,
                    "blockdev-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("base-ccw-live", "ccw-virtio", false, false,
+    DO_TEST_DETACH("s390x", "base-ccw-live", "ccw-virtio", false, false,
                    "device_del", QMP_DEVICE_DELETED("virtio-disk4") QMP_OK,
                    "blockdev-del", QMP_OK,
                    "blockdev-del", QMP_OK);

-    DO_TEST_ATTACH("base-ccw-live-with-ccw-virtio", "ccw-virtio-2", false, true,
+    DO_TEST_ATTACH("s390x", "base-ccw-live-with-ccw-virtio", "ccw-virtio-2", false, true,
                    "blockdev-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK);

-    DO_TEST_DETACH("base-ccw-live-with-ccw-virtio", "ccw-virtio-2", false, false,
+    DO_TEST_DETACH("s390x", "base-ccw-live-with-ccw-virtio", "ccw-virtio-2", false, false,
                    "device_del", QMP_DEVICE_DELETED("virtio-disk0") QMP_OK,
                    "blockdev-del", QMP_OK,
                    "blockdev-del", QMP_OK);

-    DO_TEST_ATTACH("base-ccw-live-with-ccw-virtio", "ccw-virtio-2-explicit", false, true,
+    DO_TEST_ATTACH("s390x", "base-ccw-live-with-ccw-virtio", "ccw-virtio-2-explicit", false, true,
                    "blockdev-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK);

-    DO_TEST_DETACH("base-ccw-live-with-ccw-virtio", "ccw-virtio-2-explicit", false, false,
+    DO_TEST_DETACH("s390x", "base-ccw-live-with-ccw-virtio", "ccw-virtio-2-explicit", false, false,
                    "device_del", QMP_DEVICE_DELETED("virtio-disk0") QMP_OK,
                    "blockdev-del", QMP_OK,
                    "blockdev-del", QMP_OK);

     /* Attach a second device, then detach the first one. Then attach the first one again. */
-    DO_TEST_ATTACH("base-ccw-live-with-ccw-virtio", "ccw-virtio-2-explicit", false, true,
+    DO_TEST_ATTACH("s390x", "base-ccw-live-with-ccw-virtio", "ccw-virtio-2-explicit", false, true,
                    "blockdev-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK);

-    DO_TEST_DETACH("base-ccw-live-with-2-ccw-virtio", "ccw-virtio-1-explicit", false, true,
+    DO_TEST_DETACH("s390x", "base-ccw-live-with-2-ccw-virtio", "ccw-virtio-1-explicit", false, true,
                    "device_del", QMP_DEVICE_DELETED("virtio-disk4") QMP_OK);

-    DO_TEST_ATTACH("base-ccw-live-with-2-ccw-virtio", "ccw-virtio-1-reverse", false, false,
+    DO_TEST_ATTACH("s390x", "base-ccw-live-with-2-ccw-virtio", "ccw-virtio-1-reverse", false, false,
                    "blockdev-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK);

-    DO_TEST_ATTACH("base-live", "ivshmem-plain", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "ivshmem-plain", false, true,
                    "object-add", QMP_OK,
                    "device_add", QMP_OK);
-    DO_TEST_ATTACH("base-live", "ivshmem-doorbell", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "ivshmem-doorbell", false, true,
                    "chardev-add", QMP_OK,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("base-live+ivshmem-plain", "ivshmem-doorbell-detach", false, true,
+    DO_TEST_DETACH("x86_64", "base-live+ivshmem-plain", "ivshmem-doorbell-detach", false, true,
                    "device_del", QMP_DEVICE_DELETED("shmem1") QMP_OK,
                    "chardev-remove", QMP_OK);
-    DO_TEST_DETACH("base-live", "ivshmem-plain-detach", false, false,
+    DO_TEST_DETACH("x86_64", "base-live", "ivshmem-plain-detach", false, false,
                    "device_del", QMP_DEVICE_DELETED("shmem0") QMP_OK,
                    "object-del", QMP_OK);
-    DO_TEST_ATTACH("base-live+disk-scsi-wwn",
+    DO_TEST_ATTACH("x86_64", "base-live+disk-scsi-wwn",
                    "disk-scsi-duplicate-wwn", false, false,
                    "blockdev-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK);

-    DO_TEST_ATTACH("base-live", "hostdev-pci", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "hostdev-pci", false, true,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("base-live", "hostdev-pci", false, false,
+    DO_TEST_DETACH("x86_64", "base-live", "hostdev-pci", false, false,
                    "device_del", QMP_DEVICE_DELETED("hostdev0") QMP_OK);
-    DO_TEST_ATTACH("pseries-base-live", "hostdev-pci", false, true,
+    DO_TEST_ATTACH("ppc64", "pseries-base-live", "hostdev-pci", false, true,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("pseries-base-live", "hostdev-pci", false, false,
+    DO_TEST_DETACH("ppc64", "pseries-base-live", "hostdev-pci", false, false,
                    "device_del", QMP_DEVICE_DELETED("hostdev0") QMP_OK);

-    DO_TEST_ATTACH("base-live", "interface-vdpa", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "interface-vdpa", false, true,
                    "query-fdsets", "{\"return\":[{\"fdset-id\":99999}]}",
                    "add-fd", "{ \"return\": { \"fdset-id\": 1, \"fd\": 95 }}",
                    "netdev_add", QMP_OK, "device_add", QMP_OK);
-    DO_TEST_DETACH("base-live", "interface-vdpa", false, false,
+    DO_TEST_DETACH("x86_64", "base-live", "interface-vdpa", false, false,
                    "device_del", QMP_DEVICE_DELETED("net0") QMP_OK,
                    "netdev_del", QMP_OK,
                    "query-fdsets",
@@ -894,50 +895,51 @@ mymain(void)
                    "remove-fd", QMP_OK
                    );

-    DO_TEST_ATTACH("base-live", "watchdog", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "watchdog", false, true,
                    "set-action", QMP_OK,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("base-live", "watchdog-full", false, false,
+    DO_TEST_DETACH("x86_64", "base-live", "watchdog-full", false, false,
                    "device_del", QMP_DEVICE_DELETED("watchdog0") QMP_OK);

-    DO_TEST_ATTACH("base-live", "watchdog-user-alias", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "watchdog-user-alias", false, true,
                    "set-action", QMP_OK,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("base-live", "watchdog-user-alias-full", false, false,
+    DO_TEST_DETACH("x86_64", "base-live", "watchdog-user-alias-full", false, false,
                    "device_del", QMP_DEVICE_DELETED("ua-UserWatchdog") QMP_OK);

-    DO_TEST_ATTACH("base-live", "guestfwd", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "guestfwd", false, true,
                    "getfd", QMP_OK,
                    "chardev-add", QMP_OK,
                    "netdev_add", QMP_OK);
-    DO_TEST_DETACH("base-live", "guestfwd", false, false,
+    DO_TEST_DETACH("x86_64", "base-live", "guestfwd", false, false,
                    "netdev_del", QMP_OK);

-    DO_TEST_ATTACH("base-live", "cdrom-usb", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "cdrom-usb", false, true,
                    "blockdev-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("base-live", "cdrom-usb", true, true,
+    DO_TEST_DETACH("x86_64", "base-live", "cdrom-usb", true, true,
                    "device_del", QMP_OK);
-    DO_TEST_DETACH("base-live", "cdrom-usb", false, false,
+    DO_TEST_DETACH("x86_64", "base-live", "cdrom-usb", false, false,
                    "device_del", QMP_DEVICE_DELETED("usb-disk4") QMP_OK,
                    "blockdev-del", QMP_OK,
                    "blockdev-del", QMP_OK);

-    DO_TEST_ATTACH("base-live", "cdrom-scsi", false, true,
+    DO_TEST_ATTACH("x86_64", "base-live", "cdrom-scsi", false, true,
                    "blockdev-add", QMP_OK,
                    "blockdev-add", QMP_OK,
                    "device_add", QMP_OK);
-    DO_TEST_DETACH("base-live", "cdrom-scsi", true, true,
+    DO_TEST_DETACH("x86_64", "base-live", "cdrom-scsi", true, true,
                    "device_del", QMP_OK);
-    DO_TEST_DETACH("base-live", "cdrom-scsi", false, false,
+    DO_TEST_DETACH("x86_64", "base-live", "cdrom-scsi", false, false,
                    "device_del", QMP_DEVICE_DELETED("scsi0-0-0-4") QMP_OK,
                    "blockdev-del", QMP_OK,
                    "blockdev-del", QMP_OK);

-#define DO_TEST_CPU_GROUP(prefix, vcpus, modernhp, expectfail) \
+#define DO_TEST_CPU_GROUP(archname, prefix, vcpus, modernhp, expectfail) \
     do { \
         cpudata.test = prefix; \
+        cpudata.arch = archname; \
         cpudata.newcpus = vcpus; \
         cpudata.modern = modernhp; \
         cpudata.fail = expectfail; \
@@ -946,15 +948,16 @@ mymain(void)
             ret = -1; \
     } while (0)

-    DO_TEST_CPU_GROUP("x86-modern-bulk", 7, true, false);
-    DO_TEST_CPU_GROUP("ppc64-modern-bulk", 24, true, false);
-    DO_TEST_CPU_GROUP("ppc64-modern-bulk", 15, true, true);
-    DO_TEST_CPU_GROUP("ppc64-modern-bulk", 23, true, true);
-    DO_TEST_CPU_GROUP("ppc64-modern-bulk", 25, true, true);
+    DO_TEST_CPU_GROUP("x86_64", "x86-modern-bulk", 7, true, false);
+    DO_TEST_CPU_GROUP("ppc64", "ppc64-modern-bulk", 24, true, false);
+    DO_TEST_CPU_GROUP("ppc64", "ppc64-modern-bulk", 15, true, true);
+    DO_TEST_CPU_GROUP("ppc64", "ppc64-modern-bulk", 23, true, true);
+    DO_TEST_CPU_GROUP("ppc64", "ppc64-modern-bulk", 25, true, true);

-#define DO_TEST_CPU_INDIVIDUAL(prefix, mapstr, statefl, modernhp, expectfail) \
+#define DO_TEST_CPU_INDIVIDUAL(archname, prefix, mapstr, statefl, modernhp, expectfail) \
     do { \
         cpudata.test = prefix; \
+        cpudata.arch = archname; \
         cpudata.cpumap = mapstr; \
         cpudata.state = statefl; \
         cpudata.modern = modernhp; \
@@ -964,13 +967,13 @@ mymain(void)
             ret = -1; \
     } while (0)

-    DO_TEST_CPU_INDIVIDUAL("x86-modern-individual-add", "7", true, true, false);
-    DO_TEST_CPU_INDIVIDUAL("x86-modern-individual-add", "6,7", true, true, true);
-    DO_TEST_CPU_INDIVIDUAL("x86-modern-individual-add", "7", false, true, true);
+    DO_TEST_CPU_INDIVIDUAL("x86_64", "x86-modern-individual-add", "7", true, true, false);
+    DO_TEST_CPU_INDIVIDUAL("x86_64", "x86-modern-individual-add", "6,7", true, true, true);
+    DO_TEST_CPU_INDIVIDUAL("x86_64", "x86-modern-individual-add", "7", false, true, true);

-    DO_TEST_CPU_INDIVIDUAL("ppc64-modern-individual", "16-23", true, true, false);
-    DO_TEST_CPU_INDIVIDUAL("ppc64-modern-individual", "16-22", true, true, true);
-    DO_TEST_CPU_INDIVIDUAL("ppc64-modern-individual", "17", true, true, true);
+    DO_TEST_CPU_INDIVIDUAL("ppc64", "ppc64-modern-individual", "16-23", true, true, false);
+    DO_TEST_CPU_INDIVIDUAL("ppc64", "ppc64-modern-individual", "16-22", true, true, true);
+    DO_TEST_CPU_INDIVIDUAL("ppc64", "ppc64-modern-individual", "17", true, true, true);

     qemuTestDriverFree(&driver);
     virObjectUnref(data.vm);
diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml
index a7ada18bf3..afb2c85bc2 100644
--- a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml
+++ b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml
@@ -42,7 +42,8 @@
     <type arch='x86_64' machine='pc'>hvm</type>
     <boot dev='network'/>
   </os>
-  <cpu>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
     <topology sockets='1' dies='1' cores='4' threads='8'/>
   </cpu>
   <clock offset='utc'/>
@@ -51,7 +52,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <emulator>/usr/bin/qemu-system-x86_64</emulator>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
     <controller type='pci' index='0' model='pci-root'/>
diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml
index 3932fd9b55..d86247d70c 100644
--- a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml
+++ b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml
@@ -42,7 +42,8 @@
     <type arch='x86_64' machine='pc'>hvm</type>
     <boot dev='network'/>
   </os>
-  <cpu>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
     <topology sockets='1' dies='1' cores='4' threads='8'/>
   </cpu>
   <clock offset='utc'/>
@@ -51,7 +52,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <emulator>/usr/bin/qemu-system-x86_64</emulator>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-conf.xml b/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-conf.xml
index f3a1efeede..e8d30f7ddd 100644
--- a/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-conf.xml
+++ b/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-conf.xml
@@ -42,7 +42,8 @@
     <type arch='x86_64' machine='pc'>hvm</type>
     <boot dev='network'/>
   </os>
-  <cpu>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
     <topology sockets='1' dies='1' cores='4' threads='8'/>
   </cpu>
   <clock offset='utc'/>
@@ -51,7 +52,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <emulator>/usr/bin/qemu-system-x86_64</emulator>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
     <controller type='pci' index='0' model='pci-root'/>
diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-live.xml b/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-live.xml
index 6d64ead3d0..afc500657c 100644
--- a/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-live.xml
+++ b/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-live.xml
@@ -42,7 +42,8 @@
     <type arch='x86_64' machine='pc'>hvm</type>
     <boot dev='network'/>
   </os>
-  <cpu>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
     <topology sockets='1' dies='1' cores='4' threads='8'/>
   </cpu>
   <clock offset='utc'/>
@@ -51,7 +52,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <emulator>/usr/bin/qemu-system-x86_64</emulator>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml b/tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml
index 87eb19ebd8..8d52ffedb4 100644
--- a/tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml
+++ b/tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml
@@ -18,7 +18,8 @@
     <type arch='x86_64' machine='pc'>hvm</type>
     <boot dev='network'/>
   </os>
-  <cpu>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
     <topology sockets='4' dies='1' cores='2' threads='1'/>
   </cpu>
   <clock offset='utc'/>
@@ -27,7 +28,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <emulator>/usr/bin/qemu-system-x86_64</emulator>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
     <controller type='pci' index='0' model='pci-root'/>
diff --git a/tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml b/tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml
index 251634e266..f416397e33 100644
--- a/tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml
+++ b/tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml
@@ -18,7 +18,8 @@
     <type arch='x86_64' machine='pc'>hvm</type>
     <boot dev='network'/>
   </os>
-  <cpu>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
     <topology sockets='4' dies='1' cores='2' threads='1'/>
   </cpu>
   <clock offset='utc'/>
@@ -27,7 +28,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <emulator>/usr/bin/qemu-system-x86_64</emulator>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-conf.xml b/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-conf.xml
index 140892aaf8..0bd2af8e43 100644
--- a/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-conf.xml
+++ b/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-conf.xml
@@ -18,7 +18,8 @@
     <type arch='x86_64' machine='pc'>hvm</type>
     <boot dev='network'/>
   </os>
-  <cpu>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
     <topology sockets='4' dies='1' cores='2' threads='1'/>
   </cpu>
   <clock offset='utc'/>
@@ -27,7 +28,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <emulator>/usr/bin/qemu-system-x86_64</emulator>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
     <controller type='pci' index='0' model='pci-root'/>
diff --git a/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-live.xml b/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-live.xml
index 45196ba1d1..b31e6ebe55 100644
--- a/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-live.xml
+++ b/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-live.xml
@@ -18,7 +18,8 @@
     <type arch='x86_64' machine='pc'>hvm</type>
     <boot dev='network'/>
   </os>
-  <cpu>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
     <topology sockets='4' dies='1' cores='2' threads='1'/>
   </cpu>
   <clock offset='utc'/>
@@ -27,7 +28,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <emulator>/usr/bin/qemu-system-x86_64</emulator>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live+ccw-virtio.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live+ccw-virtio.xml
index 4036adde89..798a7ab732 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live+ccw-virtio.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live+ccw-virtio.xml
@@ -13,6 +13,7 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='host-model' check='partial'/>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -31,18 +32,24 @@
     </disk>
     <controller type='usb' index='0'>
       <alias name='usb'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'>
+        <zpci uid='0x0001' fid='0x00000000'/>
+      </address>
     </controller>
     <controller type='scsi' index='0' model='virtio-scsi'>
       <alias name='scsi0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'>
+        <zpci uid='0x0002' fid='0x00000001'/>
+      </address>
     </controller>
     <controller type='pci' index='0' model='pci-root'>
       <alias name='pci'/>
     </controller>
     <controller type='virtio-serial' index='0'>
       <alias name='virtio-serial0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'>
+        <zpci uid='0x0003' fid='0x00000002'/>
+      </address>
     </controller>
     <audio id='1' type='none'/>
     <memballoon model='none'/>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-reverse.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-reverse.xml
index 2eb7f9eb0e..5d2769c420 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-reverse.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio+ccw-virtio-1-reverse.xml
@@ -13,6 +13,7 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='host-model' check='partial'/>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -41,18 +42,24 @@
     </disk>
     <controller type='usb' index='0'>
       <alias name='usb'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'>
+        <zpci uid='0x0001' fid='0x00000000'/>
+      </address>
     </controller>
     <controller type='scsi' index='0' model='virtio-scsi'>
       <alias name='scsi0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'>
+        <zpci uid='0x0002' fid='0x00000001'/>
+      </address>
     </controller>
     <controller type='pci' index='0' model='pci-root'>
       <alias name='pci'/>
     </controller>
     <controller type='virtio-serial' index='0'>
       <alias name='virtio-serial0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'>
+        <zpci uid='0x0003' fid='0x00000002'/>
+      </address>
     </controller>
     <audio id='1' type='none'/>
     <memballoon model='none'/>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio.xml
index 935925bdba..845c0e1c98 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-2-ccw-virtio.xml
@@ -13,6 +13,7 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='host-model' check='partial'/>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -31,18 +32,24 @@
     </disk>
     <controller type='usb' index='0'>
       <alias name='usb'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'>
+        <zpci uid='0x0001' fid='0x00000000'/>
+      </address>
     </controller>
     <controller type='scsi' index='0' model='virtio-scsi'>
       <alias name='scsi0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'>
+        <zpci uid='0x0002' fid='0x00000001'/>
+      </address>
     </controller>
     <controller type='pci' index='0' model='pci-root'>
       <alias name='pci'/>
     </controller>
     <controller type='virtio-serial' index='0'>
       <alias name='virtio-serial0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'>
+        <zpci uid='0x0003' fid='0x00000002'/>
+      </address>
     </controller>
     <audio id='1' type='none'/>
     <memballoon model='none'/>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2-explicit.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2-explicit.xml
index 51fe4b461a..29b8fdd6c8 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2-explicit.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2-explicit.xml
@@ -13,6 +13,7 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='host-model' check='partial'/>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -40,18 +41,24 @@
     </disk>
     <controller type='usb' index='0'>
       <alias name='usb'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'>
+        <zpci uid='0x0001' fid='0x00000000'/>
+      </address>
     </controller>
     <controller type='scsi' index='0' model='virtio-scsi'>
       <alias name='scsi0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'>
+        <zpci uid='0x0002' fid='0x00000001'/>
+      </address>
     </controller>
     <controller type='pci' index='0' model='pci-root'>
       <alias name='pci'/>
     </controller>
     <controller type='virtio-serial' index='0'>
       <alias name='virtio-serial0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'>
+        <zpci uid='0x0003' fid='0x00000002'/>
+      </address>
     </controller>
     <audio id='1' type='none'/>
     <memballoon model='none'/>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2.xml
index 51fe4b461a..29b8fdd6c8 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio+ccw-virtio-2.xml
@@ -13,6 +13,7 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='host-model' check='partial'/>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -40,18 +41,24 @@
     </disk>
     <controller type='usb' index='0'>
       <alias name='usb'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'>
+        <zpci uid='0x0001' fid='0x00000000'/>
+      </address>
     </controller>
     <controller type='scsi' index='0' model='virtio-scsi'>
       <alias name='scsi0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'>
+        <zpci uid='0x0002' fid='0x00000001'/>
+      </address>
     </controller>
     <controller type='pci' index='0' model='pci-root'>
       <alias name='pci'/>
     </controller>
     <controller type='virtio-serial' index='0'>
       <alias name='virtio-serial0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'>
+        <zpci uid='0x0003' fid='0x00000002'/>
+      </address>
     </controller>
     <audio id='1' type='none'/>
     <memballoon model='none'/>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio.xml
index adec141512..82402ffe1b 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live-with-ccw-virtio.xml
@@ -13,6 +13,7 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='host-model' check='partial'/>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -30,18 +31,24 @@
     </disk>
     <controller type='usb' index='0'>
       <alias name='usb'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'>
+        <zpci uid='0x0001' fid='0x00000000'/>
+      </address>
     </controller>
     <controller type='scsi' index='0' model='virtio-scsi'>
       <alias name='scsi0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'>
+        <zpci uid='0x0002' fid='0x00000001'/>
+      </address>
     </controller>
     <controller type='pci' index='0' model='pci-root'>
       <alias name='pci'/>
     </controller>
     <controller type='virtio-serial' index='0'>
       <alias name='virtio-serial0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'>
+        <zpci uid='0x0003' fid='0x00000002'/>
+      </address>
     </controller>
     <audio id='1' type='none'/>
     <memballoon model='none'/>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live.xml
index 2267fe39df..6eb60b13a9 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-ccw-live.xml
@@ -13,6 +13,7 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='host-model' check='partial'/>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -21,18 +22,24 @@
     <emulator>/usr/bin/qemu-system-s390x</emulator>
     <controller type='usb' index='0'>
       <alias name='usb'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'>
+        <zpci uid='0x0001' fid='0x00000000'/>
+      </address>
     </controller>
     <controller type='scsi' index='0' model='virtio-scsi'>
       <alias name='scsi0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'>
+        <zpci uid='0x0002' fid='0x00000001'/>
+      </address>
     </controller>
     <controller type='pci' index='0' model='pci-root'>
       <alias name='pci'/>
     </controller>
     <controller type='virtio-serial' index='0'>
       <alias name='virtio-serial0'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'>
+        <zpci uid='0x0003' fid='0x00000002'/>
+      </address>
     </controller>
     <audio id='1' type='none'/>
     <memballoon model='none'/>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+cdrom-scsi.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+cdrom-scsi.xml
index 922e9c1b4e..4353191197 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+cdrom-scsi.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+cdrom-scsi.xml
@@ -13,6 +13,9 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+  </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -28,7 +31,7 @@
       <alias name='scsi0-0-0-4'/>
       <address type='drive' controller='0' bus='0' target='0' unit='4'/>
     </disk>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+cdrom-usb.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+cdrom-usb.xml
index ba8ce3b2c8..d31136dbc8 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+cdrom-usb.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+cdrom-usb.xml
@@ -13,6 +13,9 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+  </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -28,7 +31,7 @@
       <alias name='usb-disk4'/>
       <address type='usb' bus='0' port='1'/>
     </disk>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi-multipath.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi-multipath.xml
index bea59403be..0a0fbc1c95 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi-multipath.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi-multipath.xml
@@ -13,6 +13,9 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+  </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -31,7 +34,7 @@
       <alias name='scsi0-0-0-0'/>
       <address type='drive' controller='0' bus='0' target='0' unit='0'/>
     </disk>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi-wwn+disk-scsi-duplicate-wwn.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi-wwn+disk-scsi-duplicate-wwn.xml
index b3089b2006..732a27be43 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi-wwn+disk-scsi-duplicate-wwn.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi-wwn+disk-scsi-duplicate-wwn.xml
@@ -13,6 +13,9 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+  </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -41,7 +44,7 @@
       <alias name='scsi0-0-0-6'/>
       <address type='drive' controller='0' bus='0' target='0' unit='6'/>
     </disk>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi.xml
index 4241b3b71a..8bff04a4b6 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-scsi.xml
@@ -13,6 +13,9 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+  </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -29,7 +32,7 @@
       <alias name='scsi0-0-0-5'/>
       <address type='drive' controller='0' bus='0' target='0' unit='5'/>
     </disk>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-usb.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-usb.xml
index 4202ded5b3..5964c23ba0 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-usb.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-usb.xml
@@ -13,6 +13,9 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+  </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -29,7 +32,7 @@
       <alias name='usb-disk16'/>
       <address type='usb' bus='0' port='1'/>
     </disk>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-virtio.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-virtio.xml
index 02851d4ca1..684b3c26de 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-virtio.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+disk-virtio.xml
@@ -13,6 +13,9 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+  </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -29,7 +32,7 @@
       <alias name='virtio-disk4'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
     </disk>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+guestfwd.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+guestfwd.xml
index 3bf64326c5..da5e446cf6 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+guestfwd.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+guestfwd.xml
@@ -13,13 +13,16 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</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>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+hostdev-pci.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+hostdev-pci.xml
index d8b0c80feb..e49e21c53e 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+hostdev-pci.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+hostdev-pci.xml
@@ -13,13 +13,16 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</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>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+interface-vdpa.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+interface-vdpa.xml
index f80dc42ac5..d1459d5c75 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+interface-vdpa.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+interface-vdpa.xml
@@ -13,13 +13,16 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</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>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-doorbell.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-doorbell.xml
index b0898a968b..84a1286eb5 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-doorbell.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-doorbell.xml
@@ -13,13 +13,16 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</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>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-plain.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-plain.xml
index db21d2b5ba..ac50d6bdfc 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-plain.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+ivshmem-plain.xml
@@ -13,13 +13,16 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</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>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+qemu-agent.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+qemu-agent.xml
index c288b502aa..0e4c3907bf 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+qemu-agent.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+qemu-agent.xml
@@ -13,13 +13,16 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</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>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+watchdog-user-alias.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+watchdog-user-alias.xml
index f54c7a4599..86c8a8bb26 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+watchdog-user-alias.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+watchdog-user-alias.xml
@@ -13,13 +13,16 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</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>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+watchdog.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+watchdog.xml
index bd85c56ce6..11f7987964 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live+watchdog.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live+watchdog.xml
@@ -13,13 +13,16 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</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>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-live.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-live.xml
index a02bc39663..82dfef6dd0 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-live.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-live.xml
@@ -13,13 +13,16 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</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>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-with-scsi-controller-live.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-with-scsi-controller-live.xml
index 939cea4cbe..29e4008070 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-with-scsi-controller-live.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-with-scsi-controller-live.xml
@@ -13,13 +13,16 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</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>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-base-without-scsi-controller-live+disk-scsi-2.xml b/tests/qemuhotplugtestdomains/qemuhotplug-base-without-scsi-controller-live+disk-scsi-2.xml
index 97f651374d..6044179cbb 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-base-without-scsi-controller-live+disk-scsi-2.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-base-without-scsi-controller-live+disk-scsi-2.xml
@@ -13,6 +13,9 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+  </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -29,7 +32,7 @@
       <alias name='scsi3-0-6'/>
       <address type='drive' controller='3' bus='0' target='0' unit='6'/>
     </disk>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-console-compat-2-live+console-virtio.xml b/tests/qemuhotplugtestdomains/qemuhotplug-console-compat-2-live+console-virtio.xml
index 72516555a0..24d061ea7b 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-console-compat-2-live+console-virtio.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-console-compat-2-live+console-virtio.xml
@@ -16,6 +16,9 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+  </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -45,7 +48,7 @@
       <alias name='ide'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
     </controller>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-console-compat-2-live.xml b/tests/qemuhotplugtestdomains/qemuhotplug-console-compat-2-live.xml
index 6197a2bfe3..1665a9e3ea 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-console-compat-2-live.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-console-compat-2-live.xml
@@ -16,6 +16,9 @@
     <apic/>
     <pae/>
   </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+  </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -45,7 +48,7 @@
       <alias name='ide'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
     </controller>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='piix3-uhci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-pseries-base-live+hostdev-pci.xml b/tests/qemuhotplugtestdomains/qemuhotplug-pseries-base-live+hostdev-pci.xml
index 6a60a388a9..13d10e57aa 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-pseries-base-live+hostdev-pci.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-pseries-base-live+hostdev-pci.xml
@@ -8,6 +8,9 @@
     <type arch='ppc64' machine='pseries'>hvm</type>
     <boot dev='hd'/>
   </os>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>POWER9</model>
+  </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -24,7 +27,7 @@
       <target index='1'/>
       <alias name='pci.1'/>
     </controller>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='pci-ohci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
     </controller>
diff --git a/tests/qemuhotplugtestdomains/qemuhotplug-pseries-base-live.xml b/tests/qemuhotplugtestdomains/qemuhotplug-pseries-base-live.xml
index e9b89a7acc..f31ae0013e 100644
--- a/tests/qemuhotplugtestdomains/qemuhotplug-pseries-base-live.xml
+++ b/tests/qemuhotplugtestdomains/qemuhotplug-pseries-base-live.xml
@@ -8,6 +8,9 @@
     <type arch='ppc64' machine='pseries'>hvm</type>
     <boot dev='hd'/>
   </os>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>POWER9</model>
+  </cpu>
   <clock offset='utc'/>
   <on_poweroff>destroy</on_poweroff>
   <on_reboot>restart</on_reboot>
@@ -24,7 +27,7 @@
       <target index='1'/>
       <alias name='pci.1'/>
     </controller>
-    <controller type='usb' index='0'>
+    <controller type='usb' index='0' model='pci-ohci'>
       <alias name='usb'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
     </controller>
-- 
2.39.2



More information about the libvir-list mailing list