qemu: Introduce qemuDomainDeviceDefValidateIOMMU()
[libvirt/ericb.git] / tests / qemuxml2argvtest.c
blobec5807479828e5d1233fcdf64eba8e468fc250c0
1 #include <config.h>
3 #include <unistd.h>
5 #include <sys/types.h>
6 #include <fcntl.h>
8 #include "testutils.h"
10 #ifdef WITH_QEMU
12 # include "internal.h"
13 # include "viralloc.h"
14 # include "qemu/qemu_alias.h"
15 # include "qemu/qemu_capabilities.h"
16 # include "qemu/qemu_command.h"
17 # include "qemu/qemu_domain.h"
18 # include "qemu/qemu_migration.h"
19 # include "qemu/qemu_process.h"
20 # include "datatypes.h"
21 # include "conf/storage_conf.h"
22 # include "cpu/cpu_map.h"
23 # include "virstring.h"
24 # include "storage/storage_driver.h"
25 # include "virmock.h"
26 # include "virfilewrapper.h"
27 # include "configmake.h"
29 # define LIBVIRT_QEMU_CAPSPRIV_H_ALLOW
30 # include "qemu/qemu_capspriv.h"
32 # include "testutilsqemu.h"
34 # define VIR_FROM_THIS VIR_FROM_QEMU
36 static virQEMUDriver driver;
38 static unsigned char *
39 fakeSecretGetValue(virSecretPtr obj ATTRIBUTE_UNUSED,
40 size_t *value_size,
41 unsigned int fakeflags ATTRIBUTE_UNUSED,
42 unsigned int internalFlags ATTRIBUTE_UNUSED)
44 char *secret;
45 if (VIR_STRDUP(secret, "AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+HOBlMQ1A") < 0)
46 return NULL;
47 *value_size = strlen(secret);
48 return (unsigned char *) secret;
51 static virSecretPtr
52 fakeSecretLookupByUsage(virConnectPtr conn,
53 int usageType,
54 const char *usageID)
56 unsigned char uuid[VIR_UUID_BUFLEN];
57 if (usageType == VIR_SECRET_USAGE_TYPE_VOLUME) {
58 if (!STRPREFIX(usageID, "/storage/guest_disks/")) {
59 virReportError(VIR_ERR_INTERNAL_ERROR,
60 "test provided invalid volume storage prefix '%s'",
61 usageID);
62 return NULL;
64 } else if (STRNEQ(usageID, "mycluster_myname")) {
65 virReportError(VIR_ERR_INTERNAL_ERROR,
66 "test provided incorrect usage '%s'", usageID);
67 return NULL;
70 if (virUUIDGenerate(uuid) < 0)
71 return NULL;
73 return virGetSecret(conn, uuid, usageType, usageID);
76 static virSecretPtr
77 fakeSecretLookupByUUID(virConnectPtr conn,
78 const unsigned char *uuid)
80 /* NB: This mocked value could be "tls" or "volume" depending on
81 * which test is being run, we'll leave at NONE (or 0) */
82 return virGetSecret(conn, uuid, VIR_SECRET_USAGE_TYPE_NONE, "");
85 static virSecretDriver fakeSecretDriver = {
86 .connectNumOfSecrets = NULL,
87 .connectListSecrets = NULL,
88 .secretLookupByUUID = fakeSecretLookupByUUID,
89 .secretLookupByUsage = fakeSecretLookupByUsage,
90 .secretDefineXML = NULL,
91 .secretGetXMLDesc = NULL,
92 .secretSetValue = NULL,
93 .secretGetValue = fakeSecretGetValue,
94 .secretUndefine = NULL,
98 # define STORAGE_POOL_XML_PATH "storagepoolxml2xmlout/"
99 static const unsigned char fakeUUID[VIR_UUID_BUFLEN] = "fakeuuid";
101 static virStoragePoolPtr
102 fakeStoragePoolLookupByName(virConnectPtr conn,
103 const char *name)
105 char *xmlpath = NULL;
106 virStoragePoolPtr ret = NULL;
108 if (STRNEQ(name, "inactive")) {
109 if (virAsprintf(&xmlpath, "%s/%s%s.xml",
110 abs_srcdir,
111 STORAGE_POOL_XML_PATH,
112 name) < 0)
113 return NULL;
115 if (!virFileExists(xmlpath)) {
116 virReportError(VIR_ERR_NO_STORAGE_POOL,
117 "File '%s' not found", xmlpath);
118 goto cleanup;
122 ret = virGetStoragePool(conn, name, fakeUUID, NULL, NULL);
124 cleanup:
125 VIR_FREE(xmlpath);
126 return ret;
130 static virStorageVolPtr
131 fakeStorageVolLookupByName(virStoragePoolPtr pool,
132 const char *name)
134 char **volinfo = NULL;
135 virStorageVolPtr ret = NULL;
137 if (STREQ(pool->name, "inactive")) {
138 virReportError(VIR_ERR_OPERATION_INVALID,
139 "storage pool '%s' is not active", pool->name);
140 return NULL;
143 if (STREQ(name, "nonexistent")) {
144 virReportError(VIR_ERR_NO_STORAGE_VOL,
145 "no storage vol with matching name '%s'", name);
146 return NULL;
149 if (!strchr(name, '+'))
150 goto fallback;
152 if (!(volinfo = virStringSplit(name, "+", 2)))
153 return NULL;
155 if (!volinfo[1])
156 goto fallback;
158 ret = virGetStorageVol(pool->conn, pool->name, volinfo[1], volinfo[0],
159 NULL, NULL);
161 cleanup:
162 virStringListFree(volinfo);
163 return ret;
165 fallback:
166 ret = virGetStorageVol(pool->conn, pool->name, name, "block", NULL, NULL);
167 goto cleanup;
170 static int
171 fakeStorageVolGetInfo(virStorageVolPtr vol,
172 virStorageVolInfoPtr info)
174 memset(info, 0, sizeof(*info));
176 info->type = virStorageVolTypeFromString(vol->key);
178 if (info->type < 0) {
179 virReportError(VIR_ERR_INTERNAL_ERROR,
180 "Invalid volume type '%s'", vol->key);
181 return -1;
184 return 0;
188 static char *
189 fakeStorageVolGetPath(virStorageVolPtr vol)
191 char *ret = NULL;
193 ignore_value(virAsprintf(&ret, "/some/%s/device/%s", vol->key, vol->name));
195 return ret;
199 static char *
200 fakeStoragePoolGetXMLDesc(virStoragePoolPtr pool,
201 unsigned int flags_unused ATTRIBUTE_UNUSED)
203 char *xmlpath = NULL;
204 char *xmlbuf = NULL;
206 if (STREQ(pool->name, "inactive")) {
207 virReportError(VIR_ERR_NO_STORAGE_POOL, NULL);
208 return NULL;
211 if (virAsprintf(&xmlpath, "%s/%s%s.xml",
212 abs_srcdir,
213 STORAGE_POOL_XML_PATH,
214 pool->name) < 0)
215 return NULL;
217 if (virTestLoadFile(xmlpath, &xmlbuf) < 0) {
218 virReportError(VIR_ERR_INTERNAL_ERROR,
219 "failed to load XML file '%s'",
220 xmlpath);
221 goto cleanup;
224 cleanup:
225 VIR_FREE(xmlpath);
227 return xmlbuf;
230 static int
231 fakeStoragePoolIsActive(virStoragePoolPtr pool)
233 if (STREQ(pool->name, "inactive"))
234 return 0;
236 return 1;
239 /* Test storage pool implementation
241 * These functions aid testing of storage pool related stuff when creating a
242 * qemu command line.
244 * There are a few "magic" values to pass to these functions:
246 * 1) "inactive" as a pool name to create an inactive pool. All other names are
247 * interpreted as file names in storagepoolxml2xmlout/ and are used as the
248 * definition for the pool. If the file doesn't exist the pool doesn't exist.
250 * 2) "nonexistent" returns an error while looking up a volume. Otherwise
251 * pattern VOLUME_TYPE+VOLUME_PATH can be used to simulate a volume in a pool.
252 * This creates a fake path for this volume. If the '+' sign is omitted, block
253 * type is assumed.
255 static virStorageDriver fakeStorageDriver = {
256 .storagePoolLookupByName = fakeStoragePoolLookupByName,
257 .storageVolLookupByName = fakeStorageVolLookupByName,
258 .storagePoolGetXMLDesc = fakeStoragePoolGetXMLDesc,
259 .storageVolGetPath = fakeStorageVolGetPath,
260 .storageVolGetInfo = fakeStorageVolGetInfo,
261 .storagePoolIsActive = fakeStoragePoolIsActive,
265 /* virNetDevOpenvswitchGetVhostuserIfname mocks a portdev name - handle that */
266 static virNWFilterBindingPtr
267 fakeNWFilterBindingLookupByPortDev(virConnectPtr conn,
268 const char *portdev)
270 if (STREQ(portdev, "vhost-user0"))
271 return virGetNWFilterBinding(conn, "fake_vnet0", "fakeFilterName");
273 virReportError(VIR_ERR_NO_NWFILTER_BINDING,
274 "no nwfilter binding for port dev '%s'", portdev);
275 return NULL;
279 static int
280 fakeNWFilterBindingDelete(virNWFilterBindingPtr binding ATTRIBUTE_UNUSED)
282 return 0;
286 static virNWFilterDriver fakeNWFilterDriver = {
287 .nwfilterBindingLookupByPortDev = fakeNWFilterBindingLookupByPortDev,
288 .nwfilterBindingDelete = fakeNWFilterBindingDelete,
292 static int
293 testAddCPUModels(virQEMUCapsPtr caps, bool skipLegacy)
295 virArch arch = virQEMUCapsGetArch(caps);
296 const char *x86Models[] = {
297 "Opteron_G3", "Opteron_G2", "Opteron_G1",
298 "Nehalem", "Penryn", "Conroe",
299 "Haswell-noTSX", "Haswell",
301 const char *x86LegacyModels[] = {
302 "n270", "athlon", "pentium3", "pentium2", "pentium",
303 "486", "coreduo", "kvm32", "qemu32", "kvm64",
304 "core2duo", "phenom", "qemu64",
306 const char *armModels[] = {
307 "cortex-a9", "cortex-a8", "cortex-a57", "cortex-a53",
309 const char *ppc64Models[] = {
310 "POWER8", "POWER7",
312 const char *s390xModels[] = {
313 "z990", "zEC12", "z13",
316 if (ARCH_IS_X86(arch)) {
317 if (virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_KVM, x86Models,
318 ARRAY_CARDINALITY(x86Models),
319 VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0 ||
320 virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_QEMU, x86Models,
321 ARRAY_CARDINALITY(x86Models),
322 VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0)
323 return -1;
325 if (!skipLegacy) {
326 if (virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_KVM,
327 x86LegacyModels,
328 ARRAY_CARDINALITY(x86LegacyModels),
329 VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0 ||
330 virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_QEMU,
331 x86LegacyModels,
332 ARRAY_CARDINALITY(x86LegacyModels),
333 VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0)
334 return -1;
336 } else if (ARCH_IS_ARM(arch)) {
337 if (virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_KVM, armModels,
338 ARRAY_CARDINALITY(armModels),
339 VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0 ||
340 virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_QEMU, armModels,
341 ARRAY_CARDINALITY(armModels),
342 VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0)
343 return -1;
344 } else if (ARCH_IS_PPC64(arch)) {
345 if (virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_KVM, ppc64Models,
346 ARRAY_CARDINALITY(ppc64Models),
347 VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0 ||
348 virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_QEMU, ppc64Models,
349 ARRAY_CARDINALITY(ppc64Models),
350 VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0)
351 return -1;
352 } else if (ARCH_IS_S390(arch)) {
353 if (virQEMUCapsAddCPUDefinitions(caps, VIR_DOMAIN_VIRT_KVM, s390xModels,
354 ARRAY_CARDINALITY(s390xModels),
355 VIR_DOMCAPS_CPU_USABLE_UNKNOWN) < 0)
356 return -1;
359 return 0;
363 static int
364 testUpdateQEMUCaps(const struct testQemuInfo *info,
365 virDomainObjPtr vm,
366 virCapsPtr caps)
368 int ret = -1;
370 if (!caps)
371 goto cleanup;
373 virQEMUCapsSetArch(info->qemuCaps, vm->def->os.arch);
375 virQEMUCapsInitQMPBasicArch(info->qemuCaps);
377 if (testAddCPUModels(info->qemuCaps,
378 !!(info->flags & FLAG_SKIP_LEGACY_CPUS)) < 0)
379 goto cleanup;
381 virQEMUCapsInitHostCPUModel(info->qemuCaps, caps->host.arch,
382 VIR_DOMAIN_VIRT_KVM);
383 virQEMUCapsInitHostCPUModel(info->qemuCaps, caps->host.arch,
384 VIR_DOMAIN_VIRT_QEMU);
386 ret = 0;
388 cleanup:
389 return ret;
393 static int
394 testCheckExclusiveFlags(int flags)
396 virCheckFlags(FLAG_EXPECT_FAILURE |
397 FLAG_EXPECT_PARSE_ERROR |
398 FLAG_FIPS |
399 FLAG_REAL_CAPS |
400 FLAG_SKIP_LEGACY_CPUS |
401 0, -1);
403 VIR_EXCLUSIVE_FLAGS_RET(FLAG_REAL_CAPS, FLAG_SKIP_LEGACY_CPUS, -1);
404 return 0;
408 static int
409 testCompareXMLToArgv(const void *data)
411 struct testQemuInfo *info = (void *) data;
412 char *migrateURI = NULL;
413 char *actualargv = NULL;
414 unsigned int flags = info->flags;
415 unsigned int parseFlags = info->parseFlags;
416 int ret = -1;
417 virDomainObjPtr vm = NULL;
418 virDomainChrSourceDef monitor_chr;
419 virConnectPtr conn;
420 char *log = NULL;
421 virCommandPtr cmd = NULL;
422 size_t i;
423 qemuDomainObjPrivatePtr priv = NULL;
425 memset(&monitor_chr, 0, sizeof(monitor_chr));
427 if (!(conn = virGetConnect()))
428 goto cleanup;
430 conn->secretDriver = &fakeSecretDriver;
431 conn->storageDriver = &fakeStorageDriver;
432 conn->nwfilterDriver = &fakeNWFilterDriver;
434 virSetConnectInterface(conn);
435 virSetConnectNetwork(conn);
436 virSetConnectNWFilter(conn);
437 virSetConnectNodeDev(conn);
438 virSetConnectSecret(conn);
439 virSetConnectStorage(conn);
441 if (virQEMUCapsGet(info->qemuCaps, QEMU_CAPS_ENABLE_FIPS))
442 flags |= FLAG_FIPS;
444 if (testCheckExclusiveFlags(info->flags) < 0)
445 goto cleanup;
447 if (qemuTestCapsCacheInsert(driver.qemuCapsCache, info->qemuCaps) < 0)
448 goto cleanup;
450 if (info->migrateFrom &&
451 !(migrateURI = qemuMigrationDstGetURI(info->migrateFrom,
452 info->migrateFd)))
453 goto cleanup;
455 if (!(vm = virDomainObjNew(driver.xmlopt)))
456 goto cleanup;
458 parseFlags |= VIR_DOMAIN_DEF_PARSE_INACTIVE;
459 if (!(vm->def = virDomainDefParseFile(info->infile,
460 driver.caps, driver.xmlopt,
461 NULL, parseFlags))) {
462 if (flags & FLAG_EXPECT_PARSE_ERROR)
463 goto ok;
464 goto cleanup;
466 if (flags & FLAG_EXPECT_PARSE_ERROR) {
467 VIR_TEST_DEBUG("passed instead of expected parse error");
468 goto cleanup;
470 priv = vm->privateData;
472 if (virBitmapParse("0-3", &priv->autoNodeset, 4) < 0)
473 goto cleanup;
475 if (!virDomainDefCheckABIStability(vm->def, vm->def, driver.xmlopt)) {
476 VIR_TEST_DEBUG("ABI stability check failed on %s", info->infile);
477 goto cleanup;
480 vm->def->id = -1;
482 if (qemuProcessPrepareMonitorChr(&monitor_chr, priv->libDir) < 0)
483 goto cleanup;
485 if (!(info->flags & FLAG_REAL_CAPS) &&
486 testUpdateQEMUCaps(info, vm, driver.caps) < 0)
487 goto cleanup;
489 log = virTestLogContentAndReset();
490 VIR_FREE(log);
491 virResetLastError();
493 for (i = 0; i < vm->def->nhostdevs; i++) {
494 virDomainHostdevDefPtr hostdev = vm->def->hostdevs[i];
496 if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
497 hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
498 hostdev->source.subsys.u.pci.backend == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_DEFAULT) {
499 hostdev->source.subsys.u.pci.backend = VIR_DOMAIN_HOSTDEV_PCI_BACKEND_KVM;
503 if (vm->def->vsock) {
504 virDomainVsockDefPtr vsock = vm->def->vsock;
505 qemuDomainVsockPrivatePtr vsockPriv =
506 (qemuDomainVsockPrivatePtr)vsock->privateData;
508 if (vsock->auto_cid == VIR_TRISTATE_BOOL_YES)
509 vsock->guest_cid = 42;
511 vsockPriv->vhostfd = 6789;
514 if (vm->def->tpm) {
515 switch (vm->def->tpm->type) {
516 case VIR_DOMAIN_TPM_TYPE_EMULATOR:
517 VIR_FREE(vm->def->tpm->data.emulator.source.data.file.path);
518 if (VIR_STRDUP(vm->def->tpm->data.emulator.source.data.file.path,
519 "/dev/test") < 0)
520 goto cleanup;
521 vm->def->tpm->data.emulator.source.type = VIR_DOMAIN_CHR_TYPE_FILE;
522 break;
523 case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH:
524 case VIR_DOMAIN_TPM_TYPE_LAST:
525 break;
529 if (!(cmd = qemuProcessCreatePretendCmd(&driver, vm, migrateURI,
530 (flags & FLAG_FIPS), false,
531 VIR_QEMU_PROCESS_START_COLD))) {
532 if (flags & FLAG_EXPECT_FAILURE)
533 goto ok;
534 goto cleanup;
536 if (flags & FLAG_EXPECT_FAILURE) {
537 VIR_TEST_DEBUG("passed instead of expected failure");
538 goto cleanup;
541 if (!(actualargv = virCommandToString(cmd, false)))
542 goto cleanup;
544 if (virTestCompareToFile(actualargv, info->outfile) < 0)
545 goto cleanup;
547 ret = 0;
550 if (ret == 0 && flags & FLAG_EXPECT_FAILURE) {
551 ret = -1;
552 VIR_TEST_DEBUG("Error expected but there wasn't any.\n");
553 goto cleanup;
555 if (!virTestOOMActive()) {
556 if (flags & FLAG_EXPECT_FAILURE) {
557 if ((log = virTestLogContentAndReset()))
558 VIR_TEST_DEBUG("Got expected error: \n%s", log);
560 virResetLastError();
561 ret = 0;
564 cleanup:
565 VIR_FREE(log);
566 VIR_FREE(actualargv);
567 virDomainChrSourceDefClear(&monitor_chr);
568 virCommandFree(cmd);
569 virObjectUnref(vm);
570 virSetConnectSecret(NULL);
571 virSetConnectStorage(NULL);
572 virObjectUnref(conn);
573 VIR_FREE(migrateURI);
574 return ret;
577 static int
578 testInfoSetPaths(struct testQemuInfo *info,
579 const char *suffix)
581 if (virAsprintf(&info->infile, "%s/qemuxml2argvdata/%s.xml",
582 abs_srcdir, info->name) < 0 ||
583 virAsprintf(&info->outfile, "%s/qemuxml2argvdata/%s%s.args",
584 abs_srcdir, info->name, suffix ? suffix : "") < 0) {
585 return -1;
588 return 0;
591 # define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX"
593 static int
594 mymain(void)
596 int ret = 0;
597 char *fakerootdir;
598 virHashTablePtr capslatest = NULL;
600 if (VIR_STRDUP_QUIET(fakerootdir, FAKEROOTDIRTEMPLATE) < 0) {
601 fprintf(stderr, "Out of memory\n");
602 abort();
605 if (!mkdtemp(fakerootdir)) {
606 fprintf(stderr, "Cannot create fakerootdir");
607 abort();
610 setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, 1);
612 /* Set the timezone because we are mocking the time() function.
613 * If we don't do that, then localtime() may return unpredictable
614 * results. In order to detect things that just work by a blind
615 * chance, we need to set an virtual timezone that no libvirt
616 * developer resides in. */
617 if (setenv("TZ", "VIR00:30", 1) < 0) {
618 perror("setenv");
619 return EXIT_FAILURE;
622 if (qemuTestDriverInit(&driver) < 0)
623 return EXIT_FAILURE;
625 driver.privileged = true;
627 VIR_FREE(driver.config->defaultTLSx509certdir);
628 if (VIR_STRDUP_QUIET(driver.config->defaultTLSx509certdir, "/etc/pki/qemu") < 0)
629 return EXIT_FAILURE;
630 VIR_FREE(driver.config->vncTLSx509certdir);
631 if (VIR_STRDUP_QUIET(driver.config->vncTLSx509certdir, "/etc/pki/libvirt-vnc") < 0)
632 return EXIT_FAILURE;
633 VIR_FREE(driver.config->spiceTLSx509certdir);
634 if (VIR_STRDUP_QUIET(driver.config->spiceTLSx509certdir, "/etc/pki/libvirt-spice") < 0)
635 return EXIT_FAILURE;
636 VIR_FREE(driver.config->chardevTLSx509certdir);
637 if (VIR_STRDUP_QUIET(driver.config->chardevTLSx509certdir, "/etc/pki/libvirt-chardev") < 0)
638 return EXIT_FAILURE;
639 VIR_FREE(driver.config->vxhsTLSx509certdir);
640 if (VIR_STRDUP_QUIET(driver.config->vxhsTLSx509certdir, "/etc/pki/libvirt-vxhs/dummy,path") < 0)
641 return EXIT_FAILURE;
642 VIR_FREE(driver.config->nbdTLSx509certdir);
643 if (VIR_STRDUP_QUIET(driver.config->nbdTLSx509certdir, "/etc/pki/libvirt-nbd/dummy,path") < 0)
644 return EXIT_FAILURE;
646 VIR_FREE(driver.config->hugetlbfs);
647 if (VIR_ALLOC_N(driver.config->hugetlbfs, 2) < 0)
648 return EXIT_FAILURE;
649 driver.config->nhugetlbfs = 2;
650 if (VIR_STRDUP(driver.config->hugetlbfs[0].mnt_dir, "/dev/hugepages2M") < 0 ||
651 VIR_STRDUP(driver.config->hugetlbfs[1].mnt_dir, "/dev/hugepages1G") < 0)
652 return EXIT_FAILURE;
653 driver.config->hugetlbfs[0].size = 2048;
654 driver.config->hugetlbfs[0].deflt = true;
655 driver.config->hugetlbfs[1].size = 1048576;
656 driver.config->spiceTLS = 1;
657 if (VIR_STRDUP_QUIET(driver.config->spicePassword, "123456") < 0)
658 return EXIT_FAILURE;
659 VIR_FREE(driver.config->memoryBackingDir);
660 if (VIR_STRDUP_QUIET(driver.config->memoryBackingDir, "/var/lib/libvirt/qemu/ram") < 0)
661 return EXIT_FAILURE;
662 VIR_FREE(driver.config->nvramDir);
663 if (VIR_STRDUP(driver.config->nvramDir, "/var/lib/libvirt/qemu/nvram") < 0)
664 return EXIT_FAILURE;
666 capslatest = testQemuGetLatestCaps();
667 if (!capslatest)
668 return EXIT_FAILURE;
670 virFileWrapperAddPrefix(SYSCONFDIR "/qemu/firmware",
671 abs_srcdir "/qemufirmwaredata/etc/qemu/firmware");
672 virFileWrapperAddPrefix(PREFIX "/share/qemu/firmware",
673 abs_srcdir "/qemufirmwaredata/usr/share/qemu/firmware");
674 virFileWrapperAddPrefix("/home/user/.config/qemu/firmware",
675 abs_srcdir "/qemufirmwaredata/home/user/.config/qemu/firmware");
678 * The following set of macros allows testing of XML -> argv conversion with a
679 * real set of capabilities gathered from a real qemu copy. It is desired to use
680 * these for positive test cases as it provides combinations of flags which
681 * can be met in real life.
683 * The capabilities are taken from the real capabilities stored in
684 * tests/qemucapabilitiesdata.
686 * It is suggested to use the DO_TEST_CAPS_LATEST macro which always takes the
687 * most recent capability set. In cases when the new code would change behaviour
688 * the test cases should be forked using DO_TEST_CAPS_VER with the appropriate
689 * version.
691 # define DO_TEST_INTERNAL(_name, _suffix, ...) \
692 do { \
693 static struct testQemuInfo info = { \
694 .name = _name, \
695 }; \
696 if (testQemuInfoSetArgs(&info, capslatest, \
697 __VA_ARGS__, ARG_END) < 0) \
698 return EXIT_FAILURE; \
699 if (testInfoSetPaths(&info, _suffix) < 0) { \
700 VIR_TEST_DEBUG("Failed to generate paths for '%s'", _name); \
701 return EXIT_FAILURE; \
703 if (virTestRun("QEMU XML-2-ARGV " _name _suffix, \
704 testCompareXMLToArgv, &info) < 0) \
705 ret = -1; \
706 testQemuInfoClear(&info); \
707 } while (0)
709 # define DO_TEST_CAPS_INTERNAL(name, arch, ver, ...) \
710 DO_TEST_INTERNAL(name, "." arch "-" ver, \
711 ARG_CAPS_ARCH, arch, \
712 ARG_CAPS_VER, ver, \
713 __VA_ARGS__)
715 # define DO_TEST_CAPS_ARCH_VER(name, arch, ver) \
716 DO_TEST_CAPS_INTERNAL(name, arch, ver, ARG_END)
718 # define DO_TEST_CAPS_VER(name, ver) \
719 DO_TEST_CAPS_ARCH_VER(name, "x86_64", ver)
721 # define DO_TEST_CAPS_ARCH_LATEST_FULL(name, arch, ...) \
722 DO_TEST_CAPS_INTERNAL(name, arch, "latest", __VA_ARGS__)
724 # define DO_TEST_CAPS_ARCH_LATEST(name, arch) \
725 DO_TEST_CAPS_ARCH_LATEST_FULL(name, arch, ARG_END)
727 # define DO_TEST_CAPS_LATEST(name) \
728 DO_TEST_CAPS_ARCH_LATEST(name, "x86_64")
730 # define DO_TEST_CAPS_LATEST_FAILURE(name) \
731 DO_TEST_CAPS_ARCH_LATEST_FULL(name, "x86_64", \
732 ARG_FLAGS, FLAG_EXPECT_FAILURE)
734 # define DO_TEST_CAPS_LATEST_PARSE_ERROR(name) \
735 DO_TEST_CAPS_ARCH_LATEST_FULL(name, "x86_64", \
736 ARG_FLAGS, FLAG_EXPECT_PARSE_ERROR)
739 # define DO_TEST_FULL(name, ...) \
740 DO_TEST_INTERNAL(name, "", \
741 __VA_ARGS__, QEMU_CAPS_LAST)
743 /* All the following macros require an explicit QEMU_CAPS_* list
744 * at the end of the argument list, or the NONE placeholder.
745 * */
746 # define DO_TEST(name, ...) \
747 DO_TEST_FULL(name, \
748 ARG_QEMU_CAPS, __VA_ARGS__)
750 # define DO_TEST_GIC(name, gic, ...) \
751 DO_TEST_FULL(name, \
752 ARG_GIC, gic, \
753 ARG_QEMU_CAPS, __VA_ARGS__)
755 # define DO_TEST_FAILURE(name, ...) \
756 DO_TEST_FULL(name, \
757 ARG_FLAGS, FLAG_EXPECT_FAILURE, \
758 ARG_QEMU_CAPS, __VA_ARGS__)
760 # define DO_TEST_PARSE_ERROR(name, ...) \
761 DO_TEST_FULL(name, \
762 ARG_FLAGS, FLAG_EXPECT_PARSE_ERROR | FLAG_EXPECT_FAILURE, \
763 ARG_QEMU_CAPS, __VA_ARGS__)
765 # define NONE QEMU_CAPS_LAST
767 /* Unset or set all envvars here that are copied in qemudBuildCommandLine
768 * using ADD_ENV_COPY, otherwise these tests may fail due to unexpected
769 * values for these envvars */
770 setenv("PATH", "/bin", 1);
771 setenv("USER", "test", 1);
772 setenv("LOGNAME", "test", 1);
773 setenv("HOME", "/home/test", 1);
774 unsetenv("TMPDIR");
775 unsetenv("LD_PRELOAD");
776 unsetenv("LD_LIBRARY_PATH");
777 unsetenv("QEMU_AUDIO_DRV");
778 unsetenv("SDL_AUDIODRIVER");
780 DO_TEST("minimal", NONE);
781 DO_TEST("minimal-sandbox",
782 QEMU_CAPS_SECCOMP_BLACKLIST);
783 DO_TEST_PARSE_ERROR("minimal-no-memory", NONE);
784 DO_TEST("minimal-msg-timestamp", QEMU_CAPS_MSG_TIMESTAMP);
786 DO_TEST_CAPS_LATEST("genid");
787 DO_TEST_CAPS_LATEST("genid-auto");
789 DO_TEST("machine-aliases1", NONE);
790 DO_TEST("machine-aliases2", QEMU_CAPS_KVM);
791 DO_TEST("machine-core-on", NONE);
792 driver.config->dumpGuestCore = true;
793 DO_TEST("machine-core-off", NONE);
794 driver.config->dumpGuestCore = false;
795 DO_TEST("machine-smm-opt",
796 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
797 QEMU_CAPS_DEVICE_PCI_BRIDGE,
798 QEMU_CAPS_DEVICE_IOH3420,
799 QEMU_CAPS_ICH9_AHCI,
800 QEMU_CAPS_MACHINE_SMM_OPT,
801 QEMU_CAPS_VIRTIO_SCSI);
802 DO_TEST("machine-vmport-opt",
803 QEMU_CAPS_MACHINE_VMPORT_OPT);
804 DO_TEST("default-kvm-host-arch", NONE);
805 DO_TEST("default-qemu-host-arch", NONE);
806 DO_TEST("x86-kvm-32-on-64", NONE);
807 DO_TEST("boot-cdrom", NONE);
808 DO_TEST("boot-network", NONE);
809 DO_TEST("boot-floppy", NONE);
810 DO_TEST("boot-floppy-q35",
811 QEMU_CAPS_DEVICE_IOH3420,
812 QEMU_CAPS_ICH9_AHCI);
813 DO_TEST("boot-multi", NONE);
814 DO_TEST("boot-menu-enable", NONE);
815 DO_TEST("boot-menu-enable-with-timeout",
816 QEMU_CAPS_SPLASH_TIMEOUT);
817 DO_TEST_FAILURE("boot-menu-enable-with-timeout", NONE);
818 DO_TEST_PARSE_ERROR("boot-menu-enable-with-timeout-invalid", NONE);
819 DO_TEST("boot-menu-disable", NONE);
820 DO_TEST("boot-menu-disable-drive", NONE);
821 DO_TEST_PARSE_ERROR("boot-dev+order",
822 QEMU_CAPS_VIRTIO_BLK_SCSI);
823 DO_TEST("boot-order",
824 QEMU_CAPS_VIRTIO_BLK_SCSI);
825 DO_TEST("boot-complex",
826 QEMU_CAPS_VIRTIO_BLK_SCSI);
827 DO_TEST("boot-strict",
828 QEMU_CAPS_BOOT_STRICT,
829 QEMU_CAPS_VIRTIO_BLK_SCSI);
831 DO_TEST("reboot-timeout-disabled", QEMU_CAPS_REBOOT_TIMEOUT);
832 DO_TEST("reboot-timeout-enabled", QEMU_CAPS_REBOOT_TIMEOUT);
833 DO_TEST_FAILURE("reboot-timeout-enabled", NONE);
835 DO_TEST("bios",
836 QEMU_CAPS_DEVICE_ISA_SERIAL,
837 QEMU_CAPS_SGA);
838 DO_TEST("bios-nvram", NONE);
839 DO_TEST("bios-nvram-secure",
840 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
841 QEMU_CAPS_DEVICE_PCI_BRIDGE,
842 QEMU_CAPS_DEVICE_IOH3420,
843 QEMU_CAPS_ICH9_AHCI,
844 QEMU_CAPS_MACHINE_SMM_OPT,
845 QEMU_CAPS_VIRTIO_SCSI);
847 /* Make sure all combinations of ACPI and UEFI behave as expected */
848 DO_TEST("q35-acpi-uefi", NONE);
849 DO_TEST_PARSE_ERROR("q35-noacpi-uefi", NONE);
850 DO_TEST("q35-noacpi-nouefi", NONE);
851 DO_TEST("q35-acpi-nouefi", NONE);
853 DO_TEST("clock-utc", NONE);
854 DO_TEST("clock-localtime", NONE);
855 DO_TEST("clock-localtime-basis-localtime", NONE);
856 DO_TEST("clock-variable", NONE);
857 DO_TEST("clock-france", NONE);
858 DO_TEST("clock-hpet-off", NONE);
859 DO_TEST("clock-catchup", QEMU_CAPS_KVM_PIT_TICK_POLICY);
860 DO_TEST("cpu-kvmclock", NONE);
861 DO_TEST("cpu-host-kvmclock", NONE);
862 DO_TEST("kvmclock", QEMU_CAPS_KVM);
863 DO_TEST("clock-timer-hyperv-rtc", QEMU_CAPS_KVM);
865 DO_TEST("cpu-eoi-disabled", NONE);
866 DO_TEST("cpu-eoi-enabled", NONE);
867 DO_TEST("controller-order",
868 QEMU_CAPS_KVM,
869 QEMU_CAPS_PIIX3_USB_UHCI,
870 QEMU_CAPS_CCID_PASSTHRU,
871 QEMU_CAPS_SPICE,
872 QEMU_CAPS_HDA_DUPLEX,
873 QEMU_CAPS_USB_HUB,
874 QEMU_CAPS_DEVICE_ISA_SERIAL,
875 QEMU_CAPS_DEVICE_CIRRUS_VGA);
876 DO_TEST("eoi-disabled", NONE);
877 DO_TEST("eoi-enabled", NONE);
878 DO_TEST("pv-spinlock-disabled", NONE);
879 DO_TEST("pv-spinlock-enabled", NONE);
880 DO_TEST("kvmclock+eoi-disabled", NONE);
882 DO_TEST("hyperv", NONE);
883 DO_TEST("hyperv-off", NONE);
884 DO_TEST("hyperv-panic", NONE);
886 DO_TEST("kvm-features", NONE);
887 DO_TEST("kvm-features-off", NONE);
889 DO_TEST("pmu-feature", NONE);
890 DO_TEST("pmu-feature-off", NONE);
892 DO_TEST("pages-discard",
893 QEMU_CAPS_OBJECT_MEMORY_FILE,
894 QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD);
895 DO_TEST("pages-discard-hugepages",
896 QEMU_CAPS_OBJECT_MEMORY_RAM,
897 QEMU_CAPS_OBJECT_MEMORY_FILE,
898 QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD);
899 DO_TEST("pages-dimm-discard",
900 QEMU_CAPS_DEVICE_PC_DIMM,
901 QEMU_CAPS_OBJECT_MEMORY_FILE,
902 QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD);
903 DO_TEST("hugepages-default", NONE);
904 DO_TEST("hugepages-default-2M", NONE);
905 DO_TEST("hugepages-default-system-size", NONE);
906 DO_TEST_PARSE_ERROR("hugepages-default-1G-nodeset-2M", NONE);
907 DO_TEST("hugepages-nodeset", NONE);
908 DO_TEST_PARSE_ERROR("hugepages-nodeset-nonexist",
909 QEMU_CAPS_DEVICE_PC_DIMM,
910 QEMU_CAPS_OBJECT_MEMORY_FILE,
911 QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD);
912 DO_TEST("hugepages-numa-default",
913 QEMU_CAPS_OBJECT_MEMORY_FILE);
914 DO_TEST("hugepages-numa-default-2M",
915 QEMU_CAPS_OBJECT_MEMORY_RAM,
916 QEMU_CAPS_OBJECT_MEMORY_FILE);
917 DO_TEST("hugepages-numa-default-dimm",
918 QEMU_CAPS_DEVICE_PC_DIMM,
919 QEMU_CAPS_OBJECT_MEMORY_FILE);
920 DO_TEST("hugepages-numa-nodeset",
921 QEMU_CAPS_OBJECT_MEMORY_RAM,
922 QEMU_CAPS_OBJECT_MEMORY_FILE);
923 DO_TEST("hugepages-numa-nodeset-part",
924 QEMU_CAPS_OBJECT_MEMORY_RAM,
925 QEMU_CAPS_OBJECT_MEMORY_FILE);
926 DO_TEST_PARSE_ERROR("hugepages-numa-nodeset-nonexist",
927 QEMU_CAPS_OBJECT_MEMORY_RAM,
928 QEMU_CAPS_OBJECT_MEMORY_FILE);
929 DO_TEST("hugepages-shared",
930 QEMU_CAPS_OBJECT_MEMORY_RAM,
931 QEMU_CAPS_OBJECT_MEMORY_FILE);
932 DO_TEST_PARSE_ERROR("hugepages-memaccess-invalid", NONE);
933 DO_TEST("hugepages-memaccess", QEMU_CAPS_OBJECT_MEMORY_FILE,
934 QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_DEVICE_PC_DIMM,
935 QEMU_CAPS_NUMA);
936 DO_TEST("hugepages-memaccess2", QEMU_CAPS_OBJECT_MEMORY_FILE,
937 QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_DEVICE_PC_DIMM,
938 QEMU_CAPS_NUMA);
939 DO_TEST_PARSE_ERROR("hugepages-memaccess3",
940 QEMU_CAPS_OBJECT_MEMORY_RAM,
941 QEMU_CAPS_OBJECT_MEMORY_FILE);
942 DO_TEST_CAPS_LATEST("hugepages-nvdimm");
943 DO_TEST("nosharepages", QEMU_CAPS_MEM_MERGE);
944 DO_TEST("disk-cdrom", NONE);
945 DO_TEST_CAPS_VER("disk-cdrom", "2.12.0");
946 DO_TEST_CAPS_LATEST("disk-cdrom");
947 DO_TEST_CAPS_LATEST("disk-cdrom-bus-other");
948 DO_TEST("disk-iscsi", NONE);
949 DO_TEST("disk-cdrom-network", QEMU_CAPS_KVM);
950 DO_TEST_CAPS_VER("disk-cdrom-network", "2.12.0");
951 DO_TEST_CAPS_LATEST("disk-cdrom-network");
952 DO_TEST("disk-cdrom-tray",
953 QEMU_CAPS_VIRTIO_TX_ALG);
954 DO_TEST_CAPS_VER("disk-cdrom-tray", "2.12.0");
955 DO_TEST_CAPS_LATEST("disk-cdrom-tray");
956 DO_TEST("disk-floppy", NONE);
957 DO_TEST_CAPS_VER("disk-floppy", "2.12.0");
958 DO_TEST_CAPS_LATEST("disk-floppy");
959 DO_TEST_CAPS_VER("disk-floppy-q35-2_9", "2.12.0");
960 DO_TEST_CAPS_LATEST("disk-floppy-q35-2_9");
961 DO_TEST_CAPS_VER("disk-floppy-q35-2_11", "2.12.0");
962 DO_TEST_CAPS_LATEST("disk-floppy-q35-2_11");
963 DO_TEST_FAILURE("disk-floppy-pseries",
964 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
965 DO_TEST("disk-floppy-tray", NONE);
966 DO_TEST("disk-virtio-s390",
967 QEMU_CAPS_VIRTIO_S390);
968 DO_TEST("disk-virtio", NONE);
969 DO_TEST("disk-virtio-ccw",
970 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
971 DO_TEST("disk-virtio-ccw-many",
972 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
973 DO_TEST("disk-virtio-s390-zpci",
974 QEMU_CAPS_DEVICE_ZPCI,
975 QEMU_CAPS_CCW,
976 QEMU_CAPS_VIRTIO_S390);
977 DO_TEST("disk-order", QEMU_CAPS_VIRTIO_BLK_SCSI);
978 DO_TEST("disk-virtio-queues",
979 QEMU_CAPS_VIRTIO_BLK_NUM_QUEUES);
980 DO_TEST("disk-boot-disk", NONE);
981 DO_TEST("disk-boot-cdrom", NONE);
982 DO_TEST("floppy-drive-fat", NONE);
983 DO_TEST_CAPS_VER("floppy-drive-fat", "2.12.0");
984 DO_TEST_CAPS_LATEST("floppy-drive-fat");
985 DO_TEST("disk-readonly-disk", NONE);
986 DO_TEST_CAPS_VER("disk-readonly-disk", "2.12.0");
987 DO_TEST_CAPS_LATEST("disk-readonly-disk");
988 DO_TEST("disk-fmt-qcow", NONE);
989 DO_TEST_PARSE_ERROR("disk-fmt-cow", NONE);
990 DO_TEST_PARSE_ERROR("disk-fmt-dir", NONE);
991 DO_TEST_PARSE_ERROR("disk-fmt-iso", NONE);
992 DO_TEST_CAPS_VER("disk-shared", "2.12.0");
993 DO_TEST_CAPS_LATEST("disk-shared");
994 DO_TEST_PARSE_ERROR("disk-shared-qcow", NONE);
995 DO_TEST("disk-error-policy", NONE);
996 DO_TEST_CAPS_VER("disk-error-policy", "2.12.0");
997 DO_TEST_CAPS_LATEST("disk-error-policy");
998 DO_TEST_CAPS_VER("disk-cache", "1.5.3");
999 DO_TEST_CAPS_VER("disk-cache", "2.6.0");
1000 DO_TEST_CAPS_VER("disk-cache", "2.7.0");
1001 DO_TEST_CAPS_VER("disk-cache", "2.12.0");
1002 DO_TEST_CAPS_LATEST("disk-cache");
1003 DO_TEST("disk-network-nbd", NONE);
1004 DO_TEST_CAPS_VER("disk-network-nbd", "2.12.0");
1005 DO_TEST_CAPS_LATEST("disk-network-nbd");
1006 DO_TEST("disk-network-iscsi", QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_BLOCK);
1007 DO_TEST("disk-network-iscsi-modern",
1008 QEMU_CAPS_VIRTIO_SCSI,
1009 QEMU_CAPS_SCSI_BLOCK,
1010 QEMU_CAPS_ISCSI_PASSWORD_SECRET);
1011 DO_TEST_CAPS_VER("disk-network-iscsi", "2.12.0");
1012 DO_TEST_CAPS_LATEST("disk-network-iscsi");
1013 DO_TEST_PARSE_ERROR("disk-network-iscsi-auth-secrettype-invalid", NONE);
1014 DO_TEST_PARSE_ERROR("disk-network-iscsi-auth-wrong-secrettype", NONE);
1015 DO_TEST_PARSE_ERROR("disk-network-source-auth-both", NONE);
1016 DO_TEST("disk-network-gluster",
1017 QEMU_CAPS_GLUSTER_DEBUG_LEVEL);
1018 DO_TEST_CAPS_VER("disk-network-gluster", "2.12.0");
1019 DO_TEST_CAPS_LATEST("disk-network-gluster");
1020 DO_TEST_CAPS_VER("disk-network-rbd", "2.5.0");
1021 DO_TEST_CAPS_VER("disk-network-rbd", "2.12.0");
1022 DO_TEST_CAPS_LATEST("disk-network-rbd");
1023 DO_TEST_FAILURE("disk-network-rbd-no-colon", NONE);
1024 DO_TEST("disk-network-sheepdog", NONE);
1025 DO_TEST_CAPS_VER("disk-network-sheepdog", "2.12.0");
1026 DO_TEST_CAPS_LATEST("disk-network-sheepdog");
1027 DO_TEST("disk-network-source-auth", NONE);
1028 DO_TEST_CAPS_VER("disk-network-source-auth", "2.12.0");
1029 DO_TEST_CAPS_LATEST("disk-network-source-auth");
1030 DO_TEST("disk-network-vxhs", QEMU_CAPS_VXHS);
1031 driver.config->vxhsTLS = 1;
1032 DO_TEST("disk-network-tlsx509", QEMU_CAPS_VXHS,
1033 QEMU_CAPS_OBJECT_TLS_CREDS_X509, QEMU_CAPS_NBD_TLS);
1034 DO_TEST_CAPS_VER("disk-network-tlsx509", "2.12.0");
1035 DO_TEST_CAPS_LATEST("disk-network-tlsx509");
1036 driver.config->vxhsTLS = 0;
1037 VIR_FREE(driver.config->vxhsTLSx509certdir);
1038 DO_TEST("disk-no-boot", NONE);
1039 DO_TEST_PARSE_ERROR("disk-device-lun-type-invalid",
1040 QEMU_CAPS_VIRTIO_SCSI);
1041 DO_TEST_FAILURE("disk-usb-nosupport", NONE);
1042 DO_TEST("disk-usb-device",
1043 QEMU_CAPS_DEVICE_USB_STORAGE);
1044 DO_TEST("disk-usb-device-removable",
1045 QEMU_CAPS_DEVICE_USB_STORAGE,
1046 QEMU_CAPS_USB_STORAGE_REMOVABLE);
1047 DO_TEST_FAILURE("disk-usb-pci",
1048 QEMU_CAPS_DEVICE_USB_STORAGE);
1049 DO_TEST_CAPS_LATEST("disk-scsi");
1050 DO_TEST_CAPS_VER("disk-scsi-device-auto", "1.5.3");
1051 DO_TEST_CAPS_LATEST("disk-scsi-device-auto");
1052 DO_TEST("disk-scsi-disk-split",
1053 QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI);
1054 DO_TEST("disk-scsi-disk-wwn",
1055 QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_DISK_WWN);
1056 DO_TEST("disk-scsi-disk-vpd",
1057 QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_DISK_WWN);
1058 DO_TEST_FAILURE("disk-scsi-disk-vpd-build-error",
1059 QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_DISK_WWN);
1060 DO_TEST_CAPS_LATEST("controller-virtio-scsi");
1061 DO_TEST("disk-sata-device",
1062 QEMU_CAPS_ICH9_AHCI);
1063 DO_TEST("disk-aio", NONE);
1064 DO_TEST_CAPS_VER("disk-aio", "2.12.0");
1065 DO_TEST_CAPS_LATEST("disk-aio");
1066 DO_TEST("disk-source-pool", NONE);
1067 DO_TEST("disk-source-pool-mode", NONE);
1068 DO_TEST("disk-ioeventfd",
1069 QEMU_CAPS_VIRTIO_IOEVENTFD,
1070 QEMU_CAPS_VIRTIO_TX_ALG,
1071 QEMU_CAPS_VIRTIO_BLK_SCSI);
1072 DO_TEST("disk-copy_on_read",
1073 QEMU_CAPS_VIRTIO_TX_ALG,
1074 QEMU_CAPS_VIRTIO_BLK_SCSI);
1075 DO_TEST_CAPS_VER("disk-copy_on_read", "2.12.0");
1076 DO_TEST_CAPS_LATEST("disk-copy_on_read");
1077 DO_TEST("disk-discard",
1078 QEMU_CAPS_DRIVE_DISCARD);
1079 DO_TEST("disk-detect-zeroes",
1080 QEMU_CAPS_DRIVE_DISCARD,
1081 QEMU_CAPS_DRIVE_DETECT_ZEROES);
1082 DO_TEST_CAPS_VER("disk-detect-zeroes", "2.12.0");
1083 DO_TEST_CAPS_LATEST("disk-detect-zeroes");
1084 DO_TEST("disk-snapshot", NONE);
1085 DO_TEST_PARSE_ERROR("disk-same-targets",
1086 QEMU_CAPS_SCSI_LSI,
1087 QEMU_CAPS_DEVICE_USB_STORAGE);
1088 DO_TEST_PARSE_ERROR("disk-address-conflict",
1089 QEMU_CAPS_ICH9_AHCI);
1090 DO_TEST_PARSE_ERROR("disk-hostdev-scsi-address-conflict",
1091 QEMU_CAPS_VIRTIO_SCSI);
1092 DO_TEST_PARSE_ERROR("hostdevs-drive-address-conflict",
1093 QEMU_CAPS_VIRTIO_SCSI);
1094 DO_TEST("event_idx",
1095 QEMU_CAPS_VIRTIO_BLK_EVENT_IDX,
1096 QEMU_CAPS_VIRTIO_NET_EVENT_IDX,
1097 QEMU_CAPS_VIRTIO_BLK_SCSI);
1098 DO_TEST("virtio-lun",
1099 QEMU_CAPS_VIRTIO_BLK_SCSI);
1100 DO_TEST("disk-scsi-lun-passthrough",
1101 QEMU_CAPS_SCSI_BLOCK,
1102 QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI);
1103 DO_TEST("disk-serial",
1104 QEMU_CAPS_KVM);
1105 DO_TEST_PARSE_ERROR("disk-fdc-incompatible-address",
1106 NONE);
1107 DO_TEST_PARSE_ERROR("disk-ide-incompatible-address",
1108 NONE);
1109 DO_TEST_PARSE_ERROR("disk-sata-incompatible-address",
1110 QEMU_CAPS_ICH9_AHCI);
1111 DO_TEST_PARSE_ERROR("disk-scsi-incompatible-address",
1112 QEMU_CAPS_VIRTIO_SCSI);
1113 DO_TEST_CAPS_VER("disk-backing-chains-index", "2.12.0");
1114 DO_TEST_CAPS_LATEST("disk-backing-chains-index");
1115 DO_TEST_CAPS_VER("disk-backing-chains-noindex", "2.12.0");
1116 DO_TEST_CAPS_LATEST("disk-backing-chains-noindex");
1118 DO_TEST("graphics-egl-headless",
1119 QEMU_CAPS_EGL_HEADLESS,
1120 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1121 DO_TEST_CAPS_LATEST("graphics-egl-headless");
1122 DO_TEST_CAPS_LATEST("graphics-egl-headless-rendernode");
1124 DO_TEST("graphics-vnc", QEMU_CAPS_VNC, QEMU_CAPS_DEVICE_CIRRUS_VGA);
1125 DO_TEST("graphics-vnc-socket", QEMU_CAPS_VNC, QEMU_CAPS_DEVICE_CIRRUS_VGA);
1126 DO_TEST("graphics-vnc-websocket",
1127 QEMU_CAPS_VNC,
1128 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1129 DO_TEST("graphics-vnc-policy", QEMU_CAPS_VNC,
1130 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1131 DO_TEST("graphics-vnc-no-listen-attr", QEMU_CAPS_VNC,
1132 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1133 DO_TEST("graphics-vnc-remove-generated-socket", QEMU_CAPS_VNC,
1134 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1135 driver.config->vncAutoUnixSocket = true;
1136 DO_TEST("graphics-vnc-auto-socket-cfg", QEMU_CAPS_VNC,
1137 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1138 driver.config->vncAutoUnixSocket = false;
1139 DO_TEST("graphics-vnc-socket", QEMU_CAPS_VNC, QEMU_CAPS_DEVICE_CIRRUS_VGA);
1140 DO_TEST("graphics-vnc-auto-socket", QEMU_CAPS_VNC,
1141 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1142 DO_TEST("graphics-vnc-none", QEMU_CAPS_VNC, QEMU_CAPS_DEVICE_CIRRUS_VGA);
1143 DO_TEST("graphics-vnc-socket-new-cmdline", QEMU_CAPS_VNC,
1144 QEMU_CAPS_DEVICE_CIRRUS_VGA, QEMU_CAPS_VNC_MULTI_SERVERS);
1146 driver.config->vncSASL = 1;
1147 VIR_FREE(driver.config->vncSASLdir);
1148 ignore_value(VIR_STRDUP(driver.config->vncSASLdir, "/root/.sasl2"));
1149 DO_TEST("graphics-vnc-sasl", QEMU_CAPS_VNC, QEMU_CAPS_DEVICE_CIRRUS_VGA);
1150 driver.config->vncTLS = 1;
1151 driver.config->vncTLSx509verify = 1;
1152 DO_TEST("graphics-vnc-tls", QEMU_CAPS_VNC, QEMU_CAPS_DEVICE_CIRRUS_VGA);
1153 DO_TEST_CAPS_VER("graphics-vnc-tls", "2.4.0");
1154 DO_TEST_CAPS_LATEST("graphics-vnc-tls");
1155 if (VIR_STRDUP_QUIET(driver.config->vncTLSx509secretUUID,
1156 "6fd3f62d-9fe7-4a4e-a869-7acd6376d8ea") < 0)
1157 return EXIT_FAILURE;
1158 DO_TEST_CAPS_LATEST("graphics-vnc-tls-secret");
1159 VIR_FREE(driver.config->vncTLSx509secretUUID);
1160 driver.config->vncSASL = driver.config->vncTLSx509verify = driver.config->vncTLS = 0;
1161 VIR_FREE(driver.config->vncSASLdir);
1162 VIR_FREE(driver.config->vncTLSx509certdir);
1163 DO_TEST("graphics-vnc-egl-headless",
1164 QEMU_CAPS_VNC,
1165 QEMU_CAPS_EGL_HEADLESS,
1166 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1168 DO_TEST("graphics-sdl",
1169 QEMU_CAPS_DEVICE_VGA);
1170 DO_TEST_CAPS_LATEST_PARSE_ERROR("graphics-sdl-egl-headless");
1171 DO_TEST("graphics-sdl-fullscreen",
1172 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1173 DO_TEST("graphics-spice",
1174 QEMU_CAPS_SPICE,
1175 QEMU_CAPS_DEVICE_QXL,
1176 QEMU_CAPS_SPICE_FILE_XFER_DISABLE);
1177 DO_TEST("graphics-spice-no-args",
1178 QEMU_CAPS_SPICE, QEMU_CAPS_DEVICE_CIRRUS_VGA);
1179 driver.config->spiceSASL = 1;
1180 ignore_value(VIR_STRDUP(driver.config->spiceSASLdir, "/root/.sasl2"));
1181 DO_TEST("graphics-spice-sasl",
1182 QEMU_CAPS_SPICE,
1183 QEMU_CAPS_DEVICE_QXL);
1184 VIR_FREE(driver.config->spiceSASLdir);
1185 driver.config->spiceSASL = 0;
1186 DO_TEST("graphics-spice-agentmouse",
1187 QEMU_CAPS_DEVICE_QXL,
1188 QEMU_CAPS_SPICE,
1189 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1190 DO_TEST("graphics-spice-compression",
1191 QEMU_CAPS_SPICE,
1192 QEMU_CAPS_DEVICE_QXL);
1193 DO_TEST("graphics-spice-timeout",
1194 QEMU_CAPS_KVM,
1195 QEMU_CAPS_SPICE,
1196 QEMU_CAPS_DEVICE_QXL,
1197 QEMU_CAPS_DEVICE_VGA);
1198 DO_TEST("graphics-spice-qxl-vga",
1199 QEMU_CAPS_SPICE,
1200 QEMU_CAPS_DEVICE_QXL);
1201 DO_TEST("graphics-spice-usb-redir",
1202 QEMU_CAPS_SPICE,
1203 QEMU_CAPS_USB_HUB,
1204 QEMU_CAPS_ICH9_USB_EHCI1,
1205 QEMU_CAPS_USB_REDIR,
1206 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1207 DO_TEST("graphics-spice-agent-file-xfer",
1208 QEMU_CAPS_SPICE,
1209 QEMU_CAPS_DEVICE_QXL,
1210 QEMU_CAPS_SPICE_FILE_XFER_DISABLE);
1211 DO_TEST("graphics-spice-socket",
1212 QEMU_CAPS_SPICE,
1213 QEMU_CAPS_SPICE_UNIX,
1214 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1215 DO_TEST("graphics-spice-auto-socket",
1216 QEMU_CAPS_SPICE,
1217 QEMU_CAPS_SPICE_UNIX,
1218 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1219 driver.config->spiceAutoUnixSocket = true;
1220 DO_TEST("graphics-spice-auto-socket-cfg",
1221 QEMU_CAPS_SPICE,
1222 QEMU_CAPS_SPICE_UNIX,
1223 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1224 driver.config->spiceAutoUnixSocket = false;
1225 DO_TEST("graphics-spice-egl-headless",
1226 QEMU_CAPS_SPICE,
1227 QEMU_CAPS_EGL_HEADLESS,
1228 QEMU_CAPS_DEVICE_QXL);
1229 DO_TEST_CAPS_LATEST_PARSE_ERROR("graphics-spice-invalid-egl-headless");
1230 DO_TEST_CAPS_LATEST("graphics-spice-gl-auto-rendernode");
1232 DO_TEST("input-usbmouse", NONE);
1233 DO_TEST("input-usbtablet", NONE);
1234 DO_TEST("misc-acpi", NONE);
1235 DO_TEST("misc-disable-s3", QEMU_CAPS_PIIX_DISABLE_S3);
1236 DO_TEST("misc-disable-suspends", QEMU_CAPS_PIIX_DISABLE_S3, QEMU_CAPS_PIIX_DISABLE_S4);
1237 DO_TEST("misc-enable-s4", QEMU_CAPS_PIIX_DISABLE_S4);
1238 DO_TEST_FAILURE("misc-enable-s4", NONE);
1239 DO_TEST("misc-no-reboot", NONE);
1240 DO_TEST("misc-uuid", NONE);
1241 DO_TEST_PARSE_ERROR("vhost_queues-invalid", NONE);
1242 DO_TEST("net-vhostuser", QEMU_CAPS_CHARDEV_FD_PASS);
1243 DO_TEST_CAPS_VER("net-vhostuser", "2.5.0");
1244 DO_TEST_CAPS_LATEST("net-vhostuser");
1245 DO_TEST("net-vhostuser-multiq",
1246 QEMU_CAPS_VHOSTUSER_MULTIQUEUE);
1247 DO_TEST_FAILURE("net-vhostuser-multiq", NONE);
1248 DO_TEST_FAILURE("net-vhostuser-fail",
1249 QEMU_CAPS_VHOSTUSER_MULTIQUEUE);
1250 DO_TEST("net-user", NONE);
1251 DO_TEST("net-user-addr", NONE);
1252 DO_TEST("net-virtio", NONE);
1253 DO_TEST("net-virtio-device",
1254 QEMU_CAPS_VIRTIO_TX_ALG);
1255 DO_TEST("net-virtio-disable-offloads", NONE);
1256 DO_TEST("net-virtio-netdev", NONE);
1257 DO_TEST("net-virtio-s390",
1258 QEMU_CAPS_VIRTIO_S390);
1259 DO_TEST("net-virtio-ccw",
1260 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
1261 DO_TEST("net-virtio-rxtxqueuesize",
1262 QEMU_CAPS_VIRTIO_NET_RX_QUEUE_SIZE,
1263 QEMU_CAPS_VIRTIO_NET_TX_QUEUE_SIZE);
1264 DO_TEST_PARSE_ERROR("net-virtio-rxqueuesize-invalid-size", NONE);
1265 DO_TEST("net-eth", NONE);
1266 DO_TEST("net-eth-ifname", NONE);
1267 DO_TEST("net-eth-names", NONE);
1268 DO_TEST("net-eth-hostip", NONE);
1269 DO_TEST("net-client", NONE);
1270 DO_TEST("net-server", NONE);
1271 DO_TEST("net-many-models", NONE);
1272 DO_TEST("net-mcast", NONE);
1273 DO_TEST("net-udp", NONE);
1274 DO_TEST("net-hostdev", NONE);
1275 DO_TEST("net-hostdev-bootorder", NONE);
1276 DO_TEST("net-hostdev-multidomain", NONE);
1277 DO_TEST("net-hostdev-vfio",
1278 QEMU_CAPS_DEVICE_VFIO_PCI);
1279 DO_TEST("net-hostdev-vfio-multidomain",
1280 QEMU_CAPS_DEVICE_VFIO_PCI);
1281 DO_TEST_FAILURE("net-hostdev-fail",
1282 QEMU_CAPS_DEVICE_VFIO_PCI);
1285 DO_TEST("serial-file-log",
1286 QEMU_CAPS_CHARDEV_FILE_APPEND,
1287 QEMU_CAPS_DEVICE_ISA_SERIAL,
1288 QEMU_CAPS_CHARDEV_LOGFILE);
1289 DO_TEST("serial-spiceport",
1290 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
1291 QEMU_CAPS_DEVICE_QXL,
1292 QEMU_CAPS_SPICE,
1293 QEMU_CAPS_DEVICE_ISA_SERIAL);
1294 DO_TEST("serial-spiceport-nospice", NONE);
1296 DO_TEST("console-compat",
1297 QEMU_CAPS_DEVICE_ISA_SERIAL);
1298 DO_TEST("console-compat-auto",
1299 QEMU_CAPS_DEVICE_ISA_SERIAL);
1301 DO_TEST("serial-vc-chardev",
1302 QEMU_CAPS_DEVICE_ISA_SERIAL);
1303 DO_TEST("serial-pty-chardev",
1304 QEMU_CAPS_DEVICE_ISA_SERIAL);
1305 DO_TEST("serial-dev-chardev",
1306 QEMU_CAPS_DEVICE_ISA_SERIAL);
1307 DO_TEST("serial-dev-chardev-iobase",
1308 QEMU_CAPS_DEVICE_ISA_SERIAL);
1309 DO_TEST("serial-file-chardev",
1310 QEMU_CAPS_DEVICE_ISA_SERIAL,
1311 QEMU_CAPS_CHARDEV_FILE_APPEND);
1312 DO_TEST("serial-unix-chardev",
1313 QEMU_CAPS_DEVICE_ISA_SERIAL);
1314 DO_TEST_CAPS_LATEST("serial-unix-chardev");
1315 DO_TEST_PARSE_ERROR("serial-unix-missing-source", NONE);
1316 DO_TEST("serial-tcp-chardev",
1317 QEMU_CAPS_DEVICE_ISA_SERIAL);
1318 DO_TEST("serial-udp-chardev",
1319 QEMU_CAPS_DEVICE_ISA_SERIAL);
1320 DO_TEST("serial-tcp-telnet-chardev",
1321 QEMU_CAPS_DEVICE_ISA_SERIAL);
1322 driver.config->chardevTLS = 1;
1323 DO_TEST("serial-tcp-tlsx509-chardev",
1324 QEMU_CAPS_DEVICE_ISA_SERIAL,
1325 QEMU_CAPS_OBJECT_TLS_CREDS_X509);
1326 driver.config->chardevTLSx509verify = 1;
1327 DO_TEST("serial-tcp-tlsx509-chardev-verify",
1328 QEMU_CAPS_DEVICE_ISA_SERIAL,
1329 QEMU_CAPS_OBJECT_TLS_CREDS_X509);
1330 driver.config->chardevTLSx509verify = 0;
1331 DO_TEST("serial-tcp-tlsx509-chardev-notls",
1332 QEMU_CAPS_DEVICE_ISA_SERIAL,
1333 QEMU_CAPS_OBJECT_TLS_CREDS_X509);
1334 VIR_FREE(driver.config->chardevTLSx509certdir);
1335 if (VIR_STRDUP_QUIET(driver.config->chardevTLSx509certdir, "/etc/pki/libvirt-chardev") < 0)
1336 return EXIT_FAILURE;
1337 if (VIR_STRDUP_QUIET(driver.config->chardevTLSx509secretUUID,
1338 "6fd3f62d-9fe7-4a4e-a869-7acd6376d8ea") < 0)
1339 return EXIT_FAILURE;
1340 DO_TEST("serial-tcp-tlsx509-secret-chardev",
1341 QEMU_CAPS_OBJECT_SECRET,
1342 QEMU_CAPS_DEVICE_ISA_SERIAL,
1343 QEMU_CAPS_OBJECT_TLS_CREDS_X509);
1344 driver.config->chardevTLS = 0;
1345 VIR_FREE(driver.config->chardevTLSx509certdir);
1346 DO_TEST("serial-many-chardev",
1347 QEMU_CAPS_DEVICE_ISA_SERIAL);
1348 DO_TEST("parallel-tcp-chardev", NONE);
1349 DO_TEST("parallel-parport-chardev", NONE);
1350 DO_TEST_CAPS_VER("parallel-unix-chardev", "2.5.0");
1351 DO_TEST_CAPS_LATEST("parallel-unix-chardev");
1352 DO_TEST("console-compat-chardev",
1353 QEMU_CAPS_DEVICE_ISA_SERIAL);
1354 DO_TEST("pci-serial-dev-chardev",
1355 QEMU_CAPS_DEVICE_PCI_SERIAL);
1357 DO_TEST("channel-guestfwd", NONE);
1358 DO_TEST_CAPS_VER("channel-unix-guestfwd", "2.5.0");
1359 DO_TEST_CAPS_LATEST("channel-unix-guestfwd");
1360 DO_TEST("channel-virtio", NONE);
1361 DO_TEST("channel-virtio-state", NONE);
1362 DO_TEST("channel-virtio-auto", NONE);
1363 DO_TEST("channel-virtio-autoassign", NONE);
1364 DO_TEST("channel-virtio-autoadd", NONE);
1365 DO_TEST("console-virtio", NONE);
1366 DO_TEST("console-virtio-many",
1367 QEMU_CAPS_DEVICE_ISA_SERIAL);
1368 DO_TEST("console-virtio-s390",
1369 QEMU_CAPS_VIRTIO_S390);
1370 DO_TEST("console-virtio-ccw",
1371 QEMU_CAPS_CCW,
1372 QEMU_CAPS_VIRTIO_S390);
1373 DO_TEST_CAPS_VER("console-virtio-unix", "2.5.0");
1374 DO_TEST_CAPS_LATEST("console-virtio-unix");
1375 DO_TEST("console-sclp",
1376 QEMU_CAPS_VIRTIO_S390,
1377 QEMU_CAPS_DEVICE_SCLPCONSOLE);
1378 DO_TEST("channel-spicevmc",
1379 QEMU_CAPS_SPICE,
1380 QEMU_CAPS_DEVICE_CIRRUS_VGA);
1381 DO_TEST("channel-virtio-default",
1382 QEMU_CAPS_SPICE);
1383 DO_TEST("channel-virtio-unix", NONE);
1385 DO_TEST("smartcard-host",
1386 QEMU_CAPS_CCID_EMULATED);
1387 DO_TEST("smartcard-host-certificates",
1388 QEMU_CAPS_CCID_EMULATED);
1389 DO_TEST("smartcard-host-certificates-database",
1390 QEMU_CAPS_CCID_EMULATED);
1391 DO_TEST("smartcard-passthrough-tcp",
1392 QEMU_CAPS_CCID_PASSTHRU);
1393 DO_TEST("smartcard-passthrough-spicevmc",
1394 QEMU_CAPS_CCID_PASSTHRU);
1395 DO_TEST("smartcard-controller",
1396 QEMU_CAPS_CCID_EMULATED);
1397 DO_TEST_CAPS_VER("smartcard-passthrough-unix", "2.5.0");
1398 DO_TEST_CAPS_LATEST("smartcard-passthrough-unix");
1400 DO_TEST("chardev-reconnect",
1401 QEMU_CAPS_CHARDEV_RECONNECT,
1402 QEMU_CAPS_USB_REDIR,
1403 QEMU_CAPS_DEVICE_VIRTIO_RNG,
1404 QEMU_CAPS_OBJECT_RNG_EGD,
1405 QEMU_CAPS_CCID_PASSTHRU);
1406 DO_TEST_PARSE_ERROR("chardev-reconnect-invalid-timeout",
1407 QEMU_CAPS_CHARDEV_RECONNECT);
1408 DO_TEST_PARSE_ERROR("chardev-reconnect-generated-path",
1409 QEMU_CAPS_CHARDEV_RECONNECT);
1411 DO_TEST("usb-controller", NONE);
1412 DO_TEST("usb-piix3-controller",
1413 QEMU_CAPS_PIIX3_USB_UHCI);
1414 DO_TEST("usb-ich9-ehci-addr",
1415 QEMU_CAPS_ICH9_USB_EHCI1);
1416 DO_TEST("input-usbmouse-addr", NONE);
1417 DO_TEST("usb-ich9-companion",
1418 QEMU_CAPS_ICH9_USB_EHCI1);
1419 DO_TEST_PARSE_ERROR("usb-ich9-no-companion",
1420 QEMU_CAPS_ICH9_USB_EHCI1);
1421 DO_TEST("usb-ich9-autoassign",
1422 QEMU_CAPS_ICH9_USB_EHCI1,
1423 QEMU_CAPS_USB_HUB);
1424 DO_TEST("usb-hub",
1425 QEMU_CAPS_USB_HUB);
1426 DO_TEST("usb-hub-autoadd",
1427 QEMU_CAPS_USB_HUB);
1428 DO_TEST("usb-hub-autoadd-deluxe",
1429 QEMU_CAPS_USB_HUB);
1430 DO_TEST_PARSE_ERROR("usb-hub-conflict",
1431 QEMU_CAPS_USB_HUB);
1432 DO_TEST_PARSE_ERROR("usb-hub-nonexistent",
1433 QEMU_CAPS_USB_HUB);
1434 DO_TEST("usb-port-missing",
1435 QEMU_CAPS_USB_HUB);
1436 DO_TEST_FAILURE("usb-bus-missing",
1437 QEMU_CAPS_USB_HUB);
1438 DO_TEST("usb-ports",
1439 QEMU_CAPS_USB_HUB);
1440 DO_TEST_PARSE_ERROR("usb-ports-out-of-range",
1441 QEMU_CAPS_USB_HUB);
1442 DO_TEST("usb-port-autoassign",
1443 QEMU_CAPS_USB_HUB);
1444 DO_TEST("usb-redir",
1445 QEMU_CAPS_USB_HUB,
1446 QEMU_CAPS_ICH9_USB_EHCI1,
1447 QEMU_CAPS_USB_REDIR,
1448 QEMU_CAPS_SPICE);
1449 DO_TEST("usb-redir-boot",
1450 QEMU_CAPS_USB_HUB,
1451 QEMU_CAPS_ICH9_USB_EHCI1,
1452 QEMU_CAPS_USB_REDIR,
1453 QEMU_CAPS_SPICE);
1454 DO_TEST("usb-redir-filter",
1455 QEMU_CAPS_USB_HUB,
1456 QEMU_CAPS_ICH9_USB_EHCI1,
1457 QEMU_CAPS_USB_REDIR,
1458 QEMU_CAPS_SPICE,
1459 QEMU_CAPS_USB_REDIR_FILTER);
1460 DO_TEST("usb-redir-filter-version",
1461 QEMU_CAPS_USB_REDIR,
1462 QEMU_CAPS_SPICE,
1463 QEMU_CAPS_USB_REDIR_FILTER);
1464 DO_TEST_CAPS_VER("usb-redir-unix", "2.5.0");
1465 DO_TEST_CAPS_LATEST("usb-redir-unix");
1466 DO_TEST("usb1-usb2",
1467 QEMU_CAPS_PIIX3_USB_UHCI,
1468 QEMU_CAPS_USB_HUB,
1469 QEMU_CAPS_ICH9_USB_EHCI1);
1470 DO_TEST("usb-none", NONE);
1471 DO_TEST_PARSE_ERROR("usb-none-other", NONE);
1472 DO_TEST_PARSE_ERROR("usb-none-hub",
1473 QEMU_CAPS_USB_HUB);
1474 DO_TEST_PARSE_ERROR("usb-none-usbtablet", NONE);
1475 DO_TEST("usb-controller-default-q35",
1476 QEMU_CAPS_DEVICE_IOH3420,
1477 QEMU_CAPS_PCI_OHCI,
1478 QEMU_CAPS_PIIX3_USB_UHCI,
1479 QEMU_CAPS_NEC_USB_XHCI);
1480 DO_TEST_FAILURE("usb-controller-default-unavailable-q35",
1481 QEMU_CAPS_DEVICE_IOH3420,
1482 QEMU_CAPS_PCI_OHCI,
1483 QEMU_CAPS_NEC_USB_XHCI);
1484 DO_TEST("usb-controller-explicit-q35",
1485 QEMU_CAPS_DEVICE_IOH3420,
1486 QEMU_CAPS_PCI_OHCI,
1487 QEMU_CAPS_PIIX3_USB_UHCI,
1488 QEMU_CAPS_NEC_USB_XHCI);
1489 DO_TEST_FAILURE("usb-controller-explicit-unavailable-q35",
1490 QEMU_CAPS_DEVICE_IOH3420,
1491 QEMU_CAPS_PCI_OHCI,
1492 QEMU_CAPS_PIIX3_USB_UHCI);
1493 DO_TEST("usb-controller-xhci",
1494 QEMU_CAPS_PIIX3_USB_UHCI,
1495 QEMU_CAPS_NEC_USB_XHCI,
1496 QEMU_CAPS_NEC_USB_XHCI_PORTS);
1497 DO_TEST("usb-xhci-autoassign",
1498 QEMU_CAPS_PIIX3_USB_UHCI,
1499 QEMU_CAPS_NEC_USB_XHCI,
1500 QEMU_CAPS_NEC_USB_XHCI_PORTS,
1501 QEMU_CAPS_USB_HUB);
1502 DO_TEST_PARSE_ERROR("usb-controller-xhci-limit",
1503 QEMU_CAPS_PIIX3_USB_UHCI,
1504 QEMU_CAPS_NEC_USB_XHCI,
1505 QEMU_CAPS_NEC_USB_XHCI_PORTS);
1506 DO_TEST("usb-controller-qemu-xhci", QEMU_CAPS_DEVICE_QEMU_XHCI);
1507 DO_TEST_FAILURE("usb-controller-qemu-xhci-unavailable", NONE);
1508 DO_TEST_PARSE_ERROR("usb-controller-qemu-xhci-limit",
1509 QEMU_CAPS_DEVICE_QEMU_XHCI);
1511 DO_TEST("smbios", NONE);
1512 DO_TEST_PARSE_ERROR("smbios-date", NONE);
1513 DO_TEST_PARSE_ERROR("smbios-uuid-match", NONE);
1515 DO_TEST("watchdog", NONE);
1516 DO_TEST("watchdog-device", NONE);
1517 DO_TEST("watchdog-dump", NONE);
1518 DO_TEST("watchdog-injectnmi", NONE);
1519 DO_TEST("watchdog-diag288", QEMU_CAPS_VIRTIO_S390);
1520 DO_TEST("balloon-device", NONE);
1521 DO_TEST("balloon-device-deflate",
1522 QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE);
1523 DO_TEST("balloon-ccw-deflate",
1524 QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE);
1525 DO_TEST("balloon-mmio-deflate",
1526 QEMU_CAPS_DEVICE_VIRTIO_MMIO,
1527 QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE);
1528 DO_TEST("balloon-device-deflate-off",
1529 QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE);
1530 DO_TEST("balloon-device-auto", NONE);
1531 DO_TEST("balloon-device-period", NONE);
1532 DO_TEST("sound", NONE);
1533 DO_TEST("sound-device",
1534 QEMU_CAPS_HDA_DUPLEX, QEMU_CAPS_HDA_MICRO,
1535 QEMU_CAPS_HDA_OUTPUT,
1536 QEMU_CAPS_DEVICE_ICH9_INTEL_HDA,
1537 QEMU_CAPS_OBJECT_USB_AUDIO);
1538 DO_TEST("fs9p", NONE);
1539 DO_TEST("fs9p-ccw",
1540 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
1542 DO_TEST("hostdev-usb-address", NONE);
1543 DO_TEST("hostdev-usb-address-device", NONE);
1544 DO_TEST("hostdev-usb-address-device-boot", NONE);
1545 DO_TEST("hostdev-pci-address", NONE);
1546 DO_TEST("hostdev-pci-address-device", NONE);
1547 DO_TEST("hostdev-vfio",
1548 QEMU_CAPS_DEVICE_VFIO_PCI);
1549 DO_TEST("hostdev-vfio-multidomain",
1550 QEMU_CAPS_DEVICE_VFIO_PCI);
1551 DO_TEST("hostdev-mdev-precreated",
1552 QEMU_CAPS_DEVICE_VFIO_PCI);
1553 DO_TEST_PARSE_ERROR("hostdev-mdev-src-address-invalid",
1554 QEMU_CAPS_DEVICE_VFIO_PCI);
1555 DO_TEST_PARSE_ERROR("hostdev-mdev-invalid-target-address",
1556 QEMU_CAPS_DEVICE_VFIO_PCI);
1557 DO_TEST_CAPS_LATEST("hostdev-mdev-display-spice-opengl");
1558 DO_TEST_CAPS_LATEST("hostdev-mdev-display-spice-egl-headless");
1559 DO_TEST_CAPS_LATEST("hostdev-mdev-display-vnc");
1560 DO_TEST_CAPS_LATEST("hostdev-mdev-display-vnc-egl-headless");
1561 DO_TEST_PARSE_ERROR("hostdev-mdev-display-missing-graphics",
1562 QEMU_CAPS_DEVICE_VFIO_PCI,
1563 QEMU_CAPS_VFIO_PCI_DISPLAY);
1564 DO_TEST_PARSE_ERROR("hostdev-vfio-zpci-wrong-arch",
1565 QEMU_CAPS_DEVICE_VFIO_PCI);
1566 DO_TEST("hostdev-vfio-zpci",
1567 QEMU_CAPS_DEVICE_VFIO_PCI,
1568 QEMU_CAPS_DEVICE_ZPCI);
1569 DO_TEST("hostdev-vfio-zpci-multidomain-many",
1570 QEMU_CAPS_DEVICE_VFIO_PCI,
1571 QEMU_CAPS_DEVICE_PCI_BRIDGE,
1572 QEMU_CAPS_DEVICE_ZPCI);
1573 DO_TEST("hostdev-vfio-zpci-autogenerate",
1574 QEMU_CAPS_DEVICE_VFIO_PCI,
1575 QEMU_CAPS_DEVICE_ZPCI);
1576 DO_TEST("hostdev-vfio-zpci-boundaries",
1577 QEMU_CAPS_DEVICE_VFIO_PCI,
1578 QEMU_CAPS_DEVICE_PCI_BRIDGE,
1579 QEMU_CAPS_DEVICE_ZPCI);
1580 DO_TEST_PARSE_ERROR("hostdev-vfio-zpci",
1581 QEMU_CAPS_DEVICE_VFIO_PCI);
1582 DO_TEST("pci-rom", NONE);
1583 DO_TEST("pci-rom-disabled", NONE);
1584 DO_TEST("pci-rom-disabled-invalid", NONE);
1586 DO_TEST("hostdev-subsys-mdev-vfio-ccw",
1587 QEMU_CAPS_CCW,
1588 QEMU_CAPS_CCW_CSSID_UNRESTRICTED,
1589 QEMU_CAPS_DEVICE_VFIO_CCW);
1590 DO_TEST_FAILURE("hostdev-subsys-mdev-vfio-ccw",
1591 QEMU_CAPS_CCW,
1592 QEMU_CAPS_CCW_CSSID_UNRESTRICTED);
1593 DO_TEST_PARSE_ERROR("hostdev-subsys-mdev-vfio-ccw-duplicate-address",
1594 QEMU_CAPS_CCW,
1595 QEMU_CAPS_CCW_CSSID_UNRESTRICTED,
1596 QEMU_CAPS_DEVICE_VFIO_CCW);
1597 DO_TEST_PARSE_ERROR("hostdev-subsys-mdev-vfio-ccw-invalid-address",
1598 QEMU_CAPS_CCW,
1599 QEMU_CAPS_CCW_CSSID_UNRESTRICTED,
1600 QEMU_CAPS_DEVICE_VFIO_CCW);
1602 DO_TEST_FULL("restore-v2",
1603 ARG_MIGRATE_FROM, "exec:cat",
1604 ARG_MIGRATE_FD, 7,
1605 ARG_QEMU_CAPS, NONE);
1606 DO_TEST_FULL("restore-v2-fd",
1607 ARG_MIGRATE_FROM, "stdio",
1608 ARG_MIGRATE_FD, 7,
1609 ARG_QEMU_CAPS, NONE);
1610 DO_TEST_FULL("restore-v2-fd",
1611 ARG_MIGRATE_FROM, "fd:7",
1612 ARG_MIGRATE_FD, 7,
1613 ARG_QEMU_CAPS, NONE);
1614 DO_TEST_FULL("migrate",
1615 ARG_MIGRATE_FROM, "tcp:10.0.0.1:5000",
1616 ARG_QEMU_CAPS, NONE);
1618 DO_TEST_FULL("migrate-numa-unaligned",
1619 ARG_MIGRATE_FROM, "stdio",
1620 ARG_MIGRATE_FD, 7,
1621 ARG_QEMU_CAPS,
1622 QEMU_CAPS_NUMA,
1623 QEMU_CAPS_OBJECT_MEMORY_RAM);
1625 DO_TEST("qemu-ns", NONE);
1626 DO_TEST("qemu-ns-no-env", NONE);
1627 DO_TEST("qemu-ns-alt", NONE);
1629 DO_TEST("smp", NONE);
1631 DO_TEST("iothreads", QEMU_CAPS_OBJECT_IOTHREAD);
1632 DO_TEST("iothreads-ids", QEMU_CAPS_OBJECT_IOTHREAD);
1633 DO_TEST("iothreads-ids-partial", QEMU_CAPS_OBJECT_IOTHREAD);
1634 DO_TEST_FAILURE("iothreads-nocap", NONE);
1635 DO_TEST("iothreads-disk", QEMU_CAPS_OBJECT_IOTHREAD);
1636 DO_TEST("iothreads-disk-virtio-ccw", QEMU_CAPS_OBJECT_IOTHREAD,
1637 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
1638 DO_TEST_CAPS_LATEST("iothreads-virtio-scsi-pci");
1639 DO_TEST_CAPS_ARCH_LATEST("iothreads-virtio-scsi-ccw", "s390x");
1641 DO_TEST("cpu-topology1", NONE);
1642 DO_TEST("cpu-topology2", NONE);
1643 DO_TEST("cpu-topology3", NONE);
1644 DO_TEST("cpu-minimum1", QEMU_CAPS_KVM);
1645 DO_TEST("cpu-minimum2", QEMU_CAPS_KVM);
1646 DO_TEST("cpu-exact1", QEMU_CAPS_KVM);
1647 DO_TEST("cpu-exact2", QEMU_CAPS_KVM);
1648 DO_TEST("cpu-exact2-nofallback", QEMU_CAPS_KVM);
1649 DO_TEST("cpu-fallback", QEMU_CAPS_KVM);
1650 DO_TEST_FAILURE("cpu-nofallback", QEMU_CAPS_KVM);
1651 DO_TEST("cpu-strict1", QEMU_CAPS_KVM);
1652 DO_TEST("cpu-no-removed-features", QEMU_CAPS_KVM);
1653 DO_TEST("cpu-numa1", NONE);
1654 DO_TEST("cpu-numa2", NONE);
1655 DO_TEST("cpu-numa-no-memory-element", NONE);
1656 DO_TEST_PARSE_ERROR("cpu-numa3", NONE);
1657 DO_TEST_FAILURE("cpu-numa-disjoint", NONE);
1658 DO_TEST("cpu-numa-disjoint", QEMU_CAPS_NUMA);
1659 DO_TEST_FAILURE("cpu-numa-memshared", QEMU_CAPS_OBJECT_MEMORY_RAM);
1660 DO_TEST_FAILURE("cpu-numa-memshared", NONE);
1661 DO_TEST("cpu-numa-memshared", QEMU_CAPS_OBJECT_MEMORY_FILE);
1662 DO_TEST("cpu-host-model", NONE);
1663 DO_TEST("cpu-host-model-vendor", NONE);
1664 DO_TEST_FULL("cpu-host-model-fallback",
1665 ARG_FLAGS, FLAG_SKIP_LEGACY_CPUS,
1666 ARG_QEMU_CAPS, NONE);
1667 DO_TEST_FULL("cpu-host-model-nofallback",
1668 ARG_FLAGS, FLAG_SKIP_LEGACY_CPUS | FLAG_EXPECT_FAILURE,
1669 ARG_QEMU_CAPS, NONE);
1670 DO_TEST("cpu-host-passthrough", QEMU_CAPS_KVM);
1671 DO_TEST_FAILURE("cpu-qemu-host-passthrough", QEMU_CAPS_KVM);
1673 qemuTestSetHostArch(driver.caps, VIR_ARCH_S390X);
1674 DO_TEST("cpu-s390-zEC12", QEMU_CAPS_KVM, QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
1675 DO_TEST("cpu-s390-features", QEMU_CAPS_KVM, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION);
1676 DO_TEST_FAILURE("cpu-s390-features", QEMU_CAPS_KVM);
1677 qemuTestSetHostArch(driver.caps, VIR_ARCH_NONE);
1679 qemuTestSetHostCPU(driver.caps, cpuHaswell);
1680 DO_TEST("cpu-Haswell", QEMU_CAPS_KVM);
1681 DO_TEST("cpu-Haswell2", QEMU_CAPS_KVM);
1682 DO_TEST("cpu-Haswell3", QEMU_CAPS_KVM);
1683 DO_TEST("cpu-Haswell-noTSX", QEMU_CAPS_KVM);
1684 DO_TEST("cpu-host-model-cmt", NONE);
1685 DO_TEST("cpu-tsc-frequency", QEMU_CAPS_KVM);
1686 qemuTestSetHostCPU(driver.caps, NULL);
1688 DO_TEST("encrypted-disk", QEMU_CAPS_QCOW2_LUKS, QEMU_CAPS_OBJECT_SECRET);
1689 DO_TEST("encrypted-disk-usage", QEMU_CAPS_QCOW2_LUKS, QEMU_CAPS_OBJECT_SECRET);
1690 DO_TEST("luks-disks", QEMU_CAPS_OBJECT_SECRET);
1691 DO_TEST("luks-disks-source", QEMU_CAPS_OBJECT_SECRET);
1692 DO_TEST_PARSE_ERROR("luks-disks-source-qcow2", QEMU_CAPS_OBJECT_SECRET);
1693 DO_TEST("luks-disks-source-qcow2", QEMU_CAPS_OBJECT_SECRET, QEMU_CAPS_QCOW2_LUKS);
1694 DO_TEST_PARSE_ERROR("luks-disk-invalid", NONE);
1695 DO_TEST_PARSE_ERROR("luks-disks-source-both", QEMU_CAPS_OBJECT_SECRET);
1697 DO_TEST("memtune", NONE);
1698 DO_TEST("memtune-unlimited", NONE);
1699 DO_TEST("blkiotune", NONE);
1700 DO_TEST("blkiotune-device", NONE);
1701 DO_TEST("cputune", NONE);
1702 DO_TEST("cputune-zero-shares", NONE);
1703 DO_TEST_PARSE_ERROR("cputune-iothreadsched-toomuch", NONE);
1704 DO_TEST_PARSE_ERROR("cputune-vcpusched-overlap", NONE);
1705 DO_TEST("cputune-numatune",
1706 QEMU_CAPS_KVM,
1707 QEMU_CAPS_OBJECT_IOTHREAD,
1708 QEMU_CAPS_OBJECT_MEMORY_RAM,
1709 QEMU_CAPS_OBJECT_MEMORY_FILE);
1710 DO_TEST("vcpu-placement-static",
1711 QEMU_CAPS_KVM,
1712 QEMU_CAPS_OBJECT_IOTHREAD);
1714 DO_TEST("numatune-memory", NONE);
1715 DO_TEST_PARSE_ERROR("numatune-memory-invalid-nodeset", NONE);
1716 DO_TEST("numatune-memnode",
1717 QEMU_CAPS_NUMA,
1718 QEMU_CAPS_OBJECT_MEMORY_RAM);
1719 DO_TEST_FAILURE("numatune-memnode", NONE);
1721 DO_TEST("numatune-memnode-no-memory",
1722 QEMU_CAPS_NUMA,
1723 QEMU_CAPS_OBJECT_MEMORY_RAM);
1724 DO_TEST_FAILURE("numatune-memnode-no-memory", NONE);
1726 DO_TEST("numatune-distances", QEMU_CAPS_NUMA, QEMU_CAPS_NUMA_DIST);
1728 DO_TEST("numatune-auto-nodeset-invalid", NONE);
1729 DO_TEST("numatune-auto-prefer", QEMU_CAPS_OBJECT_MEMORY_RAM,
1730 QEMU_CAPS_OBJECT_MEMORY_FILE);
1731 DO_TEST_FAILURE("numatune-static-nodeset-exceed-hostnode",
1732 QEMU_CAPS_OBJECT_MEMORY_RAM);
1733 DO_TEST_PARSE_ERROR("numatune-memnode-nocpu", NONE);
1734 DO_TEST_PARSE_ERROR("numatune-memnodes-problematic", NONE);
1735 DO_TEST("numad", NONE);
1736 DO_TEST("numad-auto-vcpu-static-numatune", NONE);
1737 DO_TEST_PARSE_ERROR("numad-auto-vcpu-static-numatune-no-nodeset", NONE);
1738 DO_TEST("numad-auto-memory-vcpu-cpuset", NONE);
1739 DO_TEST("numad-auto-memory-vcpu-no-cpuset-and-placement", NONE);
1740 DO_TEST("numad-static-memory-auto-vcpu", NONE);
1741 DO_TEST("blkdeviotune-max",
1742 QEMU_CAPS_DRIVE_IOTUNE_MAX);
1743 DO_TEST("blkdeviotune-group-num",
1744 QEMU_CAPS_DRIVE_IOTUNE_MAX,
1745 QEMU_CAPS_DRIVE_IOTUNE_GROUP);
1746 DO_TEST("blkdeviotune-max-length",
1747 QEMU_CAPS_DRIVE_IOTUNE_MAX,
1748 QEMU_CAPS_DRIVE_IOTUNE_MAX_LENGTH);
1750 DO_TEST("multifunction-pci-device",
1751 QEMU_CAPS_SCSI_LSI);
1753 DO_TEST("monitor-json", NONE);
1755 DO_TEST("seclabel-dynamic", NONE);
1756 DO_TEST("seclabel-dynamic-baselabel", NONE);
1757 DO_TEST("seclabel-dynamic-override", NONE);
1758 DO_TEST("seclabel-dynamic-labelskip", NONE);
1759 DO_TEST("seclabel-dynamic-relabel", NONE);
1760 DO_TEST("seclabel-static", NONE);
1761 DO_TEST("seclabel-static-relabel", NONE);
1762 DO_TEST("seclabel-static-labelskip", NONE);
1763 DO_TEST("seclabel-none", NONE);
1764 DO_TEST("seclabel-dac-none", NONE);
1765 DO_TEST_PARSE_ERROR("seclabel-multiple", NONE);
1766 DO_TEST_PARSE_ERROR("seclabel-device-duplicates", NONE);
1768 DO_TEST("pseries-basic",
1769 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1770 QEMU_CAPS_DEVICE_SPAPR_VTY);
1771 DO_TEST("pseries-vio",
1772 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1773 QEMU_CAPS_DEVICE_SPAPR_VTY);
1774 DO_TEST("pseries-usb-default",
1775 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1776 QEMU_CAPS_DEVICE_SPAPR_VTY,
1777 QEMU_CAPS_PIIX3_USB_UHCI,
1778 QEMU_CAPS_PCI_OHCI);
1779 DO_TEST("pseries-usb-multi",
1780 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1781 QEMU_CAPS_DEVICE_SPAPR_VTY,
1782 QEMU_CAPS_PIIX3_USB_UHCI,
1783 QEMU_CAPS_PCI_OHCI);
1784 DO_TEST("pseries-vio-user-assigned",
1785 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1786 QEMU_CAPS_DEVICE_SPAPR_VTY);
1787 DO_TEST_PARSE_ERROR("pseries-vio-address-clash", NONE);
1788 DO_TEST("pseries-nvram",
1789 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1790 QEMU_CAPS_DEVICE_NVRAM);
1791 DO_TEST("pseries-usb-kbd", QEMU_CAPS_PCI_OHCI,
1792 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1793 QEMU_CAPS_DEVICE_USB_KBD,
1794 QEMU_CAPS_DEVICE_SPAPR_VTY);
1795 DO_TEST("pseries-cpu-exact",
1796 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1797 QEMU_CAPS_DEVICE_SPAPR_VTY);
1798 DO_TEST_PARSE_ERROR("pseries-no-parallel", NONE);
1800 qemuTestSetHostArch(driver.caps, VIR_ARCH_PPC64);
1801 DO_TEST("pseries-cpu-compat", QEMU_CAPS_KVM,
1802 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1803 QEMU_CAPS_DEVICE_SPAPR_VTY);
1804 DO_TEST("pseries-machine-max-cpu-compat",
1805 QEMU_CAPS_KVM,
1806 QEMU_CAPS_MACHINE_PSERIES_MAX_CPU_COMPAT,
1807 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
1808 DO_TEST("pseries-cpu-le", QEMU_CAPS_KVM,
1809 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1810 QEMU_CAPS_DEVICE_SPAPR_VTY);
1811 DO_TEST_FAILURE("pseries-cpu-compat-power9",
1812 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1813 QEMU_CAPS_KVM);
1815 qemuTestSetHostCPU(driver.caps, cpuPower9);
1816 DO_TEST("pseries-cpu-compat-power9",
1817 QEMU_CAPS_KVM,
1818 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1819 QEMU_CAPS_DEVICE_SPAPR_VTY);
1820 qemuTestSetHostCPU(driver.caps, NULL);
1822 qemuTestSetHostArch(driver.caps, VIR_ARCH_NONE);
1824 DO_TEST("pseries-panic-missing",
1825 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1826 QEMU_CAPS_DEVICE_SPAPR_VTY);
1827 DO_TEST("pseries-panic-no-address",
1828 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1829 QEMU_CAPS_DEVICE_SPAPR_VTY);
1830 DO_TEST_FAILURE("pseries-panic-address",
1831 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
1833 DO_TEST("pseries-phb-simple",
1834 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
1835 DO_TEST("pseries-phb-default-missing",
1836 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
1837 DO_TEST("pseries-phb-numa-node",
1838 QEMU_CAPS_NUMA,
1839 QEMU_CAPS_OBJECT_MEMORY_RAM,
1840 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1841 QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE);
1842 DO_TEST_PARSE_ERROR("pseries-default-phb-numa-node", NONE);
1843 DO_TEST_PARSE_ERROR("pseries-phb-invalid-target-index-1", NONE);
1844 DO_TEST_PARSE_ERROR("pseries-phb-invalid-target-index-2", NONE);
1845 DO_TEST_PARSE_ERROR("pseries-phb-invalid-target-index-3", NONE);
1847 DO_TEST("pseries-many-devices",
1848 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1849 QEMU_CAPS_VIRTIO_SCSI);
1850 DO_TEST("pseries-many-buses-1",
1851 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1852 QEMU_CAPS_VIRTIO_SCSI);
1853 DO_TEST("pseries-many-buses-2",
1854 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1855 QEMU_CAPS_VIRTIO_SCSI);
1856 DO_TEST("pseries-hostdevs-1",
1857 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1858 QEMU_CAPS_VIRTIO_SCSI,
1859 QEMU_CAPS_DEVICE_VFIO_PCI);
1860 DO_TEST("pseries-hostdevs-2",
1861 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1862 QEMU_CAPS_VIRTIO_SCSI,
1863 QEMU_CAPS_DEVICE_VFIO_PCI);
1864 DO_TEST("pseries-hostdevs-3",
1865 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1866 QEMU_CAPS_VIRTIO_SCSI,
1867 QEMU_CAPS_DEVICE_VFIO_PCI);
1869 DO_TEST("pseries-features",
1870 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1871 QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE,
1872 QEMU_CAPS_MACHINE_PSERIES_CAP_HTM,
1873 QEMU_CAPS_MACHINE_PSERIES_CAP_NESTED_HV,
1874 QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT);
1875 DO_TEST_FAILURE("pseries-features",
1876 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
1877 DO_TEST_PARSE_ERROR("pseries-features-invalid-machine", NONE);
1879 DO_TEST("pseries-serial-native",
1880 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1881 QEMU_CAPS_DEVICE_SPAPR_VTY);
1882 DO_TEST("pseries-serial+console-native",
1883 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1884 QEMU_CAPS_DEVICE_SPAPR_VTY);
1885 DO_TEST("pseries-serial-compat",
1886 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1887 QEMU_CAPS_DEVICE_SPAPR_VTY);
1888 DO_TEST("pseries-serial-pci",
1889 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1890 QEMU_CAPS_DEVICE_PCI_SERIAL);
1891 DO_TEST("pseries-serial-usb",
1892 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1893 QEMU_CAPS_DEVICE_QEMU_XHCI,
1894 QEMU_CAPS_DEVICE_USB_SERIAL);
1895 DO_TEST("pseries-console-native",
1896 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
1897 QEMU_CAPS_DEVICE_SPAPR_VTY);
1898 DO_TEST("pseries-console-virtio",
1899 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
1900 DO_TEST_PARSE_ERROR("pseries-serial-invalid-machine", NONE);
1902 DO_TEST("mach-virt-serial-native",
1903 QEMU_CAPS_DEVICE_PL011);
1904 DO_TEST("mach-virt-serial+console-native",
1905 QEMU_CAPS_DEVICE_PL011);
1906 DO_TEST("mach-virt-serial-compat",
1907 QEMU_CAPS_DEVICE_PL011);
1908 DO_TEST("mach-virt-serial-pci",
1909 QEMU_CAPS_OBJECT_GPEX,
1910 QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
1911 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
1912 QEMU_CAPS_DEVICE_PCI_BRIDGE,
1913 QEMU_CAPS_DEVICE_PCI_SERIAL);
1914 DO_TEST("mach-virt-serial-usb",
1915 QEMU_CAPS_OBJECT_GPEX,
1916 QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
1917 QEMU_CAPS_DEVICE_QEMU_XHCI,
1918 QEMU_CAPS_DEVICE_USB_SERIAL);
1919 DO_TEST("mach-virt-console-native",
1920 QEMU_CAPS_DEVICE_PL011);
1921 DO_TEST("mach-virt-console-virtio",
1922 QEMU_CAPS_DEVICE_VIRTIO_MMIO);
1923 DO_TEST_PARSE_ERROR("mach-virt-serial-invalid-machine", NONE);
1925 DO_TEST("disk-ide-split", NONE);
1926 DO_TEST("disk-ide-wwn", QEMU_CAPS_IDE_DRIVE_WWN);
1928 DO_TEST("disk-geometry", NONE);
1929 DO_TEST("disk-blockio", QEMU_CAPS_BLOCKIO);
1931 DO_TEST("video-device-pciaddr-default",
1932 QEMU_CAPS_KVM,
1933 QEMU_CAPS_VNC,
1934 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
1935 QEMU_CAPS_DEVICE_QXL);
1936 DO_TEST("video-vga-nodevice", QEMU_CAPS_DEVICE_VGA);
1937 DO_TEST("video-vga-device", QEMU_CAPS_DEVICE_VGA,
1938 QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
1939 DO_TEST("video-vga-device-vgamem", QEMU_CAPS_DEVICE_VGA,
1940 QEMU_CAPS_DEVICE_VIDEO_PRIMARY, QEMU_CAPS_VGA_VGAMEM);
1941 DO_TEST("video-qxl-nodevice", QEMU_CAPS_DEVICE_QXL);
1942 DO_TEST("video-qxl-device",
1943 QEMU_CAPS_DEVICE_QXL,
1944 QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
1945 DO_TEST("video-qxl-device-vgamem",
1946 QEMU_CAPS_DEVICE_QXL,
1947 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
1948 QEMU_CAPS_QXL_VGAMEM);
1949 DO_TEST_CAPS_LATEST("video-qxl-device-vram64");
1950 DO_TEST("video-qxl-sec-device",
1951 QEMU_CAPS_DEVICE_QXL, QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
1952 DO_TEST("video-qxl-sec-device-vgamem",
1953 QEMU_CAPS_DEVICE_QXL,
1954 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
1955 QEMU_CAPS_QXL_VGAMEM);
1956 DO_TEST_CAPS_LATEST("video-qxl-sec-device-vram64");
1957 DO_TEST("video-qxl-heads",
1958 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
1959 QEMU_CAPS_DEVICE_QXL,
1960 QEMU_CAPS_QXL_MAX_OUTPUTS);
1961 DO_TEST("video-vga-qxl-heads",
1962 QEMU_CAPS_DEVICE_QXL,
1963 QEMU_CAPS_QXL_MAX_OUTPUTS);
1964 DO_TEST("video-qxl-noheads",
1965 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
1966 QEMU_CAPS_DEVICE_QXL,
1967 QEMU_CAPS_QXL_MAX_OUTPUTS);
1968 DO_TEST("video-virtio-gpu-device",
1969 QEMU_CAPS_DEVICE_VIRTIO_GPU,
1970 QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
1971 DO_TEST("video-virtio-gpu-virgl",
1972 QEMU_CAPS_DEVICE_VIRTIO_GPU,
1973 QEMU_CAPS_VIRTIO_GPU_VIRGL,
1974 QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
1975 DO_TEST("video-virtio-gpu-spice-gl",
1976 QEMU_CAPS_DEVICE_VIRTIO_GPU,
1977 QEMU_CAPS_VIRTIO_GPU_VIRGL,
1978 QEMU_CAPS_SPICE,
1979 QEMU_CAPS_SPICE_GL,
1980 QEMU_CAPS_SPICE_RENDERNODE,
1981 QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
1982 DO_TEST("video-virtio-gpu-sdl-gl",
1983 QEMU_CAPS_DEVICE_VIRTIO_GPU,
1984 QEMU_CAPS_VIRTIO_GPU_VIRGL,
1985 QEMU_CAPS_SDL_GL,
1986 QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
1987 DO_TEST("video-virtio-gpu-secondary",
1988 QEMU_CAPS_DEVICE_VIRTIO_GPU,
1989 QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
1990 DO_TEST("video-virtio-vga",
1991 QEMU_CAPS_DEVICE_VIRTIO_GPU,
1992 QEMU_CAPS_DEVICE_VIRTIO_VGA,
1993 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
1994 QEMU_CAPS_VIRTIO_GPU_MAX_OUTPUTS);
1995 DO_TEST("video-none-device",
1996 QEMU_CAPS_VNC);
1997 DO_TEST_PARSE_ERROR("video-invalid-multiple-devices", NONE);
1999 DO_TEST("virtio-rng-default",
2000 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2001 QEMU_CAPS_OBJECT_RNG_RANDOM);
2002 DO_TEST("virtio-rng-random",
2003 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2004 QEMU_CAPS_OBJECT_RNG_RANDOM);
2005 DO_TEST("virtio-rng-egd",
2006 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2007 QEMU_CAPS_OBJECT_RNG_EGD);
2008 DO_TEST_CAPS_VER("virtio-rng-egd-unix", "2.5.0");
2009 DO_TEST_CAPS_LATEST("virtio-rng-egd-unix");
2010 DO_TEST("virtio-rng-multiple",
2011 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2012 QEMU_CAPS_OBJECT_RNG_EGD,
2013 QEMU_CAPS_OBJECT_RNG_RANDOM);
2014 DO_TEST_PARSE_ERROR("virtio-rng-egd-crash",
2015 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2016 QEMU_CAPS_OBJECT_RNG_EGD);
2017 DO_TEST("virtio-rng-ccw",
2018 QEMU_CAPS_CCW,
2019 QEMU_CAPS_VIRTIO_S390,
2020 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2021 QEMU_CAPS_OBJECT_RNG_RANDOM);
2023 DO_TEST("s390-allow-bogus-usb-none",
2024 QEMU_CAPS_VIRTIO_S390,
2025 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2026 QEMU_CAPS_OBJECT_RNG_RANDOM);
2027 DO_TEST("s390-allow-bogus-usb-controller",
2028 QEMU_CAPS_VIRTIO_S390,
2029 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2030 QEMU_CAPS_OBJECT_RNG_RANDOM);
2032 DO_TEST("s390-panic-no-address",
2033 QEMU_CAPS_CCW,
2034 QEMU_CAPS_VIRTIO_S390);
2035 DO_TEST_FAILURE("s390-panic-address",
2036 QEMU_CAPS_CCW,
2037 QEMU_CAPS_VIRTIO_S390);
2038 DO_TEST("s390-panic-missing",
2039 QEMU_CAPS_CCW,
2040 QEMU_CAPS_VIRTIO_S390);
2041 DO_TEST_PARSE_ERROR("s390-no-parallel",
2042 QEMU_CAPS_CCW,
2043 QEMU_CAPS_VIRTIO_S390);
2044 DO_TEST("s390-serial",
2045 QEMU_CAPS_CCW,
2046 QEMU_CAPS_VIRTIO_S390,
2047 QEMU_CAPS_DEVICE_SCLPCONSOLE);
2048 DO_TEST("s390-serial-2",
2049 QEMU_CAPS_CCW,
2050 QEMU_CAPS_VIRTIO_S390,
2051 QEMU_CAPS_DEVICE_SCLPCONSOLE,
2052 QEMU_CAPS_DEVICE_SCLPLMCONSOLE);
2053 DO_TEST("s390-serial-console",
2054 QEMU_CAPS_CCW,
2055 QEMU_CAPS_VIRTIO_S390,
2056 QEMU_CAPS_DEVICE_SCLPCONSOLE);
2058 DO_TEST("ppc-dtb",
2059 QEMU_CAPS_KVM);
2060 DO_TEST("ppce500-serial",
2061 QEMU_CAPS_KVM);
2063 DO_TEST("tpm-passthrough",
2064 QEMU_CAPS_DEVICE_TPM_PASSTHROUGH, QEMU_CAPS_DEVICE_TPM_TIS);
2065 DO_TEST("tpm-passthrough-crb",
2066 QEMU_CAPS_DEVICE_TPM_PASSTHROUGH, QEMU_CAPS_DEVICE_TPM_CRB);
2067 DO_TEST_PARSE_ERROR("tpm-no-backend-invalid",
2068 QEMU_CAPS_DEVICE_TPM_PASSTHROUGH, QEMU_CAPS_DEVICE_TPM_TIS);
2069 DO_TEST_CAPS_LATEST("tpm-emulator");
2070 DO_TEST_CAPS_LATEST("tpm-emulator-tpm2");
2072 DO_TEST_PARSE_ERROR("pci-domain-invalid", NONE);
2073 DO_TEST_PARSE_ERROR("pci-bus-invalid", NONE);
2074 DO_TEST_PARSE_ERROR("pci-slot-invalid", NONE);
2075 DO_TEST_PARSE_ERROR("pci-function-invalid", NONE);
2077 DO_TEST("pci-bridge",
2078 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2079 QEMU_CAPS_VNC,
2080 QEMU_CAPS_DEVICE_CIRRUS_VGA);
2081 DO_TEST("pci-autoadd-addr",
2082 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2083 QEMU_CAPS_DEVICE_CIRRUS_VGA);
2084 DO_TEST("pci-autoadd-idx",
2085 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2086 QEMU_CAPS_DEVICE_CIRRUS_VGA);
2087 DO_TEST("pci-autofill-addr", QEMU_CAPS_DEVICE_CIRRUS_VGA);
2088 DO_TEST("pci-many",
2089 QEMU_CAPS_DEVICE_CIRRUS_VGA);
2090 DO_TEST("pci-bridge-many-disks",
2091 QEMU_CAPS_DEVICE_PCI_BRIDGE);
2092 DO_TEST("pcie-root",
2093 QEMU_CAPS_DEVICE_IOH3420,
2094 QEMU_CAPS_ICH9_AHCI,
2095 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2096 QEMU_CAPS_DEVICE_QXL);
2097 DO_TEST("q35",
2098 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2099 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2100 QEMU_CAPS_DEVICE_IOH3420,
2101 QEMU_CAPS_ICH9_AHCI,
2102 QEMU_CAPS_ICH9_USB_EHCI1,
2103 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2104 QEMU_CAPS_DEVICE_QXL);
2105 DO_TEST_PARSE_ERROR("q35-dmi-bad-address1",
2106 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2107 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2108 QEMU_CAPS_DEVICE_IOH3420);
2109 DO_TEST_PARSE_ERROR("q35-dmi-bad-address2",
2110 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2111 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2112 QEMU_CAPS_DEVICE_IOH3420);
2113 DO_TEST("q35-pm-disable",
2114 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2115 QEMU_CAPS_DEVICE_IOH3420,
2116 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_ICH9_AHCI,
2117 QEMU_CAPS_PIIX_DISABLE_S3, QEMU_CAPS_PIIX_DISABLE_S4,
2118 QEMU_CAPS_ICH9_DISABLE_S3, QEMU_CAPS_ICH9_DISABLE_S4);
2119 DO_TEST("q35-pm-disable-fallback",
2120 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2121 QEMU_CAPS_DEVICE_IOH3420,
2122 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_ICH9_AHCI,
2123 QEMU_CAPS_PIIX_DISABLE_S3, QEMU_CAPS_PIIX_DISABLE_S4);
2124 DO_TEST("q35-usb2",
2125 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2126 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2127 QEMU_CAPS_DEVICE_IOH3420,
2128 QEMU_CAPS_ICH9_AHCI,
2129 QEMU_CAPS_ICH9_USB_EHCI1,
2130 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2131 QEMU_CAPS_DEVICE_QXL);
2132 DO_TEST("q35-usb2-multi",
2133 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2134 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2135 QEMU_CAPS_DEVICE_IOH3420,
2136 QEMU_CAPS_ICH9_AHCI,
2137 QEMU_CAPS_ICH9_USB_EHCI1,
2138 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2139 QEMU_CAPS_DEVICE_QXL);
2140 DO_TEST("q35-usb2-reorder",
2141 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2142 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2143 QEMU_CAPS_DEVICE_IOH3420,
2144 QEMU_CAPS_ICH9_AHCI,
2145 QEMU_CAPS_ICH9_USB_EHCI1,
2146 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2147 QEMU_CAPS_DEVICE_QXL);
2148 /* verify that devices with pcie capability are assigned to a pcie slot */
2149 DO_TEST("q35-pcie",
2150 QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
2151 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2152 QEMU_CAPS_OBJECT_RNG_RANDOM,
2153 QEMU_CAPS_DEVICE_VIRTIO_NET,
2154 QEMU_CAPS_DEVICE_VIRTIO_GPU,
2155 QEMU_CAPS_VIRTIO_GPU_VIRGL,
2156 QEMU_CAPS_VIRTIO_KEYBOARD,
2157 QEMU_CAPS_VIRTIO_MOUSE,
2158 QEMU_CAPS_VIRTIO_TABLET,
2159 QEMU_CAPS_VIRTIO_INPUT_HOST,
2160 QEMU_CAPS_VIRTIO_SCSI,
2161 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2162 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2163 QEMU_CAPS_DEVICE_IOH3420,
2164 QEMU_CAPS_ICH9_AHCI,
2165 QEMU_CAPS_ICH9_USB_EHCI1,
2166 QEMU_CAPS_NEC_USB_XHCI,
2167 QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
2168 /* same XML as q35-pcie, but don't set
2169 * QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY, so virtio devices should
2170 * be assigned to legacy pci slots
2172 DO_TEST("q35-virtio-pci",
2173 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2174 QEMU_CAPS_OBJECT_RNG_RANDOM,
2175 QEMU_CAPS_DEVICE_VIRTIO_NET,
2176 QEMU_CAPS_DEVICE_VIRTIO_GPU,
2177 QEMU_CAPS_VIRTIO_GPU_VIRGL,
2178 QEMU_CAPS_VIRTIO_KEYBOARD,
2179 QEMU_CAPS_VIRTIO_MOUSE,
2180 QEMU_CAPS_VIRTIO_TABLET,
2181 QEMU_CAPS_VIRTIO_INPUT_HOST,
2182 QEMU_CAPS_VIRTIO_SCSI,
2183 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2184 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2185 QEMU_CAPS_DEVICE_IOH3420,
2186 QEMU_CAPS_ICH9_AHCI,
2187 QEMU_CAPS_ICH9_USB_EHCI1,
2188 QEMU_CAPS_NEC_USB_XHCI,
2189 QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
2190 /* same as q35-pcie, but all PCI controllers are added automatically */
2191 DO_TEST("q35-pcie-autoadd",
2192 QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
2193 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2194 QEMU_CAPS_OBJECT_RNG_RANDOM,
2195 QEMU_CAPS_DEVICE_VIRTIO_NET,
2196 QEMU_CAPS_DEVICE_VIRTIO_GPU,
2197 QEMU_CAPS_VIRTIO_GPU_VIRGL,
2198 QEMU_CAPS_VIRTIO_KEYBOARD,
2199 QEMU_CAPS_VIRTIO_MOUSE,
2200 QEMU_CAPS_VIRTIO_TABLET,
2201 QEMU_CAPS_VIRTIO_INPUT_HOST,
2202 QEMU_CAPS_VIRTIO_SCSI,
2203 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2204 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2205 QEMU_CAPS_DEVICE_IOH3420,
2206 QEMU_CAPS_ICH9_AHCI,
2207 QEMU_CAPS_ICH9_USB_EHCI1,
2208 QEMU_CAPS_NEC_USB_XHCI,
2209 QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
2210 DO_TEST("q35-default-devices-only",
2211 QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
2212 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2213 QEMU_CAPS_OBJECT_RNG_RANDOM,
2214 QEMU_CAPS_DEVICE_VIRTIO_NET,
2215 QEMU_CAPS_DEVICE_VIRTIO_GPU,
2216 QEMU_CAPS_VIRTIO_GPU_VIRGL,
2217 QEMU_CAPS_VIRTIO_KEYBOARD,
2218 QEMU_CAPS_VIRTIO_MOUSE,
2219 QEMU_CAPS_VIRTIO_TABLET,
2220 QEMU_CAPS_VIRTIO_INPUT_HOST,
2221 QEMU_CAPS_VIRTIO_SCSI,
2222 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2223 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2224 QEMU_CAPS_DEVICE_IOH3420,
2225 QEMU_CAPS_ICH9_AHCI,
2226 QEMU_CAPS_ICH9_USB_EHCI1,
2227 QEMU_CAPS_NEC_USB_XHCI,
2228 QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
2229 DO_TEST("q35-multifunction",
2230 QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
2231 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2232 QEMU_CAPS_OBJECT_RNG_RANDOM,
2233 QEMU_CAPS_DEVICE_VIRTIO_NET,
2234 QEMU_CAPS_DEVICE_VIRTIO_GPU,
2235 QEMU_CAPS_VIRTIO_GPU_VIRGL,
2236 QEMU_CAPS_VIRTIO_KEYBOARD,
2237 QEMU_CAPS_VIRTIO_MOUSE,
2238 QEMU_CAPS_VIRTIO_TABLET,
2239 QEMU_CAPS_VIRTIO_INPUT_HOST,
2240 QEMU_CAPS_VIRTIO_SCSI,
2241 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2242 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2243 QEMU_CAPS_DEVICE_IOH3420,
2244 QEMU_CAPS_ICH9_AHCI,
2245 QEMU_CAPS_ICH9_USB_EHCI1,
2246 QEMU_CAPS_NEC_USB_XHCI,
2247 QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
2248 DO_TEST("q35-virt-manager-basic",
2249 QEMU_CAPS_KVM,
2250 QEMU_CAPS_MACHINE_VMPORT_OPT,
2251 QEMU_CAPS_ICH9_DISABLE_S3,
2252 QEMU_CAPS_ICH9_DISABLE_S4,
2253 QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
2254 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2255 QEMU_CAPS_OBJECT_RNG_RANDOM,
2256 QEMU_CAPS_DEVICE_VIRTIO_NET,
2257 QEMU_CAPS_DEVICE_VIRTIO_GPU,
2258 QEMU_CAPS_VIRTIO_GPU_VIRGL,
2259 QEMU_CAPS_VIRTIO_KEYBOARD,
2260 QEMU_CAPS_VIRTIO_MOUSE,
2261 QEMU_CAPS_VIRTIO_TABLET,
2262 QEMU_CAPS_VIRTIO_INPUT_HOST,
2263 QEMU_CAPS_VIRTIO_SCSI,
2264 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2265 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2266 QEMU_CAPS_DEVICE_IOH3420,
2267 QEMU_CAPS_ICH9_AHCI,
2268 QEMU_CAPS_ICH9_USB_EHCI1,
2269 QEMU_CAPS_NEC_USB_XHCI,
2270 QEMU_CAPS_DEVICE_ICH9_INTEL_HDA,
2271 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2272 QEMU_CAPS_SPICE,
2273 QEMU_CAPS_DEVICE_QXL,
2274 QEMU_CAPS_HDA_DUPLEX,
2275 QEMU_CAPS_DEVICE_ISA_SERIAL,
2276 QEMU_CAPS_USB_REDIR);
2278 /* Test automatic and manual setting of pcie-root-port attributes */
2279 DO_TEST("pcie-root-port",
2280 QEMU_CAPS_DEVICE_IOH3420,
2281 QEMU_CAPS_ICH9_AHCI,
2282 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2283 QEMU_CAPS_DEVICE_QXL);
2285 /* Make sure the default model for PCIe Root Ports is picked correctly
2286 * based on QEMU binary capabilities. We use x86/q35 for the test, but
2287 * any PCIe machine type (such as aarch64/virt) will behave the same */
2288 DO_TEST("pcie-root-port-model-generic",
2289 QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
2290 QEMU_CAPS_DEVICE_IOH3420);
2291 DO_TEST("pcie-root-port-model-ioh3420",
2292 QEMU_CAPS_DEVICE_IOH3420);
2294 DO_TEST("autoindex",
2295 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2296 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2297 QEMU_CAPS_DEVICE_IOH3420,
2298 QEMU_CAPS_DEVICE_X3130_UPSTREAM,
2299 QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
2300 QEMU_CAPS_ICH9_AHCI,
2301 QEMU_CAPS_ICH9_USB_EHCI1,
2302 QEMU_CAPS_NEC_USB_XHCI);
2303 /* Make sure the user can always override libvirt's default device
2304 * placement policy by providing an explicit PCI address */
2305 DO_TEST("q35-pci-force-address",
2306 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2307 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2308 QEMU_CAPS_DEVICE_IOH3420,
2309 QEMU_CAPS_HDA_DUPLEX);
2311 DO_TEST_PARSE_ERROR("q35-wrong-root",
2312 QEMU_CAPS_DEVICE_IOH3420,
2313 QEMU_CAPS_ICH9_AHCI,
2314 QEMU_CAPS_ICH9_USB_EHCI1,
2315 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2316 QEMU_CAPS_DEVICE_QXL);
2317 DO_TEST_PARSE_ERROR("440fx-wrong-root", NONE);
2318 DO_TEST_PARSE_ERROR("440fx-ide-address-conflict", NONE);
2320 DO_TEST_PARSE_ERROR("pcie-root-port-too-many",
2321 QEMU_CAPS_DEVICE_IOH3420,
2322 QEMU_CAPS_ICH9_AHCI,
2323 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2324 QEMU_CAPS_DEVICE_QXL);
2326 DO_TEST("pcie-switch-upstream-port",
2327 QEMU_CAPS_DEVICE_IOH3420,
2328 QEMU_CAPS_DEVICE_X3130_UPSTREAM,
2329 QEMU_CAPS_ICH9_AHCI,
2330 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2331 QEMU_CAPS_DEVICE_QXL);
2332 DO_TEST("pcie-switch-downstream-port",
2333 QEMU_CAPS_DEVICE_IOH3420,
2334 QEMU_CAPS_DEVICE_X3130_UPSTREAM,
2335 QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
2336 QEMU_CAPS_ICH9_AHCI,
2337 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2338 QEMU_CAPS_DEVICE_QXL);
2340 DO_TEST("pci-expander-bus",
2341 QEMU_CAPS_DEVICE_PXB);
2342 DO_TEST_PARSE_ERROR("pci-expander-bus-bad-node",
2343 QEMU_CAPS_DEVICE_PXB);
2344 DO_TEST_PARSE_ERROR("pci-expander-bus-bad-machine",
2345 QEMU_CAPS_DEVICE_PXB);
2346 DO_TEST_PARSE_ERROR("pci-expander-bus-bad-bus",
2347 QEMU_CAPS_DEVICE_PXB);
2349 DO_TEST("pcie-expander-bus",
2350 QEMU_CAPS_DEVICE_IOH3420,
2351 QEMU_CAPS_DEVICE_X3130_UPSTREAM,
2352 QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
2353 QEMU_CAPS_DEVICE_PXB_PCIE);
2354 DO_TEST_PARSE_ERROR("pcie-expander-bus-bad-machine",
2355 QEMU_CAPS_DEVICE_IOH3420,
2356 QEMU_CAPS_DEVICE_X3130_UPSTREAM,
2357 QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
2358 QEMU_CAPS_DEVICE_PXB_PCIE);
2359 DO_TEST_PARSE_ERROR("pcie-expander-bus-bad-bus",
2360 QEMU_CAPS_DEVICE_IOH3420,
2361 QEMU_CAPS_DEVICE_PXB_PCIE);
2363 DO_TEST("hostdev-scsi-lsi",
2364 QEMU_CAPS_VIRTIO_SCSI,
2365 QEMU_CAPS_SCSI_LSI);
2366 DO_TEST("hostdev-scsi-virtio-scsi",
2367 QEMU_CAPS_VIRTIO_SCSI,
2368 QEMU_CAPS_SCSI_LSI);
2369 DO_TEST("hostdev-scsi-readonly",
2370 QEMU_CAPS_VIRTIO_SCSI,
2371 QEMU_CAPS_SCSI_LSI);
2372 DO_TEST("hostdev-scsi-virtio-scsi",
2373 QEMU_CAPS_VIRTIO_SCSI,
2374 QEMU_CAPS_SCSI_LSI);
2375 DO_TEST("hostdev-scsi-lsi-iscsi",
2376 QEMU_CAPS_VIRTIO_SCSI,
2377 QEMU_CAPS_SCSI_LSI);
2378 DO_TEST("hostdev-scsi-lsi-iscsi-auth",
2379 QEMU_CAPS_VIRTIO_SCSI,
2380 QEMU_CAPS_SCSI_LSI);
2381 DO_TEST("hostdev-scsi-virtio-iscsi",
2382 QEMU_CAPS_VIRTIO_SCSI,
2383 QEMU_CAPS_SCSI_LSI);
2384 DO_TEST("hostdev-scsi-virtio-iscsi-auth",
2385 QEMU_CAPS_VIRTIO_SCSI,
2386 QEMU_CAPS_SCSI_LSI);
2387 DO_TEST("disk-hostdev-scsi-virtio-iscsi-auth-AES",
2388 QEMU_CAPS_VIRTIO_SCSI,
2389 QEMU_CAPS_SCSI_LSI,
2390 QEMU_CAPS_OBJECT_SECRET,
2391 QEMU_CAPS_ISCSI_PASSWORD_SECRET);
2392 DO_TEST("hostdev-scsi-vhost-scsi-ccw",
2393 QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI,
2394 QEMU_CAPS_CCW);
2395 DO_TEST("hostdev-scsi-vhost-scsi-pci",
2396 QEMU_CAPS_VIRTIO_SCSI,
2397 QEMU_CAPS_DEVICE_VHOST_SCSI);
2398 DO_TEST("hostdev-scsi-vhost-scsi-pcie",
2399 QEMU_CAPS_KVM,
2400 QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI,
2401 QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
2402 QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY);
2404 DO_TEST_CAPS_VER("mlock-on", "3.0.0");
2405 DO_TEST_CAPS_VER("mlock-off", "3.0.0");
2406 DO_TEST_CAPS_LATEST("mlock-on");
2407 DO_TEST_CAPS_LATEST("mlock-off");
2409 DO_TEST_PARSE_ERROR("pci-bridge-negative-index-invalid", NONE);
2410 DO_TEST_PARSE_ERROR("pci-bridge-duplicate-index", NONE);
2411 DO_TEST_PARSE_ERROR("pci-root-nonzero-index", NONE);
2412 DO_TEST_PARSE_ERROR("pci-root-address", NONE);
2414 DO_TEST("hotplug-base",
2415 QEMU_CAPS_KVM, QEMU_CAPS_VIRTIO_SCSI);
2417 DO_TEST("pcihole64", QEMU_CAPS_I440FX_PCI_HOLE64_SIZE);
2418 DO_TEST_FAILURE("pcihole64-none", NONE);
2419 DO_TEST("pcihole64-q35",
2420 QEMU_CAPS_DEVICE_IOH3420,
2421 QEMU_CAPS_ICH9_AHCI,
2422 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2423 QEMU_CAPS_DEVICE_QXL,
2424 QEMU_CAPS_Q35_PCI_HOLE64_SIZE);
2426 DO_TEST("arm-vexpressa9-nodevs", NONE);
2427 DO_TEST("arm-vexpressa9-basic", NONE);
2428 DO_TEST("arm-vexpressa9-virtio",
2429 QEMU_CAPS_DEVICE_VIRTIO_MMIO,
2430 QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM);
2431 DO_TEST("arm-virt-virtio",
2432 QEMU_CAPS_DEVICE_VIRTIO_MMIO,
2433 QEMU_CAPS_DEVICE_PL011,
2434 QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM);
2436 DO_TEST("aarch64-virt-virtio",
2437 QEMU_CAPS_DEVICE_VIRTIO_MMIO,
2438 QEMU_CAPS_DEVICE_PL011,
2439 QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM);
2441 /* Demonstrates the virtio-pci default... namely that there isn't any!
2442 q35 style PCI controllers will be added if the binary supports it,
2443 but virtio-mmio is always used unless PCI addresses are manually
2444 specified. */
2445 DO_TEST("aarch64-virtio-pci-default",
2446 QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
2447 QEMU_CAPS_DEVICE_VIRTIO_MMIO,
2448 QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM,
2449 QEMU_CAPS_OBJECT_GPEX, QEMU_CAPS_DEVICE_PCI_BRIDGE,
2450 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2451 QEMU_CAPS_DEVICE_IOH3420,
2452 QEMU_CAPS_DEVICE_PL011,
2453 QEMU_CAPS_VIRTIO_SCSI);
2454 DO_TEST("aarch64-virt-2.6-virtio-pci-default",
2455 QEMU_CAPS_DEVICE_VIRTIO_MMIO,
2456 QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM,
2457 QEMU_CAPS_OBJECT_GPEX, QEMU_CAPS_DEVICE_PCI_BRIDGE,
2458 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2459 QEMU_CAPS_DEVICE_PL011,
2460 QEMU_CAPS_DEVICE_IOH3420);
2461 /* Example of using virtio-pci with no explicit PCI controller
2462 but with manual PCI addresses */
2463 DO_TEST("aarch64-virtio-pci-manual-addresses",
2464 QEMU_CAPS_DEVICE_VIRTIO_MMIO,
2465 QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM,
2466 QEMU_CAPS_OBJECT_GPEX, QEMU_CAPS_DEVICE_PCI_BRIDGE,
2467 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2468 QEMU_CAPS_DEVICE_IOH3420,
2469 QEMU_CAPS_VIRTIO_SCSI);
2470 DO_TEST("aarch64-video-virtio-gpu-pci",
2471 QEMU_CAPS_OBJECT_GPEX,
2472 QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_IOH3420,
2473 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2474 QEMU_CAPS_DEVICE_VIRTIO_GPU);
2475 DO_TEST("aarch64-video-default",
2476 QEMU_CAPS_OBJECT_GPEX,
2477 QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_IOH3420,
2478 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2479 QEMU_CAPS_DEVICE_VIRTIO_GPU, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2480 QEMU_CAPS_VNC);
2481 DO_TEST("aarch64-aavmf-virtio-mmio",
2482 QEMU_CAPS_DEVICE_VIRTIO_MMIO,
2483 QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM);
2484 DO_TEST("aarch64-virt-default-nic",
2485 QEMU_CAPS_DEVICE_VIRTIO_MMIO);
2486 qemuTestSetHostArch(driver.caps, VIR_ARCH_AARCH64);
2487 DO_TEST("aarch64-cpu-passthrough",
2488 QEMU_CAPS_DEVICE_VIRTIO_MMIO,
2489 QEMU_CAPS_KVM);
2490 DO_TEST_GIC("aarch64-gic-none", GIC_NONE,
2491 QEMU_CAPS_KVM,
2492 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2493 DO_TEST_GIC("aarch64-gic-none-v2", GIC_V2,
2494 QEMU_CAPS_KVM,
2495 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2496 DO_TEST_GIC("aarch64-gic-none-v3", GIC_V3,
2497 QEMU_CAPS_KVM,
2498 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2499 DO_TEST_GIC("aarch64-gic-none-both", GIC_BOTH,
2500 QEMU_CAPS_KVM,
2501 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2502 DO_TEST_GIC("aarch64-gic-none-tcg", GIC_BOTH,
2503 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2504 DO_TEST_GIC("aarch64-gic-default", GIC_NONE,
2505 QEMU_CAPS_KVM,
2506 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2507 DO_TEST_GIC("aarch64-gic-default-v2", GIC_V2,
2508 QEMU_CAPS_KVM,
2509 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2510 DO_TEST_GIC("aarch64-gic-default-v3", GIC_V3,
2511 QEMU_CAPS_KVM,
2512 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2513 DO_TEST_GIC("aarch64-gic-default-both", GIC_BOTH,
2514 QEMU_CAPS_KVM,
2515 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2516 DO_TEST_GIC("aarch64-gic-v2", GIC_NONE,
2517 QEMU_CAPS_KVM,
2518 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2519 DO_TEST_GIC("aarch64-gic-v2", GIC_V2,
2520 QEMU_CAPS_KVM,
2521 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2522 DO_TEST_GIC("aarch64-gic-v2", GIC_V3,
2523 QEMU_CAPS_KVM,
2524 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2525 DO_TEST_GIC("aarch64-gic-v2", GIC_BOTH,
2526 QEMU_CAPS_KVM,
2527 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2528 DO_TEST_FAILURE("aarch64-gic-v3",
2529 QEMU_CAPS_KVM, NONE);
2530 DO_TEST_GIC("aarch64-gic-v3", GIC_NONE,
2531 QEMU_CAPS_KVM,
2532 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2533 DO_TEST_GIC("aarch64-gic-v3", GIC_V2,
2534 QEMU_CAPS_KVM,
2535 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2536 DO_TEST_GIC("aarch64-gic-v3", GIC_V3,
2537 QEMU_CAPS_KVM,
2538 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2539 DO_TEST_GIC("aarch64-gic-v3", GIC_BOTH,
2540 QEMU_CAPS_KVM,
2541 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2542 DO_TEST_FAILURE("aarch64-gic-host",
2543 QEMU_CAPS_KVM, NONE);
2544 DO_TEST_GIC("aarch64-gic-host", GIC_NONE,
2545 QEMU_CAPS_KVM,
2546 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2547 DO_TEST_GIC("aarch64-gic-host", GIC_V2,
2548 QEMU_CAPS_KVM,
2549 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2550 DO_TEST_GIC("aarch64-gic-host", GIC_V3,
2551 QEMU_CAPS_KVM,
2552 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2553 DO_TEST_GIC("aarch64-gic-host", GIC_BOTH,
2554 QEMU_CAPS_KVM,
2555 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2556 DO_TEST_PARSE_ERROR("aarch64-gic-invalid",
2557 QEMU_CAPS_KVM,
2558 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2559 DO_TEST_PARSE_ERROR("aarch64-gic-not-virt",
2560 QEMU_CAPS_KVM,
2561 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2562 DO_TEST_PARSE_ERROR("aarch64-gic-not-arm",
2563 QEMU_CAPS_KVM,
2564 QEMU_CAPS_MACH_VIRT_GIC_VERSION);
2565 DO_TEST("aarch64-kvm-32-on-64",
2566 QEMU_CAPS_DEVICE_VIRTIO_MMIO,
2567 QEMU_CAPS_DEVICE_PL011,
2568 QEMU_CAPS_KVM, QEMU_CAPS_CPU_AARCH64_OFF);
2569 DO_TEST_FAILURE("aarch64-kvm-32-on-64",
2570 QEMU_CAPS_DEVICE_VIRTIO_MMIO,
2571 QEMU_CAPS_KVM);
2572 DO_TEST("aarch64-pci-serial",
2573 QEMU_CAPS_DEVICE_PCI_SERIAL,
2574 QEMU_CAPS_CHARDEV_LOGFILE,
2575 QEMU_CAPS_OBJECT_GPEX,
2576 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2577 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2578 QEMU_CAPS_DEVICE_PCIE_ROOT_PORT);
2579 DO_TEST("aarch64-traditional-pci",
2580 QEMU_CAPS_OBJECT_GPEX,
2581 QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
2582 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2583 QEMU_CAPS_DEVICE_PCIE_PCI_BRIDGE,
2584 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2585 QEMU_CAPS_DEVICE_PCI_SERIAL);
2587 /* Make sure all combinations of ACPI and UEFI behave as expected */
2588 DO_TEST("aarch64-acpi-uefi", NONE);
2589 DO_TEST("aarch64-noacpi-uefi", NONE);
2590 DO_TEST("aarch64-noacpi-nouefi", NONE);
2591 DO_TEST_PARSE_ERROR("aarch64-acpi-nouefi", NONE);
2593 qemuTestSetHostArch(driver.caps, VIR_ARCH_NONE);
2595 DO_TEST("kvm-pit-delay", QEMU_CAPS_KVM_PIT_TICK_POLICY);
2596 DO_TEST("kvm-pit-discard", QEMU_CAPS_KVM_PIT_TICK_POLICY);
2598 DO_TEST("panic",
2599 QEMU_CAPS_DEVICE_PANIC);
2600 DO_TEST("panic-double",
2601 QEMU_CAPS_DEVICE_PANIC);
2603 DO_TEST("panic-no-address",
2604 QEMU_CAPS_DEVICE_PANIC);
2606 DO_TEST("fips-enabled", QEMU_CAPS_ENABLE_FIPS);
2608 DO_TEST("shmem", QEMU_CAPS_DEVICE_IVSHMEM);
2609 DO_TEST("shmem-plain-doorbell", QEMU_CAPS_DEVICE_IVSHMEM,
2610 QEMU_CAPS_DEVICE_IVSHMEM_PLAIN,
2611 QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL);
2612 DO_TEST_FAILURE("shmem", NONE);
2613 DO_TEST_FAILURE("shmem-invalid-size",
2614 QEMU_CAPS_DEVICE_IVSHMEM);
2615 DO_TEST_FAILURE("shmem-invalid-address",
2616 QEMU_CAPS_DEVICE_IVSHMEM);
2617 DO_TEST_FAILURE("shmem-small-size",
2618 QEMU_CAPS_DEVICE_IVSHMEM);
2619 DO_TEST_PARSE_ERROR("shmem-msi-only", NONE);
2620 DO_TEST("cpu-host-passthrough-features", QEMU_CAPS_KVM);
2622 DO_TEST_FAILURE("memory-align-fail", NONE);
2623 DO_TEST_FAILURE("memory-hotplug-nonuma", QEMU_CAPS_DEVICE_PC_DIMM);
2624 DO_TEST("memory-hotplug", NONE);
2625 DO_TEST("memory-hotplug", QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA);
2626 DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA,
2627 QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE);
2628 DO_TEST("memory-hotplug-dimm-addr", QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA,
2629 QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE);
2630 DO_TEST("memory-hotplug-ppc64-nonuma", QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA,
2631 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
2632 QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE);
2633 DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm");
2634 DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm-access");
2635 DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm-label");
2636 DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm-align");
2637 DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm-pmem");
2638 DO_TEST_CAPS_LATEST("memory-hotplug-nvdimm-readonly");
2640 DO_TEST("machine-aeskeywrap-on-caps",
2641 QEMU_CAPS_AES_KEY_WRAP,
2642 QEMU_CAPS_DEA_KEY_WRAP,
2643 QEMU_CAPS_VIRTIO_SCSI,
2644 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2645 DO_TEST_FAILURE("machine-aeskeywrap-on-caps",
2646 QEMU_CAPS_VIRTIO_SCSI,
2647 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2648 DO_TEST_FAILURE("machine-aeskeywrap-on-caps", NONE);
2650 DO_TEST("machine-aeskeywrap-on-cap",
2651 QEMU_CAPS_AES_KEY_WRAP,
2652 QEMU_CAPS_VIRTIO_SCSI,
2653 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2654 DO_TEST_FAILURE("machine-aeskeywrap-on-cap",
2655 QEMU_CAPS_VIRTIO_SCSI,
2656 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2657 DO_TEST_FAILURE("machine-aeskeywrap-on-cap", NONE);
2659 DO_TEST("machine-aeskeywrap-off-caps",
2660 QEMU_CAPS_AES_KEY_WRAP, QEMU_CAPS_DEA_KEY_WRAP,
2661 QEMU_CAPS_VIRTIO_SCSI,
2662 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2663 DO_TEST_FAILURE("machine-aeskeywrap-off-caps",
2664 QEMU_CAPS_VIRTIO_SCSI,
2665 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2666 DO_TEST_FAILURE("machine-aeskeywrap-off-caps", NONE);
2668 DO_TEST("machine-aeskeywrap-off-cap",
2669 QEMU_CAPS_AES_KEY_WRAP,
2670 QEMU_CAPS_VIRTIO_SCSI,
2671 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2672 DO_TEST_FAILURE("machine-aeskeywrap-off-cap",
2673 QEMU_CAPS_VIRTIO_SCSI,
2674 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2675 DO_TEST_FAILURE("machine-aeskeywrap-off-cap", NONE);
2677 DO_TEST("machine-deakeywrap-on-caps",
2678 QEMU_CAPS_AES_KEY_WRAP, QEMU_CAPS_DEA_KEY_WRAP,
2679 QEMU_CAPS_VIRTIO_SCSI,
2680 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2681 DO_TEST_FAILURE("machine-deakeywrap-on-caps",
2682 QEMU_CAPS_VIRTIO_SCSI,
2683 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2684 DO_TEST_FAILURE("machine-deakeywrap-on-caps", NONE);
2686 DO_TEST("machine-deakeywrap-on-cap",
2687 QEMU_CAPS_DEA_KEY_WRAP,
2688 QEMU_CAPS_VIRTIO_SCSI,
2689 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2690 DO_TEST_FAILURE("machine-deakeywrap-on-cap",
2691 QEMU_CAPS_VIRTIO_SCSI,
2692 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2693 DO_TEST_FAILURE("machine-deakeywrap-on-cap", NONE);
2695 DO_TEST("machine-deakeywrap-off-caps",
2696 QEMU_CAPS_AES_KEY_WRAP, QEMU_CAPS_DEA_KEY_WRAP,
2697 QEMU_CAPS_VIRTIO_SCSI,
2698 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2699 DO_TEST_FAILURE("machine-deakeywrap-off-caps",
2700 QEMU_CAPS_VIRTIO_SCSI,
2701 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2702 DO_TEST_FAILURE("machine-deakeywrap-off-caps", NONE);
2704 DO_TEST("machine-deakeywrap-off-cap",
2705 QEMU_CAPS_DEA_KEY_WRAP,
2706 QEMU_CAPS_VIRTIO_SCSI,
2707 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2708 DO_TEST_FAILURE("machine-deakeywrap-off-cap",
2709 QEMU_CAPS_VIRTIO_SCSI,
2710 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2711 DO_TEST_FAILURE("machine-deakeywrap-off-cap", NONE);
2713 DO_TEST("machine-keywrap-none-caps",
2714 QEMU_CAPS_AES_KEY_WRAP, QEMU_CAPS_DEA_KEY_WRAP,
2715 QEMU_CAPS_VIRTIO_SCSI,
2716 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2717 DO_TEST("machine-keywrap-none",
2718 QEMU_CAPS_VIRTIO_SCSI,
2719 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
2721 DO_TEST("machine-loadparm-s390",
2722 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390,
2723 QEMU_CAPS_LOADPARM);
2724 DO_TEST("machine-loadparm-net-s390",
2725 QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390,
2726 QEMU_CAPS_LOADPARM);
2727 DO_TEST("machine-loadparm-multiple-disks-nets-s390",
2728 QEMU_CAPS_CCW,
2729 QEMU_CAPS_VIRTIO_S390,
2730 QEMU_CAPS_LOADPARM);
2731 DO_TEST_PARSE_ERROR("machine-loadparm-s390-char-invalid",
2732 QEMU_CAPS_CCW,
2733 QEMU_CAPS_VIRTIO_S390,
2734 QEMU_CAPS_LOADPARM);
2735 DO_TEST_PARSE_ERROR("machine-loadparm-s390-len-invalid",
2736 QEMU_CAPS_CCW,
2737 QEMU_CAPS_VIRTIO_S390,
2738 QEMU_CAPS_LOADPARM);
2740 DO_TEST("qemu-ns-domain-ns0", NONE);
2741 DO_TEST("qemu-ns-domain-commandline", NONE);
2742 DO_TEST("qemu-ns-domain-commandline-ns0", NONE);
2743 DO_TEST("qemu-ns-commandline", NONE);
2744 DO_TEST("qemu-ns-commandline-ns0", NONE);
2745 DO_TEST("qemu-ns-commandline-ns1", NONE);
2747 DO_TEST("virtio-input", QEMU_CAPS_VIRTIO_KEYBOARD,
2748 QEMU_CAPS_VIRTIO_MOUSE, QEMU_CAPS_VIRTIO_TABLET);
2749 DO_TEST("virtio-input-passthrough", QEMU_CAPS_VIRTIO_INPUT_HOST);
2751 DO_TEST("ppc64-usb-controller",
2752 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
2753 QEMU_CAPS_PCI_OHCI);
2754 DO_TEST("ppc64-usb-controller-legacy",
2755 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
2756 QEMU_CAPS_PIIX3_USB_UHCI);
2757 DO_TEST_FULL("ppc64-usb-controller-qemu-xhci",
2758 ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE,
2759 ARG_QEMU_CAPS,
2760 QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
2761 QEMU_CAPS_NEC_USB_XHCI,
2762 QEMU_CAPS_DEVICE_QEMU_XHCI);
2764 DO_TEST("aarch64-usb-controller-qemu-xhci",
2765 QEMU_CAPS_OBJECT_GPEX,
2766 QEMU_CAPS_NEC_USB_XHCI,
2767 QEMU_CAPS_DEVICE_QEMU_XHCI);
2769 DO_TEST("aarch64-usb-controller-nec-xhci",
2770 QEMU_CAPS_OBJECT_GPEX,
2771 QEMU_CAPS_NEC_USB_XHCI);
2773 /* VM XML has invalid arch/ostype/virttype combo, but the SKIP flag
2774 * will avoid the error. Still, we expect qemu driver to complain about
2775 * missing machine error, and not crash */
2776 DO_TEST_FULL("missing-machine",
2777 ARG_FLAGS, FLAG_EXPECT_PARSE_ERROR | FLAG_EXPECT_FAILURE,
2778 ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE,
2779 ARG_QEMU_CAPS, NONE);
2781 DO_TEST("name-escape",
2782 QEMU_CAPS_NAME_DEBUG_THREADS,
2783 QEMU_CAPS_OBJECT_SECRET,
2784 QEMU_CAPS_DRIVE_IOTUNE_MAX,
2785 QEMU_CAPS_DRIVE_IOTUNE_GROUP,
2786 QEMU_CAPS_VNC,
2787 QEMU_CAPS_NAME_GUEST,
2788 QEMU_CAPS_DEVICE_CIRRUS_VGA,
2789 QEMU_CAPS_SPICE,
2790 QEMU_CAPS_SPICE_UNIX,
2791 QEMU_CAPS_DEVICE_VIRTIO_GPU,
2792 QEMU_CAPS_VIRTIO_GPU_VIRGL,
2793 QEMU_CAPS_SPICE_GL,
2794 QEMU_CAPS_SPICE_RENDERNODE,
2795 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2796 QEMU_CAPS_DEVICE_ISA_SERIAL,
2797 QEMU_CAPS_CHARDEV_FILE_APPEND,
2798 QEMU_CAPS_CCID_EMULATED,
2799 QEMU_CAPS_VIRTIO_SCSI);
2800 DO_TEST("debug-threads", QEMU_CAPS_NAME_DEBUG_THREADS);
2802 DO_TEST("master-key", QEMU_CAPS_OBJECT_SECRET);
2803 DO_TEST("usb-long-port-path",
2804 QEMU_CAPS_USB_HUB);
2805 DO_TEST_PARSE_ERROR("usb-too-long-port-path-invalid",
2806 QEMU_CAPS_USB_HUB);
2808 DO_TEST("acpi-table", NONE);
2810 DO_TEST_CAPS_LATEST("intel-iommu");
2811 DO_TEST_CAPS_VER("intel-iommu", "2.6.0");
2812 DO_TEST_CAPS_LATEST("intel-iommu-caching-mode");
2813 DO_TEST_CAPS_LATEST("intel-iommu-eim");
2814 DO_TEST_CAPS_LATEST("intel-iommu-device-iotlb");
2815 DO_TEST_PARSE_ERROR("intel-iommu-wrong-machine", NONE);
2817 DO_TEST("cpu-hotplug-startup", QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS);
2818 DO_TEST_PARSE_ERROR("cpu-hotplug-granularity",
2819 QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS);
2821 DO_TEST("virtio-options", QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_VIRTIO_KEYBOARD,
2822 QEMU_CAPS_VIRTIO_MOUSE, QEMU_CAPS_VIRTIO_TABLET,
2823 QEMU_CAPS_VIRTIO_INPUT_HOST,
2824 QEMU_CAPS_DEVICE_VIRTIO_GPU,
2825 QEMU_CAPS_VIRTIO_GPU_VIRGL,
2826 QEMU_CAPS_DEVICE_VIRTIO_RNG,
2827 QEMU_CAPS_OBJECT_RNG_RANDOM,
2828 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2829 QEMU_CAPS_VIRTIO_PCI_IOMMU_PLATFORM,
2830 QEMU_CAPS_VIRTIO_PCI_ATS);
2832 DO_TEST("fd-memory-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE,
2833 QEMU_CAPS_KVM);
2834 DO_TEST("fd-memory-numa-topology2", QEMU_CAPS_OBJECT_MEMORY_FILE,
2835 QEMU_CAPS_KVM);
2836 DO_TEST("fd-memory-numa-topology3", QEMU_CAPS_OBJECT_MEMORY_FILE,
2837 QEMU_CAPS_KVM);
2839 DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE,
2840 QEMU_CAPS_KVM);
2842 DO_TEST_CAPS_LATEST("memfd-memory-numa");
2843 DO_TEST_CAPS_LATEST("memfd-memory-default-hugepage");
2845 DO_TEST("cpu-check-none", QEMU_CAPS_KVM);
2846 DO_TEST("cpu-check-partial", QEMU_CAPS_KVM);
2847 DO_TEST("cpu-check-full", QEMU_CAPS_KVM);
2848 DO_TEST("cpu-check-default-none", QEMU_CAPS_KVM);
2849 DO_TEST("cpu-check-default-none2", NONE);
2850 DO_TEST("cpu-check-default-partial", QEMU_CAPS_KVM);
2851 DO_TEST("cpu-check-default-partial2", QEMU_CAPS_KVM);
2853 DO_TEST("cpu-cache-disable", QEMU_CAPS_KVM, QEMU_CAPS_CPU_CACHE);
2854 DO_TEST("cpu-cache-disable2", QEMU_CAPS_KVM);
2855 DO_TEST("cpu-cache-disable3", QEMU_CAPS_KVM, QEMU_CAPS_CPU_CACHE);
2856 DO_TEST("cpu-cache-passthrough", QEMU_CAPS_KVM, QEMU_CAPS_CPU_CACHE);
2857 DO_TEST("cpu-cache-passthrough2", QEMU_CAPS_KVM);
2858 DO_TEST("cpu-cache-emulate-l3", QEMU_CAPS_KVM, QEMU_CAPS_CPU_CACHE);
2859 DO_TEST_PARSE_ERROR("cpu-cache-emulate-l2", QEMU_CAPS_KVM);
2860 DO_TEST_PARSE_ERROR("cpu-cache-passthrough3", QEMU_CAPS_KVM);
2861 DO_TEST_PARSE_ERROR("cpu-cache-passthrough-l3", QEMU_CAPS_KVM);
2862 DO_TEST("vmcoreinfo", QEMU_CAPS_DEVICE_VMCOREINFO);
2864 DO_TEST("user-aliases", QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_CIRRUS_VGA,
2865 QEMU_CAPS_OBJECT_MEMORY_FILE, QEMU_CAPS_PIIX_DISABLE_S3,
2866 QEMU_CAPS_PIIX_DISABLE_S4, QEMU_CAPS_VNC,
2867 QEMU_CAPS_DEVICE_ISA_SERIAL,
2868 QEMU_CAPS_HDA_DUPLEX,
2869 QEMU_CAPS_CCID_EMULATED,
2870 QEMU_CAPS_QCOW2_LUKS, QEMU_CAPS_OBJECT_SECRET);
2871 DO_TEST("user-aliases2", QEMU_CAPS_DEVICE_IOH3420, QEMU_CAPS_ICH9_AHCI);
2872 DO_TEST("user-aliases-usb", QEMU_CAPS_KVM,
2873 QEMU_CAPS_PIIX_DISABLE_S3, QEMU_CAPS_PIIX_DISABLE_S4,
2874 QEMU_CAPS_ICH9_USB_EHCI1);
2876 DO_TEST_CAPS_VER("disk-virtio-scsi-reservations", "2.12.0");
2877 DO_TEST_CAPS_LATEST("disk-virtio-scsi-reservations");
2879 DO_TEST_CAPS_LATEST("tseg-explicit-size");
2880 DO_TEST_PARSE_ERROR("tseg-i440fx",
2881 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2882 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2883 QEMU_CAPS_DEVICE_IOH3420,
2884 QEMU_CAPS_ICH9_AHCI,
2885 QEMU_CAPS_MACHINE_SMM_OPT,
2886 QEMU_CAPS_VIRTIO_SCSI,
2887 QEMU_CAPS_MCH_EXTENDED_TSEG_MBYTES);
2888 DO_TEST_PARSE_ERROR("tseg-explicit-size",
2889 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2890 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2891 QEMU_CAPS_DEVICE_IOH3420,
2892 QEMU_CAPS_ICH9_AHCI,
2893 QEMU_CAPS_MACHINE_SMM_OPT,
2894 QEMU_CAPS_VIRTIO_SCSI);
2895 DO_TEST_PARSE_ERROR("tseg-invalid-size",
2896 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2897 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2898 QEMU_CAPS_DEVICE_IOH3420,
2899 QEMU_CAPS_ICH9_AHCI,
2900 QEMU_CAPS_MACHINE_SMM_OPT,
2901 QEMU_CAPS_VIRTIO_SCSI,
2902 QEMU_CAPS_MCH_EXTENDED_TSEG_MBYTES);
2904 DO_TEST("video-virtio-gpu-ccw", QEMU_CAPS_CCW,
2905 QEMU_CAPS_DEVICE_VIRTIO_GPU,
2906 QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
2907 QEMU_CAPS_VIRTIO_GPU_MAX_OUTPUTS,
2908 QEMU_CAPS_VNC,
2909 QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW);
2911 DO_TEST("input-virtio-ccw", QEMU_CAPS_CCW,
2912 QEMU_CAPS_VIRTIO_KEYBOARD,
2913 QEMU_CAPS_VIRTIO_MOUSE,
2914 QEMU_CAPS_VIRTIO_TABLET,
2915 QEMU_CAPS_DEVICE_VIRTIO_KEYBOARD_CCW,
2916 QEMU_CAPS_DEVICE_VIRTIO_MOUSE_CCW,
2917 QEMU_CAPS_DEVICE_VIRTIO_TABLET_CCW);
2919 DO_TEST_CAPS_LATEST("vhost-vsock");
2920 DO_TEST_CAPS_LATEST("vhost-vsock-auto");
2921 DO_TEST_CAPS_ARCH_LATEST("vhost-vsock-ccw", "s390x");
2922 DO_TEST_CAPS_ARCH_LATEST("vhost-vsock-ccw-auto", "s390x");
2924 DO_TEST_CAPS_VER("launch-security-sev", "2.12.0");
2926 DO_TEST("riscv64-virt",
2927 QEMU_CAPS_DEVICE_VIRTIO_MMIO);
2928 DO_TEST("riscv64-virt-pci",
2929 QEMU_CAPS_OBJECT_GPEX);
2931 /* Older version checks disable-legacy usage */
2932 DO_TEST_CAPS_VER("virtio-transitional", "3.1.0");
2933 DO_TEST_CAPS_VER("virtio-non-transitional", "3.1.0");
2934 DO_TEST_CAPS_LATEST("virtio-transitional");
2935 DO_TEST_CAPS_LATEST("virtio-non-transitional");
2936 DO_TEST_PARSE_ERROR("virtio-transitional-not-supported",
2937 QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
2938 QEMU_CAPS_DEVICE_PCI_BRIDGE,
2939 QEMU_CAPS_DEVICE_IOH3420);
2941 /* Simple headless guests for various architectures */
2942 DO_TEST_CAPS_ARCH_LATEST("aarch64-virt-headless", "aarch64");
2943 DO_TEST_CAPS_ARCH_LATEST("ppc64-pseries-headless", "ppc64");
2944 DO_TEST_CAPS_ARCH_LATEST("riscv64-virt-headless", "riscv64");
2945 DO_TEST_CAPS_ARCH_LATEST("s390x-ccw-headless", "s390x");
2946 DO_TEST_CAPS_ARCH_LATEST("x86_64-pc-headless", "x86_64");
2947 DO_TEST_CAPS_ARCH_LATEST("x86_64-q35-headless", "x86_64");
2949 /* Simple guests with graphics for various architectures */
2950 DO_TEST_CAPS_ARCH_LATEST("aarch64-virt-graphics", "aarch64");
2951 DO_TEST_CAPS_ARCH_LATEST("ppc64-pseries-graphics", "ppc64");
2952 DO_TEST_CAPS_ARCH_LATEST("s390x-ccw-graphics", "s390x");
2953 DO_TEST_CAPS_ARCH_LATEST("x86_64-pc-graphics", "x86_64");
2954 DO_TEST_CAPS_ARCH_LATEST("x86_64-q35-graphics", "x86_64");
2956 DO_TEST_CAPS_LATEST("os-firmware-bios");
2957 DO_TEST_CAPS_LATEST("os-firmware-efi");
2958 DO_TEST_CAPS_LATEST("os-firmware-efi-secboot");
2959 DO_TEST_CAPS_ARCH_LATEST("aarch64-os-firmware-efi", "aarch64");
2961 if (getenv("LIBVIRT_SKIP_CLEANUP") == NULL)
2962 virFileDeleteTree(fakerootdir);
2964 VIR_FREE(driver.config->nbdTLSx509certdir);
2965 qemuTestDriverFree(&driver);
2966 VIR_FREE(fakerootdir);
2967 virHashFree(capslatest);
2968 virFileWrapperClearPrefixes();
2970 return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
2973 VIR_TEST_MAIN_PRELOAD(mymain,
2974 abs_builddir "/.libs/qemuxml2argvmock.so",
2975 abs_builddir "/.libs/virrandommock.so",
2976 abs_builddir "/.libs/qemucpumock.so",
2977 abs_builddir "/.libs/virpcimock.so")
2979 #else
2981 int main(void)
2983 return EXIT_AM_SKIP;
2986 #endif /* WITH_QEMU */