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"
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
,
41 unsigned int fakeflags ATTRIBUTE_UNUSED
,
42 unsigned int internalFlags ATTRIBUTE_UNUSED
)
45 if (VIR_STRDUP(secret
, "AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+HOBlMQ1A") < 0)
47 *value_size
= strlen(secret
);
48 return (unsigned char *) secret
;
52 fakeSecretLookupByUsage(virConnectPtr conn
,
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'",
64 } else if (STRNEQ(usageID
, "mycluster_myname")) {
65 virReportError(VIR_ERR_INTERNAL_ERROR
,
66 "test provided incorrect usage '%s'", usageID
);
70 if (virUUIDGenerate(uuid
) < 0)
73 return virGetSecret(conn
, uuid
, usageType
, usageID
);
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
,
105 char *xmlpath
= NULL
;
106 virStoragePoolPtr ret
= NULL
;
108 if (STRNEQ(name
, "inactive")) {
109 if (virAsprintf(&xmlpath
, "%s/%s%s.xml",
111 STORAGE_POOL_XML_PATH
,
115 if (!virFileExists(xmlpath
)) {
116 virReportError(VIR_ERR_NO_STORAGE_POOL
,
117 "File '%s' not found", xmlpath
);
122 ret
= virGetStoragePool(conn
, name
, fakeUUID
, NULL
, NULL
);
130 static virStorageVolPtr
131 fakeStorageVolLookupByName(virStoragePoolPtr pool
,
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
);
143 if (STREQ(name
, "nonexistent")) {
144 virReportError(VIR_ERR_NO_STORAGE_VOL
,
145 "no storage vol with matching name '%s'", name
);
149 if (!strchr(name
, '+'))
152 if (!(volinfo
= virStringSplit(name
, "+", 2)))
158 ret
= virGetStorageVol(pool
->conn
, pool
->name
, volinfo
[1], volinfo
[0],
162 virStringListFree(volinfo
);
166 ret
= virGetStorageVol(pool
->conn
, pool
->name
, name
, "block", NULL
, NULL
);
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
);
189 fakeStorageVolGetPath(virStorageVolPtr vol
)
193 ignore_value(virAsprintf(&ret
, "/some/%s/device/%s", vol
->key
, vol
->name
));
200 fakeStoragePoolGetXMLDesc(virStoragePoolPtr pool
,
201 unsigned int flags_unused ATTRIBUTE_UNUSED
)
203 char *xmlpath
= NULL
;
206 if (STREQ(pool
->name
, "inactive")) {
207 virReportError(VIR_ERR_NO_STORAGE_POOL
, NULL
);
211 if (virAsprintf(&xmlpath
, "%s/%s%s.xml",
213 STORAGE_POOL_XML_PATH
,
217 if (virTestLoadFile(xmlpath
, &xmlbuf
) < 0) {
218 virReportError(VIR_ERR_INTERNAL_ERROR
,
219 "failed to load XML file '%s'",
231 fakeStoragePoolIsActive(virStoragePoolPtr pool
)
233 if (STREQ(pool
->name
, "inactive"))
239 /* Test storage pool implementation
241 * These functions aid testing of storage pool related stuff when creating a
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
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
,
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
);
280 fakeNWFilterBindingDelete(virNWFilterBindingPtr binding ATTRIBUTE_UNUSED
)
286 static virNWFilterDriver fakeNWFilterDriver
= {
287 .nwfilterBindingLookupByPortDev
= fakeNWFilterBindingLookupByPortDev
,
288 .nwfilterBindingDelete
= fakeNWFilterBindingDelete
,
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
[] = {
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)
326 if (virQEMUCapsAddCPUDefinitions(caps
, VIR_DOMAIN_VIRT_KVM
,
328 ARRAY_CARDINALITY(x86LegacyModels
),
329 VIR_DOMCAPS_CPU_USABLE_UNKNOWN
) < 0 ||
330 virQEMUCapsAddCPUDefinitions(caps
, VIR_DOMAIN_VIRT_QEMU
,
332 ARRAY_CARDINALITY(x86LegacyModels
),
333 VIR_DOMCAPS_CPU_USABLE_UNKNOWN
) < 0)
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)
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)
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)
364 testUpdateQEMUCaps(const struct testQemuInfo
*info
,
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)
381 virQEMUCapsInitHostCPUModel(info
->qemuCaps
, caps
->host
.arch
,
382 VIR_DOMAIN_VIRT_KVM
);
383 virQEMUCapsInitHostCPUModel(info
->qemuCaps
, caps
->host
.arch
,
384 VIR_DOMAIN_VIRT_QEMU
);
394 testCheckExclusiveFlags(int flags
)
396 virCheckFlags(FLAG_EXPECT_FAILURE
|
397 FLAG_EXPECT_PARSE_ERROR
|
400 FLAG_SKIP_LEGACY_CPUS
|
403 VIR_EXCLUSIVE_FLAGS_RET(FLAG_REAL_CAPS
, FLAG_SKIP_LEGACY_CPUS
, -1);
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
;
417 virDomainObjPtr vm
= NULL
;
418 virDomainChrSourceDef monitor_chr
;
421 virCommandPtr cmd
= NULL
;
423 qemuDomainObjPrivatePtr priv
= NULL
;
425 memset(&monitor_chr
, 0, sizeof(monitor_chr
));
427 if (!(conn
= virGetConnect()))
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
))
444 if (testCheckExclusiveFlags(info
->flags
) < 0)
447 if (qemuTestCapsCacheInsert(driver
.qemuCapsCache
, info
->qemuCaps
) < 0)
450 if (info
->migrateFrom
&&
451 !(migrateURI
= qemuMigrationDstGetURI(info
->migrateFrom
,
455 if (!(vm
= virDomainObjNew(driver
.xmlopt
)))
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
)
466 if (flags
& FLAG_EXPECT_PARSE_ERROR
) {
467 VIR_TEST_DEBUG("passed instead of expected parse error");
470 priv
= vm
->privateData
;
472 if (virBitmapParse("0-3", &priv
->autoNodeset
, 4) < 0)
475 if (!virDomainDefCheckABIStability(vm
->def
, vm
->def
, driver
.xmlopt
)) {
476 VIR_TEST_DEBUG("ABI stability check failed on %s", info
->infile
);
482 if (qemuProcessPrepareMonitorChr(&monitor_chr
, priv
->libDir
) < 0)
485 if (!(info
->flags
& FLAG_REAL_CAPS
) &&
486 testUpdateQEMUCaps(info
, vm
, driver
.caps
) < 0)
489 log
= virTestLogContentAndReset();
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;
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
,
521 vm
->def
->tpm
->data
.emulator
.source
.type
= VIR_DOMAIN_CHR_TYPE_FILE
;
523 case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH
:
524 case VIR_DOMAIN_TPM_TYPE_LAST
:
529 if (!(cmd
= qemuProcessCreatePretendCmd(&driver
, vm
, migrateURI
,
530 (flags
& FLAG_FIPS
), false,
531 VIR_QEMU_PROCESS_START_COLD
))) {
532 if (flags
& FLAG_EXPECT_FAILURE
)
536 if (flags
& FLAG_EXPECT_FAILURE
) {
537 VIR_TEST_DEBUG("passed instead of expected failure");
541 if (!(actualargv
= virCommandToString(cmd
, false)))
544 if (virTestCompareToFile(actualargv
, info
->outfile
) < 0)
550 if (ret
== 0 && flags
& FLAG_EXPECT_FAILURE
) {
552 VIR_TEST_DEBUG("Error expected but there wasn't any.\n");
555 if (!virTestOOMActive()) {
556 if (flags
& FLAG_EXPECT_FAILURE
) {
557 if ((log
= virTestLogContentAndReset()))
558 VIR_TEST_DEBUG("Got expected error: \n%s", log
);
566 VIR_FREE(actualargv
);
567 virDomainChrSourceDefClear(&monitor_chr
);
570 virSetConnectSecret(NULL
);
571 virSetConnectStorage(NULL
);
572 virObjectUnref(conn
);
573 VIR_FREE(migrateURI
);
578 testInfoSetPaths(struct testQemuInfo
*info
,
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) {
591 # define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX"
598 virHashTablePtr capslatest
= NULL
;
600 if (VIR_STRDUP_QUIET(fakerootdir
, FAKEROOTDIRTEMPLATE
) < 0) {
601 fprintf(stderr
, "Out of memory\n");
605 if (!mkdtemp(fakerootdir
)) {
606 fprintf(stderr
, "Cannot create fakerootdir");
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) {
622 if (qemuTestDriverInit(&driver
) < 0)
625 driver
.privileged
= true;
627 VIR_FREE(driver
.config
->defaultTLSx509certdir
);
628 if (VIR_STRDUP_QUIET(driver
.config
->defaultTLSx509certdir
, "/etc/pki/qemu") < 0)
630 VIR_FREE(driver
.config
->vncTLSx509certdir
);
631 if (VIR_STRDUP_QUIET(driver
.config
->vncTLSx509certdir
, "/etc/pki/libvirt-vnc") < 0)
633 VIR_FREE(driver
.config
->spiceTLSx509certdir
);
634 if (VIR_STRDUP_QUIET(driver
.config
->spiceTLSx509certdir
, "/etc/pki/libvirt-spice") < 0)
636 VIR_FREE(driver
.config
->chardevTLSx509certdir
);
637 if (VIR_STRDUP_QUIET(driver
.config
->chardevTLSx509certdir
, "/etc/pki/libvirt-chardev") < 0)
639 VIR_FREE(driver
.config
->vxhsTLSx509certdir
);
640 if (VIR_STRDUP_QUIET(driver
.config
->vxhsTLSx509certdir
, "/etc/pki/libvirt-vxhs/dummy,path") < 0)
642 VIR_FREE(driver
.config
->nbdTLSx509certdir
);
643 if (VIR_STRDUP_QUIET(driver
.config
->nbdTLSx509certdir
, "/etc/pki/libvirt-nbd/dummy,path") < 0)
646 VIR_FREE(driver
.config
->hugetlbfs
);
647 if (VIR_ALLOC_N(driver
.config
->hugetlbfs
, 2) < 0)
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)
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)
659 VIR_FREE(driver
.config
->memoryBackingDir
);
660 if (VIR_STRDUP_QUIET(driver
.config
->memoryBackingDir
, "/var/lib/libvirt/qemu/ram") < 0)
662 VIR_FREE(driver
.config
->nvramDir
);
663 if (VIR_STRDUP(driver
.config
->nvramDir
, "/var/lib/libvirt/qemu/nvram") < 0)
666 capslatest
= testQemuGetLatestCaps();
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
691 # define DO_TEST_INTERNAL(_name, _suffix, ...) \
693 static struct testQemuInfo info = { \
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) \
706 testQemuInfoClear(&info); \
709 # define DO_TEST_CAPS_INTERNAL(name, arch, ver, ...) \
710 DO_TEST_INTERNAL(name, "." arch "-" ver, \
711 ARG_CAPS_ARCH, arch, \
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.
746 # define DO_TEST(name, ...) \
748 ARG_QEMU_CAPS, __VA_ARGS__)
750 # define DO_TEST_GIC(name, gic, ...) \
753 ARG_QEMU_CAPS, __VA_ARGS__)
755 # define DO_TEST_FAILURE(name, ...) \
757 ARG_FLAGS, FLAG_EXPECT_FAILURE, \
758 ARG_QEMU_CAPS, __VA_ARGS__)
760 # define DO_TEST_PARSE_ERROR(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);
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
,
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
);
836 QEMU_CAPS_DEVICE_ISA_SERIAL
,
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
,
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",
869 QEMU_CAPS_PIIX3_USB_UHCI
,
870 QEMU_CAPS_CCID_PASSTHRU
,
872 QEMU_CAPS_HDA_DUPLEX
,
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
,
936 DO_TEST("hugepages-memaccess2", QEMU_CAPS_OBJECT_MEMORY_FILE
,
937 QEMU_CAPS_OBJECT_MEMORY_RAM
, QEMU_CAPS_DEVICE_PC_DIMM
,
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
,
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",
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",
1105 DO_TEST_PARSE_ERROR("disk-fdc-incompatible-address",
1107 DO_TEST_PARSE_ERROR("disk-ide-incompatible-address",
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",
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",
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",
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",
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
,
1189 QEMU_CAPS_DEVICE_CIRRUS_VGA
);
1190 DO_TEST("graphics-spice-compression",
1192 QEMU_CAPS_DEVICE_QXL
);
1193 DO_TEST("graphics-spice-timeout",
1196 QEMU_CAPS_DEVICE_QXL
,
1197 QEMU_CAPS_DEVICE_VGA
);
1198 DO_TEST("graphics-spice-qxl-vga",
1200 QEMU_CAPS_DEVICE_QXL
);
1201 DO_TEST("graphics-spice-usb-redir",
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",
1209 QEMU_CAPS_DEVICE_QXL
,
1210 QEMU_CAPS_SPICE_FILE_XFER_DISABLE
);
1211 DO_TEST("graphics-spice-socket",
1213 QEMU_CAPS_SPICE_UNIX
,
1214 QEMU_CAPS_DEVICE_CIRRUS_VGA
);
1215 DO_TEST("graphics-spice-auto-socket",
1217 QEMU_CAPS_SPICE_UNIX
,
1218 QEMU_CAPS_DEVICE_CIRRUS_VGA
);
1219 driver
.config
->spiceAutoUnixSocket
= true;
1220 DO_TEST("graphics-spice-auto-socket-cfg",
1222 QEMU_CAPS_SPICE_UNIX
,
1223 QEMU_CAPS_DEVICE_CIRRUS_VGA
);
1224 driver
.config
->spiceAutoUnixSocket
= false;
1225 DO_TEST("graphics-spice-egl-headless",
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
,
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",
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",
1380 QEMU_CAPS_DEVICE_CIRRUS_VGA
);
1381 DO_TEST("channel-virtio-default",
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
,
1426 DO_TEST("usb-hub-autoadd",
1428 DO_TEST("usb-hub-autoadd-deluxe",
1430 DO_TEST_PARSE_ERROR("usb-hub-conflict",
1432 DO_TEST_PARSE_ERROR("usb-hub-nonexistent",
1434 DO_TEST("usb-port-missing",
1436 DO_TEST_FAILURE("usb-bus-missing",
1438 DO_TEST("usb-ports",
1440 DO_TEST_PARSE_ERROR("usb-ports-out-of-range",
1442 DO_TEST("usb-port-autoassign",
1444 DO_TEST("usb-redir",
1446 QEMU_CAPS_ICH9_USB_EHCI1
,
1447 QEMU_CAPS_USB_REDIR
,
1449 DO_TEST("usb-redir-boot",
1451 QEMU_CAPS_ICH9_USB_EHCI1
,
1452 QEMU_CAPS_USB_REDIR
,
1454 DO_TEST("usb-redir-filter",
1456 QEMU_CAPS_ICH9_USB_EHCI1
,
1457 QEMU_CAPS_USB_REDIR
,
1459 QEMU_CAPS_USB_REDIR_FILTER
);
1460 DO_TEST("usb-redir-filter-version",
1461 QEMU_CAPS_USB_REDIR
,
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
,
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",
1474 DO_TEST_PARSE_ERROR("usb-none-usbtablet", NONE
);
1475 DO_TEST("usb-controller-default-q35",
1476 QEMU_CAPS_DEVICE_IOH3420
,
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
,
1483 QEMU_CAPS_NEC_USB_XHCI
);
1484 DO_TEST("usb-controller-explicit-q35",
1485 QEMU_CAPS_DEVICE_IOH3420
,
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
,
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
,
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
);
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",
1588 QEMU_CAPS_CCW_CSSID_UNRESTRICTED
,
1589 QEMU_CAPS_DEVICE_VFIO_CCW
);
1590 DO_TEST_FAILURE("hostdev-subsys-mdev-vfio-ccw",
1592 QEMU_CAPS_CCW_CSSID_UNRESTRICTED
);
1593 DO_TEST_PARSE_ERROR("hostdev-subsys-mdev-vfio-ccw-duplicate-address",
1595 QEMU_CAPS_CCW_CSSID_UNRESTRICTED
,
1596 QEMU_CAPS_DEVICE_VFIO_CCW
);
1597 DO_TEST_PARSE_ERROR("hostdev-subsys-mdev-vfio-ccw-invalid-address",
1599 QEMU_CAPS_CCW_CSSID_UNRESTRICTED
,
1600 QEMU_CAPS_DEVICE_VFIO_CCW
);
1602 DO_TEST_FULL("restore-v2",
1603 ARG_MIGRATE_FROM
, "exec:cat",
1605 ARG_QEMU_CAPS
, NONE
);
1606 DO_TEST_FULL("restore-v2-fd",
1607 ARG_MIGRATE_FROM
, "stdio",
1609 ARG_QEMU_CAPS
, NONE
);
1610 DO_TEST_FULL("restore-v2-fd",
1611 ARG_MIGRATE_FROM
, "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",
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",
1707 QEMU_CAPS_OBJECT_IOTHREAD
,
1708 QEMU_CAPS_OBJECT_MEMORY_RAM
,
1709 QEMU_CAPS_OBJECT_MEMORY_FILE
);
1710 DO_TEST("vcpu-placement-static",
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",
1718 QEMU_CAPS_OBJECT_MEMORY_RAM
);
1719 DO_TEST_FAILURE("numatune-memnode", NONE
);
1721 DO_TEST("numatune-memnode-no-memory",
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",
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
,
1815 qemuTestSetHostCPU(driver
.caps
, cpuPower9
);
1816 DO_TEST("pseries-cpu-compat-power9",
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",
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",
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
,
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
,
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",
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",
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",
2034 QEMU_CAPS_VIRTIO_S390
);
2035 DO_TEST_FAILURE("s390-panic-address",
2037 QEMU_CAPS_VIRTIO_S390
);
2038 DO_TEST("s390-panic-missing",
2040 QEMU_CAPS_VIRTIO_S390
);
2041 DO_TEST_PARSE_ERROR("s390-no-parallel",
2043 QEMU_CAPS_VIRTIO_S390
);
2044 DO_TEST("s390-serial",
2046 QEMU_CAPS_VIRTIO_S390
,
2047 QEMU_CAPS_DEVICE_SCLPCONSOLE
);
2048 DO_TEST("s390-serial-2",
2050 QEMU_CAPS_VIRTIO_S390
,
2051 QEMU_CAPS_DEVICE_SCLPCONSOLE
,
2052 QEMU_CAPS_DEVICE_SCLPLMCONSOLE
);
2053 DO_TEST("s390-serial-console",
2055 QEMU_CAPS_VIRTIO_S390
,
2056 QEMU_CAPS_DEVICE_SCLPCONSOLE
);
2060 DO_TEST("ppce500-serial",
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
,
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
);
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
);
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
);
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 */
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",
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
,
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
,
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
,
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",
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
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
,
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
,
2490 DO_TEST_GIC("aarch64-gic-none", GIC_NONE
,
2492 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2493 DO_TEST_GIC("aarch64-gic-none-v2", GIC_V2
,
2495 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2496 DO_TEST_GIC("aarch64-gic-none-v3", GIC_V3
,
2498 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2499 DO_TEST_GIC("aarch64-gic-none-both", GIC_BOTH
,
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
,
2506 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2507 DO_TEST_GIC("aarch64-gic-default-v2", GIC_V2
,
2509 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2510 DO_TEST_GIC("aarch64-gic-default-v3", GIC_V3
,
2512 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2513 DO_TEST_GIC("aarch64-gic-default-both", GIC_BOTH
,
2515 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2516 DO_TEST_GIC("aarch64-gic-v2", GIC_NONE
,
2518 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2519 DO_TEST_GIC("aarch64-gic-v2", GIC_V2
,
2521 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2522 DO_TEST_GIC("aarch64-gic-v2", GIC_V3
,
2524 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2525 DO_TEST_GIC("aarch64-gic-v2", GIC_BOTH
,
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
,
2532 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2533 DO_TEST_GIC("aarch64-gic-v3", GIC_V2
,
2535 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2536 DO_TEST_GIC("aarch64-gic-v3", GIC_V3
,
2538 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2539 DO_TEST_GIC("aarch64-gic-v3", GIC_BOTH
,
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
,
2546 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2547 DO_TEST_GIC("aarch64-gic-host", GIC_V2
,
2549 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2550 DO_TEST_GIC("aarch64-gic-host", GIC_V3
,
2552 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2553 DO_TEST_GIC("aarch64-gic-host", GIC_BOTH
,
2555 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2556 DO_TEST_PARSE_ERROR("aarch64-gic-invalid",
2558 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2559 DO_TEST_PARSE_ERROR("aarch64-gic-not-virt",
2561 QEMU_CAPS_MACH_VIRT_GIC_VERSION
);
2562 DO_TEST_PARSE_ERROR("aarch64-gic-not-arm",
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
,
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
);
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",
2729 QEMU_CAPS_VIRTIO_S390
,
2730 QEMU_CAPS_LOADPARM
);
2731 DO_TEST_PARSE_ERROR("machine-loadparm-s390-char-invalid",
2733 QEMU_CAPS_VIRTIO_S390
,
2734 QEMU_CAPS_LOADPARM
);
2735 DO_TEST_PARSE_ERROR("machine-loadparm-s390-len-invalid",
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
,
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
,
2787 QEMU_CAPS_NAME_GUEST
,
2788 QEMU_CAPS_DEVICE_CIRRUS_VGA
,
2790 QEMU_CAPS_SPICE_UNIX
,
2791 QEMU_CAPS_DEVICE_VIRTIO_GPU
,
2792 QEMU_CAPS_VIRTIO_GPU_VIRGL
,
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",
2805 DO_TEST_PARSE_ERROR("usb-too-long-port-path-invalid",
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
,
2834 DO_TEST("fd-memory-numa-topology2", QEMU_CAPS_OBJECT_MEMORY_FILE
,
2836 DO_TEST("fd-memory-numa-topology3", QEMU_CAPS_OBJECT_MEMORY_FILE
,
2839 DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE
,
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
,
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")
2983 return EXIT_AM_SKIP
;
2986 #endif /* WITH_QEMU */