qemuxml2xmltest.c 48.4 KB
Newer Older
1
#include <config.h>
2 3

#include <unistd.h>
4 5 6 7

#include <sys/types.h>
#include <fcntl.h>

8 9
#include "testutils.h"

10 11
#ifdef WITH_QEMU

12
# include "internal.h"
J
Ján Tomko 已提交
13
# include "qemu/qemu_domain_address.h"
M
Matthias Bolte 已提交
14
# include "qemu/qemu_domain.h"
15
# include "testutilsqemu.h"
16
# include "virstring.h"
17 18
# include "virfilewrapper.h"
# include "configmake.h"
19

20 21
# define VIR_FROM_THIS VIR_FROM_NONE

22
static virQEMUDriver driver;
23

24 25 26 27 28 29
enum {
    WHEN_INACTIVE = 1,
    WHEN_ACTIVE = 2,
    WHEN_BOTH = 3,
};

30

31 32 33
static int
testXML2XMLActive(const void *opaque)
{
34
    const struct testQemuInfo *info = opaque;
35

36
    return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt,
37
                                      info->infile, info->outfile, true, 0,
38
                                      TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS);
39 40
}

41

42
static int
43
testXML2XMLInactive(const void *opaque)
44
{
45
    const struct testQemuInfo *info = opaque;
46

47 48
    return testCompareDomXML2XMLFiles(driver.caps, driver.xmlopt,
                                      info->infile, info->outfile, false, 0,
49
                                      TEST_COMPARE_DOM_XML2XML_RESULT_SUCCESS);
50
}
51

52

53 54 55
static int
testCompareStatusXMLToXMLFiles(const void *opaque)
{
56
    const struct testQemuInfo *data = opaque;
57 58 59 60
    virDomainObjPtr obj = NULL;
    char *actual = NULL;
    int ret = -1;

61
    if (!(obj = virDomainObjParseFile(data->infile, driver.caps, driver.xmlopt,
62 63 64 65
                                      VIR_DOMAIN_DEF_PARSE_STATUS |
                                      VIR_DOMAIN_DEF_PARSE_ACTUAL_NET |
                                      VIR_DOMAIN_DEF_PARSE_PCI_ORIG_STATES |
                                      VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE |
66
                                      VIR_DOMAIN_DEF_PARSE_ALLOW_POST_PARSE_FAIL))) {
67
        VIR_TEST_DEBUG("\nfailed to parse '%s'\n", data->infile);
68
        goto cleanup;
69
    }
70 71 72 73 74 75

    if (!(actual = virDomainObjFormat(driver.xmlopt, obj, NULL,
                                      VIR_DOMAIN_DEF_FORMAT_SECURE |
                                      VIR_DOMAIN_DEF_FORMAT_STATUS |
                                      VIR_DOMAIN_DEF_FORMAT_ACTUAL_NET |
                                      VIR_DOMAIN_DEF_FORMAT_PCI_ORIG_STATES |
76
                                      VIR_DOMAIN_DEF_FORMAT_CLOCK_ADJUST))) {
77
        VIR_TEST_DEBUG("\nfailed to format back '%s'\n", data->infile);
78
        goto cleanup;
79
    }
80

81
    if (virTestCompareToFile(actual, data->outfile) < 0)
82 83 84 85 86
        goto cleanup;

    ret = 0;

 cleanup:
87
    virDomainObjEndAPI(&obj);
88 89 90 91 92 93
    VIR_FREE(actual);
    return ret;
}


static int
94
testInfoSetPaths(struct testQemuInfo *info,
95
                 const char *suffix,
96
                 int when)
97
{
98 99 100
    VIR_FREE(info->infile);
    VIR_FREE(info->outfile);

101
    if (virAsprintf(&info->infile, "%s/qemuxml2argvdata/%s.xml",
102
                    abs_srcdir, info->name) < 0)
103 104
        goto error;

105
    if (virAsprintf(&info->outfile,
106
                    "%s/qemuxml2xmloutdata/%s-%s%s.xml",
107
                    abs_srcdir, info->name,
108 109
                    when == WHEN_ACTIVE ? "active" : "inactive",
                    suffix) < 0)
110
        goto error;
111

112 113
    if (!virFileExists(info->outfile)) {
        VIR_FREE(info->outfile);
114

115
        if (virAsprintf(&info->outfile,
116 117
                        "%s/qemuxml2xmloutdata/%s%s.xml",
                        abs_srcdir, info->name, suffix) < 0)
118
            goto error;
119
    }
120

121
    return 0;
122

123
 error:
124
    testQemuInfoClear(info);
125
    return -1;
126 127
}

128 129 130 131

static const char *statusPath = abs_srcdir "/qemustatusxml2xmldata/";

static int
132
testInfoSetStatusPaths(struct testQemuInfo *info)
133
{
134 135
    if (virAsprintf(&info->infile, "%s%s-in.xml", statusPath, info->name) < 0 ||
        virAsprintf(&info->outfile, "%s%s-out.xml", statusPath, info->name) < 0)
136 137 138 139 140
        goto error;

    return 0;

 error:
141
    testQemuInfoClear(info);
142 143 144 145
    return -1;
}


A
Andrea Bolognani 已提交
146
# define FAKEROOTDIRTEMPLATE abs_builddir "/fakerootdir-XXXXXX"
147

148
static int
E
Eric Blake 已提交
149
mymain(void)
150 151
{
    int ret = 0;
A
Andrea Bolognani 已提交
152
    char *fakerootdir;
153
    virQEMUDriverConfigPtr cfg = NULL;
154 155 156 157 158
    virHashTablePtr capslatest = NULL;

    capslatest = testQemuGetLatestCaps();
    if (!capslatest)
        return EXIT_FAILURE;
159

A
Andrea Bolognani 已提交
160 161 162 163 164 165 166 167 168 169 170 171
    if (VIR_STRDUP_QUIET(fakerootdir, FAKEROOTDIRTEMPLATE) < 0) {
        fprintf(stderr, "Out of memory\n");
        abort();
    }

    if (!mkdtemp(fakerootdir)) {
        fprintf(stderr, "Cannot create fakerootdir");
        abort();
    }

    setenv("LIBVIRT_FAKE_ROOT_DIR", fakerootdir, 1);

172 173 174 175 176 177 178 179 180
    /* Required for tpm-emulator tests
     */
    virFileWrapperAddPrefix(SYSCONFDIR "/qemu/firmware",
                            abs_srcdir "/qemufirmwaredata/etc/qemu/firmware");
    virFileWrapperAddPrefix(PREFIX "/share/qemu/firmware",
                            abs_srcdir "/qemufirmwaredata/usr/share/qemu/firmware");
    virFileWrapperAddPrefix("/home/user/.config/qemu/firmware",
                            abs_srcdir "/qemufirmwaredata/home/user/.config/qemu/firmware");

181
    if (qemuTestDriverInit(&driver) < 0)
182
        return EXIT_FAILURE;
183

184 185
    cfg = virQEMUDriverGetConfig(&driver);

186
# define DO_TEST_INTERNAL(_name, suffix, when, ...) \
187
    do { \
188 189 190
        static struct testQemuInfo info = { \
            .name = _name, \
        }; \
191
        if (testQemuInfoSetArgs(&info, capslatest, \
192
                                __VA_ARGS__, \
193 194
                                ARG_END) < 0 || \
            qemuTestCapsCacheInsert(driver.qemuCapsCache, info.qemuCaps) < 0) { \
195
            VIR_TEST_DEBUG("Failed to generate test data for '%s'", _name); \
196 197 198
            return -1; \
        } \
 \
199
        if (when & WHEN_INACTIVE) { \
200
            if (testInfoSetPaths(&info, suffix, WHEN_INACTIVE) < 0) { \
201
                VIR_TEST_DEBUG("Failed to generate inactive paths for '%s'", _name); \
202 203
                return -1; \
            } \
204
            if (virTestRun("QEMU XML-2-XML-inactive " _name, \
205 206 207 208
                            testXML2XMLInactive, &info) < 0) \
                ret = -1; \
        } \
 \
209
        if (when & WHEN_ACTIVE) { \
210
            if (testInfoSetPaths(&info, suffix, WHEN_ACTIVE) < 0) { \
211
                VIR_TEST_DEBUG("Failed to generate active paths for '%s'", _name); \
212 213
                return -1; \
            } \
214
            if (virTestRun("QEMU XML-2-XML-active " _name, \
215 216 217
                            testXML2XMLActive, &info) < 0) \
                ret = -1; \
        } \
218
        testQemuInfoClear(&info); \
219 220
    } while (0)

221 222 223 224 225 226 227 228 229
# define DO_TEST_CAPS_INTERNAL(name, arch, ver, ...) \
    DO_TEST_INTERNAL(name, "." arch "-" ver, WHEN_BOTH, \
                     ARG_CAPS_ARCH, arch, \
                     ARG_CAPS_VER, ver, \
                     __VA_ARGS__)

# define DO_TEST_CAPS_ARCH_LATEST_FULL(name, arch, ...) \
    DO_TEST_CAPS_INTERNAL(name, arch, "latest", __VA_ARGS__)

230 231 232
# define DO_TEST_CAPS_ARCH_VER_FULL(name, arch, ver, ...) \
    DO_TEST_CAPS_INTERNAL(name, arch, ver, __VA_ARGS__)

233 234 235
# define DO_TEST_CAPS_ARCH_LATEST(name, arch) \
    DO_TEST_CAPS_ARCH_LATEST_FULL(name, arch, ARG_END)

236
# define DO_TEST_CAPS_ARCH_VER(name, arch, ver) \
237
    DO_TEST_CAPS_ARCH_VER_FULL(name, arch, ver, ARG_END)
238

239 240
# define DO_TEST_CAPS_LATEST(name) \
    DO_TEST_CAPS_ARCH_LATEST(name, "x86_64")
241

242 243 244 245 246 247 248 249 250 251 252
# define DO_TEST_CAPS_VER(name, ver) \
    DO_TEST_CAPS_ARCH_VER(name, "x86_64", ver)

# define DO_TEST_FULL(name, when, ...) \
    DO_TEST_INTERNAL(name, "", when, __VA_ARGS__)

# define DO_TEST(name, ...) \
    DO_TEST_FULL(name, WHEN_BOTH, \
                 ARG_QEMU_CAPS, __VA_ARGS__, QEMU_CAPS_LAST)

# define NONE QEMU_CAPS_LAST
253 254 255 256 257

    /* Unset or set all envvars here that are copied in qemudBuildCommandLine
     * using ADD_ENV_COPY, otherwise these tests may fail due to unexpected
     * values for these envvars */
    setenv("PATH", "/bin", 1);
258

259
    DO_TEST("minimal", NONE);
260 261
    DO_TEST_CAPS_LATEST("genid");
    DO_TEST_CAPS_LATEST("genid-auto");
262 263
    DO_TEST("machine-core-on", NONE);
    DO_TEST("machine-core-off", NONE);
264
    DO_TEST("machine-loadparm-multiple-disks-nets-s390", NONE);
265 266 267 268 269
    DO_TEST("default-kvm-host-arch", NONE);
    DO_TEST("default-qemu-host-arch", NONE);
    DO_TEST("boot-cdrom", NONE);
    DO_TEST("boot-network", NONE);
    DO_TEST("boot-floppy", NONE);
270 271 272
    DO_TEST("boot-floppy-q35",
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI);
273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309
    DO_TEST("boot-multi", NONE);
    DO_TEST("boot-menu-enable-with-timeout", NONE);
    DO_TEST("boot-menu-disable", NONE);
    DO_TEST("boot-menu-disable-with-timeout", NONE);
    DO_TEST("boot-order", NONE);

    DO_TEST("reboot-timeout-enabled", NONE);
    DO_TEST("reboot-timeout-disabled", NONE);

    DO_TEST("clock-utc", NONE);
    DO_TEST("clock-localtime", NONE);
    DO_TEST("cpu-empty", NONE);
    DO_TEST("cpu-kvmclock", NONE);
    DO_TEST("cpu-host-kvmclock", NONE);
    DO_TEST("cpu-host-passthrough-features", NONE);
    DO_TEST("cpu-host-model-features", NONE);
    DO_TEST("clock-catchup", NONE);
    DO_TEST("kvmclock", NONE);
    DO_TEST("clock-timer-hyperv-rtc", NONE);

    DO_TEST("cpu-eoi-disabled", NONE);
    DO_TEST("cpu-eoi-enabled", NONE);
    DO_TEST("eoi-disabled", NONE);
    DO_TEST("eoi-enabled", NONE);
    DO_TEST("pv-spinlock-disabled", NONE);
    DO_TEST("pv-spinlock-enabled", NONE);

    DO_TEST("hyperv", NONE);
    DO_TEST("hyperv-off", NONE);
    DO_TEST("hyperv-panic", NONE);

    DO_TEST("kvm-features", NONE);
    DO_TEST("kvm-features-off", NONE);

    DO_TEST("pmu-feature", NONE);
    DO_TEST("pmu-feature-off", NONE);

310
    DO_TEST("pages-discard", NONE);
311
    DO_TEST("pages-discard-hugepages", NONE);
312
    DO_TEST("pages-dimm-discard", NONE);
313
    DO_TEST("hugepages-default", NONE);
314
    DO_TEST("hugepages-default-2M", NONE);
315
    DO_TEST("hugepages-default-system-size", NONE);
316
    DO_TEST("hugepages-nodeset", NONE);
317
    DO_TEST("hugepages-numa-default-2M", NONE);
318
    DO_TEST("hugepages-numa-default-dimm", NONE);
319
    DO_TEST("hugepages-numa-nodeset", NONE);
320
    DO_TEST("hugepages-numa-nodeset-part", NONE);
321
    DO_TEST("hugepages-shared", NONE);
322
    DO_TEST("hugepages-memaccess", NONE);
323
    DO_TEST("hugepages-memaccess2", NONE);
324
    DO_TEST("hugepages-nvdimm", NONE);
325 326 327 328 329 330
    DO_TEST("nosharepages", NONE);
    DO_TEST("restore-v2", NONE);
    DO_TEST("migrate", NONE);
    DO_TEST("qemu-ns-no-env", NONE);
    DO_TEST("disk-aio", NONE);
    DO_TEST("disk-cdrom", NONE);
331
    DO_TEST("disk-cdrom-bus-other", NONE);
332 333 334 335
    DO_TEST("disk-floppy", NONE);
    DO_TEST("disk-usb-device", NONE);
    DO_TEST("disk-virtio", NONE);
    DO_TEST("floppy-drive-fat", NONE);
336 337 338 339 340
    DO_TEST("disk-virtio-queues", QEMU_CAPS_VIRTIO_BLK_NUM_QUEUES);
    DO_TEST("disk-boot-disk", NONE);
    DO_TEST("disk-boot-cdrom", NONE);
    DO_TEST("disk-error-policy", NONE);
    DO_TEST("disk-fmt-qcow", NONE);
341
    DO_TEST("disk-cache", QEMU_CAPS_SCSI_LSI);
342
    DO_TEST("disk-network-nbd", NONE);
343
    DO_TEST("disk-network-iscsi", QEMU_CAPS_VIRTIO_SCSI);
344 345 346 347 348 349
    DO_TEST("disk-network-gluster", NONE);
    DO_TEST("disk-network-rbd", NONE);
    DO_TEST("disk-network-source-auth", NONE);
    DO_TEST("disk-network-sheepdog", NONE);
    DO_TEST("disk-network-vxhs", NONE);
    DO_TEST("disk-network-tlsx509", NONE);
350 351
    DO_TEST("disk-scsi", QEMU_CAPS_SCSI_LSI, QEMU_CAPS_SCSI_MEGASAS,
            QEMU_CAPS_SCSI_MPTSAS1068, QEMU_CAPS_SCSI_DISK_WWN);
352
    DO_TEST("disk-virtio-scsi-reservations",
353
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_PR_MANAGER_HELPER);
354
    DO_TEST("controller-virtio-scsi", QEMU_CAPS_VIRTIO_SCSI);
355 356 357
    DO_TEST("disk-virtio-s390-zpci",
            QEMU_CAPS_DEVICE_ZPCI,
            QEMU_CAPS_CCW);
358
    DO_TEST("disk-mirror-old", NONE);
359
    DO_TEST("disk-mirror", NONE);
360
    DO_TEST("disk-active-commit", NONE);
361 362 363 364 365 366 367
    DO_TEST("graphics-listen-network", NONE);
    DO_TEST("graphics-vnc", NONE);
    DO_TEST("graphics-vnc-websocket", NONE);
    DO_TEST("graphics-vnc-sasl", NONE);
    DO_TEST("graphics-vnc-tls", NONE);
    DO_TEST("graphics-vnc-no-listen-attr", NONE);
    DO_TEST("graphics-vnc-remove-generated-socket", NONE);
368
    cfg->vncAutoUnixSocket = true;
369
    DO_TEST("graphics-vnc-auto-socket-cfg", NONE);
370
    cfg->vncAutoUnixSocket = false;
371 372
    DO_TEST("graphics-vnc-socket", NONE);
    DO_TEST("graphics-vnc-auto-socket", NONE);
373 374
    DO_TEST("graphics-vnc-egl-headless",
            QEMU_CAPS_EGL_HEADLESS);
375 376 377 378 379 380 381 382

    DO_TEST("graphics-sdl", NONE);
    DO_TEST("graphics-sdl-fullscreen", NONE);
    DO_TEST("graphics-spice", NONE);
    DO_TEST("graphics-spice-compression", NONE);
    DO_TEST("graphics-spice-qxl-vga", NONE);
    DO_TEST("graphics-spice-socket", NONE);
    DO_TEST("graphics-spice-auto-socket", NONE);
383
    cfg->spiceAutoUnixSocket = true;
384
    DO_TEST("graphics-spice-auto-socket-cfg", NONE);
385
    cfg->spiceAutoUnixSocket = false;
386 387
    DO_TEST("graphics-spice-egl-headless",
            QEMU_CAPS_EGL_HEADLESS);
388

389 390 391
    DO_TEST("graphics-egl-headless-rendernode",
            QEMU_CAPS_EGL_HEADLESS,
            QEMU_CAPS_EGL_HEADLESS_RENDERNODE);
392

393 394 395 396 397 398 399 400 401 402
    DO_TEST("input-usbmouse", NONE);
    DO_TEST("input-usbtablet", NONE);
    DO_TEST("misc-acpi", NONE);
    DO_TEST("misc-disable-s3", NONE);
    DO_TEST("misc-disable-suspends", NONE);
    DO_TEST("misc-enable-s4", NONE);
    DO_TEST("misc-no-reboot", NONE);
    DO_TEST("misc-uuid", NONE);
    DO_TEST("net-vhostuser", NONE);
    DO_TEST("net-user", NONE);
J
Ján Tomko 已提交
403
    DO_TEST("net-user-addr", NONE);
404 405 406 407 408 409 410
    DO_TEST("net-virtio", NONE);
    DO_TEST("net-virtio-device", NONE);
    DO_TEST("net-virtio-disable-offloads", NONE);
    DO_TEST("net-eth", NONE);
    DO_TEST("net-eth-ifname", NONE);
    DO_TEST("net-eth-hostip", NONE);
    DO_TEST("net-virtio-network-portgroup", NONE);
411
    DO_TEST("net-virtio-rxtxqueuesize", NONE);
412
    DO_TEST("net-hostdev", NONE);
413
    DO_TEST("net-hostdev-bootorder", NONE);
414 415 416 417 418 419 420 421
    DO_TEST("net-hostdev-vfio", NONE);
    DO_TEST("net-midonet", NONE);
    DO_TEST("net-openvswitch", NONE);
    DO_TEST("sound", NONE);
    DO_TEST("sound-device", NONE);
    DO_TEST("watchdog", NONE);
    DO_TEST("net-bandwidth", NONE);
    DO_TEST("net-bandwidth2", NONE);
422
    DO_TEST("net-mtu", NONE);
423
    DO_TEST("net-coalesce", NONE);
424
    DO_TEST("net-many-models", NONE);
425

426
    DO_TEST("serial-tcp-tlsx509-chardev", NONE);
427
    DO_TEST("serial-tcp-tlsx509-chardev-notls", NONE);
428 429 430 431 432 433 434 435 436
    DO_TEST("serial-spiceport", NONE);
    DO_TEST("serial-spiceport-nospice", NONE);
    DO_TEST("console-compat", NONE);
    DO_TEST("console-compat2", NONE);
    DO_TEST("console-virtio-many", NONE);
    DO_TEST("channel-guestfwd", NONE);
    DO_TEST("channel-virtio", NONE);
    DO_TEST("channel-virtio-state", NONE);

437
    DO_TEST("channel-unix-source-path", NONE);
438

439 440 441
    DO_TEST("hostdev-usb-address", NONE);
    DO_TEST("hostdev-pci-address", NONE);
    DO_TEST("hostdev-vfio", NONE);
442 443 444
    DO_TEST("hostdev-vfio-zpci",
            QEMU_CAPS_DEVICE_ZPCI,
            QEMU_CAPS_CCW);
445 446 447 448 449 450 451 452 453 454 455
    DO_TEST("hostdev-vfio-zpci-multidomain-many",
            QEMU_CAPS_DEVICE_VFIO_PCI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_ZPCI);
    DO_TEST("hostdev-vfio-zpci-autogenerate",
            QEMU_CAPS_DEVICE_VFIO_PCI,
            QEMU_CAPS_DEVICE_ZPCI);
    DO_TEST("hostdev-vfio-zpci-boundaries",
            QEMU_CAPS_DEVICE_VFIO_PCI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_ZPCI);
456
    DO_TEST("hostdev-mdev-precreated", NONE);
457
    DO_TEST("hostdev-mdev-display", QEMU_CAPS_VFIO_PCI_DISPLAY);
458
    DO_TEST("pci-rom", NONE);
459
    DO_TEST("pci-rom-disabled", NONE);
460
    DO_TEST("pci-rom-disabled-invalid", NONE);
461 462
    DO_TEST("pci-serial-dev-chardev", NONE);

463 464
    DO_TEST("encrypted-disk", QEMU_CAPS_QCOW2_LUKS);
    DO_TEST("encrypted-disk-usage", QEMU_CAPS_QCOW2_LUKS);
465
    DO_TEST("luks-disks", NONE);
466
    DO_TEST("luks-disks-source", NONE);
467 468 469 470 471 472 473 474 475
    DO_TEST("memtune", NONE);
    DO_TEST("memtune-unlimited", NONE);
    DO_TEST("blkiotune", NONE);
    DO_TEST("blkiotune-device", NONE);
    DO_TEST("cputune", NONE);
    DO_TEST("cputune-zero-shares", NONE);
    DO_TEST("cputune-iothreadsched", NONE);
    DO_TEST("cputune-iothreadsched-zeropriority", NONE);
    DO_TEST("cputune-numatune", NONE);
476
    DO_TEST("vcpu-placement-static",
477 478
            QEMU_CAPS_KVM,
            QEMU_CAPS_OBJECT_IOTHREAD);
479

480 481 482 483 484 485
    DO_TEST("smp", NONE);
    DO_TEST("iothreads", NONE);
    DO_TEST("iothreads-ids", NONE);
    DO_TEST("iothreads-ids-partial", NONE);
    DO_TEST("cputune-iothreads", NONE);
    DO_TEST("iothreads-disk", NONE);
486
    DO_TEST("iothreads-disk-virtio-ccw",
487
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
488
    DO_TEST("iothreads-virtio-scsi-pci",
489
            QEMU_CAPS_VIRTIO_SCSI);
490
    DO_TEST("iothreads-virtio-scsi-ccw",
491
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_CCW,
492
            QEMU_CAPS_VIRTIO_S390);
493 494 495 496 497 498 499
    DO_TEST("lease", NONE);
    DO_TEST("event_idx", NONE);
    DO_TEST("vhost_queues", NONE);
    DO_TEST("interface-driver", NONE);
    DO_TEST("interface-server", NONE);
    DO_TEST("virtio-lun", NONE);

500 501 502 503 504
    DO_TEST("usb-none", NONE);
    DO_TEST("usb-controller", NONE);
    DO_TEST("usb-piix3-controller",
            QEMU_CAPS_PIIX3_USB_UHCI);
    DO_TEST("usb-controller-default-q35",
505
            QEMU_CAPS_DEVICE_IOH3420,
506 507
            QEMU_CAPS_PCI_OHCI,
            QEMU_CAPS_PIIX3_USB_UHCI,
508 509
            QEMU_CAPS_NEC_USB_XHCI);
    DO_TEST("usb-controller-explicit-q35",
510
            QEMU_CAPS_DEVICE_IOH3420,
511 512
            QEMU_CAPS_PCI_OHCI,
            QEMU_CAPS_PIIX3_USB_UHCI,
513 514
            QEMU_CAPS_NEC_USB_XHCI);
    DO_TEST("ppc64-usb-controller",
515
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
516 517
            QEMU_CAPS_PCI_OHCI);
    DO_TEST("ppc64-usb-controller-legacy",
518
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
519
            QEMU_CAPS_PIIX3_USB_UHCI);
520 521 522 523 524
    DO_TEST("usb-port-missing", NONE);
    DO_TEST("usb-redir", NONE);
    DO_TEST("usb-redir-filter", NONE);
    DO_TEST("usb-redir-filter-version", NONE);
    DO_TEST("blkdeviotune", NONE);
525
    DO_TEST("blkdeviotune-max", NONE);
526
    DO_TEST("blkdeviotune-group-num", NONE);
527
    DO_TEST("blkdeviotune-max-length", NONE);
528
    DO_TEST("controller-usb-order", NONE);
529

530 531 532 533 534 535 536 537
    DO_TEST_FULL("seclabel-dynamic-baselabel", WHEN_INACTIVE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("seclabel-dynamic-override", WHEN_INACTIVE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("seclabel-dynamic-labelskip", WHEN_INACTIVE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("seclabel-dynamic-relabel", WHEN_INACTIVE,
                 ARG_QEMU_CAPS, NONE);
538
    DO_TEST("seclabel-static", NONE);
539
    DO_TEST("seclabel-static-labelskip", NONE);
540 541 542 543
    DO_TEST("seclabel-none", NONE);
    DO_TEST("seclabel-dac-none", NONE);
    DO_TEST("seclabel-dynamic-none", NONE);
    DO_TEST("seclabel-device-multiple", NONE);
544 545
    DO_TEST_FULL("seclabel-dynamic-none-relabel", WHEN_INACTIVE,
                 ARG_QEMU_CAPS, NONE);
546
    DO_TEST("numad-static-vcpu-no-numatune", NONE);
547

548
    DO_TEST("disk-scsi-lun-passthrough-sgio",
549
            QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_DISK_WWN);
550
    DO_TEST("disk-scsi-disk-vpd",
551
            QEMU_CAPS_SCSI_LSI, QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_SCSI_DISK_WWN);
552 553
    DO_TEST("disk-source-pool", NONE);
    DO_TEST("disk-source-pool-mode", NONE);
554

555 556
    DO_TEST("disk-discard", NONE);
    DO_TEST("disk-detect-zeroes", NONE);
O
Osier Yang 已提交
557

558 559
    DO_TEST("disk-serial", NONE);

560 561 562 563
    DO_TEST("virtio-rng-random",
            QEMU_CAPS_DEVICE_VIRTIO_RNG);
    DO_TEST("virtio-rng-egd",
            QEMU_CAPS_DEVICE_VIRTIO_RNG);
564

565 566 567 568 569 570
    DO_TEST("pseries-nvram",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
    DO_TEST("pseries-panic-missing",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
    DO_TEST("pseries-panic-no-address",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
571

572 573 574 575
    DO_TEST("pseries-phb-simple",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
    DO_TEST("pseries-phb-default-missing",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
576 577 578 579
    DO_TEST("pseries-phb-numa-node",
            QEMU_CAPS_NUMA,
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE);
580

581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602
    DO_TEST("pseries-many-devices",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_VIRTIO_SCSI);
    DO_TEST("pseries-many-buses-1",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_VIRTIO_SCSI);
    DO_TEST("pseries-many-buses-2",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_VIRTIO_SCSI);
    DO_TEST("pseries-hostdevs-1",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_VFIO_PCI);
    DO_TEST("pseries-hostdevs-2",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_VFIO_PCI);
    DO_TEST("pseries-hostdevs-3",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_VFIO_PCI);

603
    DO_TEST("pseries-features",
604
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
605
            QEMU_CAPS_MACHINE_PSERIES_CAP_HPT_MAX_PAGE_SIZE,
606
            QEMU_CAPS_MACHINE_PSERIES_CAP_HTM,
607
            QEMU_CAPS_MACHINE_PSERIES_CAP_NESTED_HV,
608 609
            QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT);

610
    DO_TEST("pseries-serial-native",
611
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
612 613
            QEMU_CAPS_DEVICE_SPAPR_VTY);
    DO_TEST("pseries-serial+console-native",
614
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
615 616
            QEMU_CAPS_DEVICE_SPAPR_VTY);
    DO_TEST("pseries-serial-compat",
617
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
618
            QEMU_CAPS_DEVICE_SPAPR_VTY);
619
    DO_TEST("pseries-serial-pci",
620
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
621 622
            QEMU_CAPS_DEVICE_PCI_SERIAL);
    DO_TEST("pseries-serial-usb",
623
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
624 625
            QEMU_CAPS_DEVICE_QEMU_XHCI,
            QEMU_CAPS_DEVICE_USB_SERIAL);
626
    DO_TEST("pseries-console-native",
627
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
628 629
            QEMU_CAPS_DEVICE_SPAPR_VTY);
    DO_TEST("pseries-console-virtio",
630 631 632 633 634
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);

    DO_TEST("mach-virt-serial-native", NONE);
    DO_TEST("mach-virt-serial+console-native", NONE);
    DO_TEST("mach-virt-serial-compat", NONE);
635 636 637 638 639 640 641 642 643 644 645
    DO_TEST("mach-virt-serial-pci",
            QEMU_CAPS_OBJECT_GPEX,
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_PCI_SERIAL);
    DO_TEST("mach-virt-serial-usb",
            QEMU_CAPS_OBJECT_GPEX,
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
            QEMU_CAPS_DEVICE_QEMU_XHCI,
            QEMU_CAPS_DEVICE_USB_SERIAL);
646 647 648 649
    DO_TEST("mach-virt-console-native",
            QEMU_CAPS_DEVICE_PL011);
    DO_TEST("mach-virt-console-virtio",
            QEMU_CAPS_DEVICE_VIRTIO_MMIO);
650

651 652 653 654
    DO_TEST("balloon-device-auto", NONE);
    DO_TEST("balloon-device-period", NONE);
    DO_TEST("channel-virtio-auto", NONE);
    DO_TEST("console-compat-auto", NONE);
655
    DO_TEST("disk-scsi-device-auto",
656
            QEMU_CAPS_SCSI_LSI);
657 658 659 660 661 662 663 664 665 666
    DO_TEST("console-virtio", NONE);
    DO_TEST("serial-target-port-auto", NONE);
    DO_TEST("graphics-listen-network2", NONE);
    DO_TEST("graphics-spice-timeout", NONE);
    DO_TEST("numad-auto-vcpu-no-numatune", NONE);
    DO_TEST("numad-auto-memory-vcpu-no-cpuset-and-placement", NONE);
    DO_TEST("numad-auto-memory-vcpu-cpuset", NONE);
    DO_TEST("usb-ich9-ehci-addr", NONE);
    DO_TEST("disk-copy_on_read", NONE);
    DO_TEST("tpm-passthrough", NONE);
667
    DO_TEST("tpm-passthrough-crb", NONE);
668
    DO_TEST("tpm-emulator", NONE);
669
    DO_TEST("tpm-emulator-tpm2", NONE);
670
    DO_TEST("tpm-emulator-tpm2-enc", NONE);
671 672 673

    DO_TEST("metadata", NONE);
    DO_TEST("metadata-duplicate", NONE);
674

675
    DO_TEST("pci-bridge",
676 677 678 679 680
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_CIRRUS_VGA);
    DO_TEST("pci-many",
            QEMU_CAPS_DEVICE_CIRRUS_VGA);
681 682 683
    DO_TEST("pci-bridge-many-disks",
            QEMU_CAPS_DEVICE_PCI_BRIDGE);
    DO_TEST("pci-autoadd-addr",
684 685
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_CIRRUS_VGA);
686
    DO_TEST("pci-autoadd-idx",
687 688
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_CIRRUS_VGA);
689
    DO_TEST("pci-autofill-addr", NONE);
690

691
    DO_TEST("q35",
692 693
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
694
            QEMU_CAPS_DEVICE_IOH3420,
695 696 697
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
698
            QEMU_CAPS_DEVICE_QXL);
699 700 701
    DO_TEST("q35-usb2",
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
702
            QEMU_CAPS_DEVICE_IOH3420,
703
            QEMU_CAPS_ICH9_AHCI,
704
            QEMU_CAPS_ICH9_USB_EHCI1,
705
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
706
            QEMU_CAPS_DEVICE_QXL);
707
    DO_TEST("q35-usb2-multi",
708 709
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
710
            QEMU_CAPS_DEVICE_IOH3420,
711 712 713
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
714
            QEMU_CAPS_DEVICE_QXL);
715
    DO_TEST("q35-usb2-reorder",
716 717
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
718
            QEMU_CAPS_DEVICE_IOH3420,
719 720 721
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
722
            QEMU_CAPS_DEVICE_QXL);
723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739
    DO_TEST("q35-pcie",
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIRTIO_NET,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
740
            QEMU_CAPS_NEC_USB_XHCI,
741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
    /* same XML as q35-pcie, but don't set
       QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY */
    DO_TEST("q35-virtio-pci",
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIRTIO_NET,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
760
            QEMU_CAPS_NEC_USB_XHCI,
761
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
762 763 764 765 766 767 768 769 770
    /* same as q35-pcie, but all PCI controllers are added automatically */
    DO_TEST("q35-pcie-autoadd",
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIRTIO_NET,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_VIRTIO_KEYBOARD,
771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_NEC_USB_XHCI,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
    DO_TEST("q35-default-devices-only",
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIRTIO_NET,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_VIRTIO_KEYBOARD,
790 791 792 793 794 795 796 797 798 799
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_NEC_USB_XHCI,
800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
    DO_TEST("q35-multifunction",
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIRTIO_NET,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_NEC_USB_XHCI,
819
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
820
    DO_TEST("q35-virt-manager-basic",
821 822 823
            QEMU_CAPS_KVM,
            QEMU_CAPS_ICH9_DISABLE_S3,
            QEMU_CAPS_ICH9_DISABLE_S4,
824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIRTIO_NET,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
            QEMU_CAPS_NEC_USB_XHCI,
            QEMU_CAPS_DEVICE_ICH9_INTEL_HDA,
842 843 844 845 846
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_SPICE,
            QEMU_CAPS_DEVICE_QXL,
            QEMU_CAPS_HDA_DUPLEX,
            QEMU_CAPS_USB_REDIR);
847
    DO_TEST("pcie-root",
848 849
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
850
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
851
            QEMU_CAPS_DEVICE_QXL);
852 853

    /* Test automatic and manual setting of pcie-root-port attributes */
854
    DO_TEST("pcie-root-port",
855 856
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
857
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
858
            QEMU_CAPS_DEVICE_QXL);
859 860 861 862 863 864

    /* Make sure the default model for PCIe Root Ports is picked correctly
     * based on QEMU binary capabilities. We use x86/q35 for the test, but
     * any PCIe machine type (such as aarch64/virt) will behave the same */
    DO_TEST("pcie-root-port-model-generic",
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
865
            QEMU_CAPS_DEVICE_IOH3420);
866
    DO_TEST("pcie-root-port-model-ioh3420",
867
            QEMU_CAPS_DEVICE_IOH3420);
868

869
    DO_TEST("pcie-switch-upstream-port",
870 871 872
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_ICH9_AHCI,
873
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
874
            QEMU_CAPS_DEVICE_QXL);
875
    DO_TEST("pcie-switch-downstream-port",
876 877 878 879
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
            QEMU_CAPS_ICH9_AHCI,
880
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
881
            QEMU_CAPS_DEVICE_QXL);
882
    DO_TEST("pci-expander-bus",
883
            QEMU_CAPS_DEVICE_PXB);
884
    DO_TEST("pcie-expander-bus",
885 886 887 888
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
            QEMU_CAPS_DEVICE_PXB_PCIE);
889
    DO_TEST("autoindex",
890 891 892 893 894 895 896
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_X3130_UPSTREAM,
            QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_ICH9_USB_EHCI1,
897
            QEMU_CAPS_NEC_USB_XHCI);
898 899 900 901 902 903 904
    /* Make sure the user can always override libvirt's default device
     * placement policy by providing an explicit PCI address */
    DO_TEST("q35-pci-force-address",
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_HDA_DUPLEX);
905

906 907
    DO_TEST("hostdev-scsi-vhost-scsi-ccw",
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI,
908
            QEMU_CAPS_CCW);
909
    DO_TEST("hostdev-scsi-vhost-scsi-pci",
910 911
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_DEVICE_VHOST_SCSI);
912 913 914 915 916
    DO_TEST("hostdev-scsi-vhost-scsi-pcie",
            QEMU_CAPS_KVM,
            QEMU_CAPS_VIRTIO_SCSI, QEMU_CAPS_DEVICE_VHOST_SCSI,
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY);
917
    DO_TEST("hostdev-scsi-lsi",
918 919
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
920
    DO_TEST("hostdev-scsi-virtio-scsi",
921 922
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
923
    DO_TEST("hostdev-scsi-readonly",
924 925
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
926 927

    DO_TEST("hostdev-scsi-shareable",
928 929
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
930
    DO_TEST("hostdev-scsi-sgio",
931 932
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
933
    DO_TEST("hostdev-scsi-rawio",
934 935
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
936 937

    DO_TEST("hostdev-scsi-autogen-address",
938 939
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
940
    DO_TEST("hostdev-scsi-large-unit",
941 942
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
943 944

    DO_TEST("hostdev-scsi-lsi-iscsi",
945 946
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
947
    DO_TEST("hostdev-scsi-lsi-iscsi-auth",
948 949
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
950
    DO_TEST("hostdev-scsi-virtio-iscsi",
951 952
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
953
    DO_TEST("hostdev-scsi-virtio-iscsi-auth",
954 955
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_SCSI_LSI);
956

957 958 959 960 961
    DO_TEST("hostdev-subsys-mdev-vfio-ccw",
            QEMU_CAPS_CCW,
            QEMU_CAPS_CCW_CSSID_UNRESTRICTED,
            QEMU_CAPS_DEVICE_VFIO_CCW);

962
    DO_TEST("s390-defaultconsole",
963
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
964
    DO_TEST("s390-panic",
965
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
966
    DO_TEST("s390-panic-missing",
967
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
968
    DO_TEST("s390-panic-no-address",
969
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
970
    DO_TEST("s390-serial",
971
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
972
    DO_TEST("s390-serial-2",
973
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
974
    DO_TEST("s390-serial-console",
975
            QEMU_CAPS_CCW, QEMU_CAPS_VIRTIO_S390);
976

977 978 979
    DO_TEST("pcihole64", NONE);
    DO_TEST("pcihole64-gib", NONE);
    DO_TEST("pcihole64-none", NONE);
980
    DO_TEST("pcihole64-q35",
981
            QEMU_CAPS_DEVICE_IOH3420,
982 983
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
984
            QEMU_CAPS_DEVICE_QXL,
985
            QEMU_CAPS_Q35_PCI_HOLE64_SIZE);
986

987 988
    DO_TEST("panic", NONE);
    DO_TEST("panic-isa", NONE);
989 990
    DO_TEST("panic-pseries",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
991 992
    DO_TEST("panic-double", NONE);
    DO_TEST("panic-no-address", NONE);
H
Hu Tao 已提交
993

994
    DO_TEST("disk-backing-chains", NONE);
995 996
    DO_TEST("disk-backing-chains-index", NONE);
    DO_TEST("disk-backing-chains-noindex", NONE);
997

998 999
    DO_TEST("chardev-label",
            QEMU_CAPS_DEVICE_VIRTIO_RNG);
J
Ján Tomko 已提交
1000

1001 1002 1003 1004 1005 1006
    DO_TEST("cpu-numa1", NONE);
    DO_TEST("cpu-numa2", NONE);
    DO_TEST("cpu-numa-no-memory-element", NONE);
    DO_TEST("cpu-numa-disordered", NONE);
    DO_TEST("cpu-numa-disjoint", NONE);
    DO_TEST("cpu-numa-memshared", NONE);
1007

1008 1009 1010
    DO_TEST("numatune-auto-prefer", NONE);
    DO_TEST("numatune-memnode", NONE);
    DO_TEST("numatune-memnode-no-memory", NONE);
1011

1012 1013
    DO_TEST("bios-nvram", NONE);
    DO_TEST("bios-nvram-os-interleave", NONE);
1014

1015 1016 1017
    DO_TEST("tap-vhost", NONE);
    DO_TEST("tap-vhost-incorrect", NONE);
    DO_TEST("shmem", NONE);
1018
    DO_TEST("shmem-plain-doorbell", NONE);
1019 1020
    DO_TEST("smbios", NONE);
    DO_TEST("smbios-multiple-type2", NONE);
1021

1022 1023 1024
    DO_TEST_CAPS_LATEST("os-firmware-bios");
    DO_TEST_CAPS_LATEST("os-firmware-efi");
    DO_TEST_CAPS_LATEST("os-firmware-efi-secboot");
1025

1026
    DO_TEST("aarch64-aavmf-virtio-mmio",
1027 1028
            QEMU_CAPS_DEVICE_VIRTIO_MMIO,
            QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM);
1029
    DO_TEST_CAPS_ARCH_LATEST("aarch64-os-firmware-efi", "aarch64");
1030
    DO_TEST("aarch64-virtio-pci-default",
1031
            QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY,
1032 1033 1034
            QEMU_CAPS_DEVICE_VIRTIO_MMIO,
            QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_OBJECT_GPEX, QEMU_CAPS_DEVICE_PCI_BRIDGE,
1035 1036 1037
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_VIRTIO_SCSI);
1038
    DO_TEST("aarch64-virtio-pci-manual-addresses",
1039 1040 1041
            QEMU_CAPS_DEVICE_VIRTIO_MMIO,
            QEMU_CAPS_DEVICE_VIRTIO_RNG, QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_OBJECT_GPEX, QEMU_CAPS_DEVICE_PCI_BRIDGE,
1042 1043 1044
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_VIRTIO_SCSI);
1045
    DO_TEST("aarch64-video-virtio-gpu-pci",
1046
            QEMU_CAPS_OBJECT_GPEX,
1047
            QEMU_CAPS_DEVICE_PCI_BRIDGE, QEMU_CAPS_DEVICE_IOH3420,
1048
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
1049
            QEMU_CAPS_DEVICE_VIRTIO_GPU);
1050 1051 1052 1053 1054 1055 1056
    DO_TEST("aarch64-pci-serial",
            QEMU_CAPS_DEVICE_PCI_SERIAL,
            QEMU_CAPS_CHARDEV_LOGFILE,
            QEMU_CAPS_OBJECT_GPEX,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT);
1057 1058 1059 1060
    DO_TEST("aarch64-traditional-pci",
            QEMU_CAPS_OBJECT_GPEX,
            QEMU_CAPS_DEVICE_PCIE_ROOT_PORT,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
1061
            QEMU_CAPS_DEVICE_PCIE_PCI_BRIDGE,
1062 1063
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_PCI_SERIAL);
1064 1065 1066 1067 1068 1069 1070 1071
    DO_TEST("aarch64-video-default",
            QEMU_CAPS_OBJECT_GPEX,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_VNC);
1072

1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135
    DO_TEST_FULL("aarch64-gic-none", WHEN_BOTH,
                 ARG_GIC, GIC_NONE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-none-v2", WHEN_BOTH,
                 ARG_GIC, GIC_V2,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-none-v3", WHEN_BOTH,
                 ARG_GIC, GIC_V3,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-none-both", WHEN_BOTH,
                 ARG_GIC, GIC_BOTH,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-none-tcg", WHEN_BOTH,
                 ARG_GIC, GIC_BOTH,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-default", WHEN_BOTH,
                 ARG_GIC, GIC_NONE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-default-v2", WHEN_BOTH,
                 ARG_GIC, GIC_V2,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-default-v3", WHEN_BOTH,
                 ARG_GIC, GIC_V3,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-default-both", WHEN_BOTH,
                 ARG_GIC, GIC_BOTH,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH,
                 ARG_GIC, GIC_NONE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH,
                 ARG_GIC, GIC_V2,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH,
                 ARG_GIC, GIC_V3,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v2", WHEN_BOTH,
                 ARG_GIC, GIC_BOTH,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH,
                 ARG_GIC, GIC_NONE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH,
                 ARG_GIC, GIC_V2,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH,
                 ARG_GIC, GIC_V3,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-v3", WHEN_BOTH,
                 ARG_GIC, GIC_BOTH,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH,
                 ARG_GIC, GIC_NONE,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH,
                 ARG_GIC, GIC_V2,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH,
                 ARG_GIC, GIC_V3,
                 ARG_QEMU_CAPS, NONE);
    DO_TEST_FULL("aarch64-gic-host", WHEN_BOTH,
                 ARG_GIC, GIC_BOTH,
                 ARG_QEMU_CAPS, NONE);
1136

1137 1138 1139
    DO_TEST("memory-hotplug", NONE);
    DO_TEST("memory-hotplug-nonuma", NONE);
    DO_TEST("memory-hotplug-dimm", NONE);
M
Michal Privoznik 已提交
1140
    DO_TEST("memory-hotplug-nvdimm", NONE);
1141
    DO_TEST("memory-hotplug-nvdimm-access", NONE);
1142
    DO_TEST("memory-hotplug-nvdimm-label", NONE);
1143
    DO_TEST("memory-hotplug-nvdimm-align", NONE);
1144
    DO_TEST("memory-hotplug-nvdimm-pmem", NONE);
1145
    DO_TEST("memory-hotplug-nvdimm-readonly", NONE);
1146
    DO_TEST("net-udp", NONE);
1147

1148 1149 1150
    DO_TEST("video-virtio-gpu-device", NONE);
    DO_TEST("video-virtio-gpu-virgl", NONE);
    DO_TEST("video-virtio-gpu-spice-gl", NONE);
1151
    DO_TEST("video-virtio-gpu-sdl-gl", NONE);
1152 1153 1154 1155 1156 1157 1158

    DO_TEST("virtio-input",
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET);
    DO_TEST("virtio-input-passthrough",
            QEMU_CAPS_VIRTIO_INPUT_HOST);
M
Marc-André Lureau 已提交
1159

1160 1161
    DO_TEST("memorybacking-set", NONE);
    DO_TEST("memorybacking-unset", NONE);
1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175

    DO_TEST("virtio-options",
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_VIRTIO_INPUT_HOST,
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_VIRTIO_GPU_VIRGL,
            QEMU_CAPS_DEVICE_VIRTIO_RNG,
            QEMU_CAPS_OBJECT_RNG_RANDOM,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_VIRTIO_PCI_IOMMU_PLATFORM,
            QEMU_CAPS_VIRTIO_PCI_ATS);
1176

1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189
    DO_TEST("fd-memory-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE,
            QEMU_CAPS_KVM);
    DO_TEST("fd-memory-numa-topology2", QEMU_CAPS_OBJECT_MEMORY_FILE,
            QEMU_CAPS_KVM);
    DO_TEST("fd-memory-numa-topology3", QEMU_CAPS_OBJECT_MEMORY_FILE,
            QEMU_CAPS_KVM);

    DO_TEST("fd-memory-no-numa-topology", QEMU_CAPS_OBJECT_MEMORY_FILE,
            QEMU_CAPS_KVM);

    DO_TEST("memfd-memory-numa",
            QEMU_CAPS_OBJECT_MEMORY_MEMFD,
            QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB);
1190 1191 1192
    DO_TEST("memfd-memory-default-hugepage",
            QEMU_CAPS_OBJECT_MEMORY_MEMFD,
            QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB);
1193

1194
    DO_TEST("acpi-table", NONE);
J
Ján Tomko 已提交
1195

1196 1197 1198 1199 1200
    DO_TEST("video-device-pciaddr-default",
            QEMU_CAPS_KVM,
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_DEVICE_QXL);
1201 1202
    DO_TEST("video-qxl-heads", NONE);
    DO_TEST("video-qxl-noheads", NONE);
1203
    DO_TEST("video-virtio-gpu-secondary", NONE);
1204
    DO_TEST("video-virtio-gpu-ccw",
1205
            QEMU_CAPS_CCW,
1206 1207 1208 1209 1210
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_VIRTIO_GPU_MAX_OUTPUTS,
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW);
1211
    DO_TEST("video-virtio-gpu-ccw-auto",
1212
            QEMU_CAPS_CCW,
1213 1214 1215 1216 1217
            QEMU_CAPS_DEVICE_VIRTIO_GPU,
            QEMU_CAPS_DEVICE_VIDEO_PRIMARY,
            QEMU_CAPS_VIRTIO_GPU_MAX_OUTPUTS,
            QEMU_CAPS_VNC,
            QEMU_CAPS_DEVICE_VIRTIO_GPU_CCW);
1218
    DO_TEST("video-none-device", NONE);
1219

1220 1221 1222 1223 1224
    DO_TEST_CAPS_LATEST("intel-iommu");
    DO_TEST_CAPS_VER("intel-iommu", "2.6.0");
    DO_TEST_CAPS_LATEST("intel-iommu-caching-mode");
    DO_TEST_CAPS_LATEST("intel-iommu-eim");
    DO_TEST_CAPS_LATEST("intel-iommu-device-iotlb");
1225
    DO_TEST_CAPS_ARCH_LATEST("iommu-smmuv3", "aarch64");
J
Ján Tomko 已提交
1226

1227 1228 1229 1230 1231 1232 1233
    DO_TEST("cpu-check-none", NONE);
    DO_TEST("cpu-check-partial", NONE);
    DO_TEST("cpu-check-full", NONE);
    DO_TEST("cpu-check-default-none", NONE);
    DO_TEST("cpu-check-default-none2", NONE);
    DO_TEST("cpu-check-default-partial", NONE);
    DO_TEST("cpu-check-default-partial2", NONE);
M
Marc-André Lureau 已提交
1234
    DO_TEST("vmcoreinfo", NONE);
1235

1236 1237
    DO_TEST("smartcard-host", NONE);
    DO_TEST("smartcard-host-certificates", NONE);
1238
    DO_TEST("smartcard-host-certificates-database", NONE);
1239 1240 1241 1242
    DO_TEST("smartcard-passthrough-tcp", NONE);
    DO_TEST("smartcard-passthrough-spicevmc", NONE);
    DO_TEST("smartcard-controller", NONE);

1243 1244 1245 1246 1247 1248
    DO_TEST("pseries-cpu-compat-power9",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
    DO_TEST("pseries-cpu-compat",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
    DO_TEST("pseries-cpu-exact",
            QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
1249

1250
    DO_TEST("user-aliases", QEMU_CAPS_QCOW2_LUKS);
1251
    DO_TEST("input-virtio-ccw",
1252
            QEMU_CAPS_CCW,
1253 1254 1255 1256 1257 1258
            QEMU_CAPS_VIRTIO_KEYBOARD,
            QEMU_CAPS_VIRTIO_MOUSE,
            QEMU_CAPS_VIRTIO_TABLET,
            QEMU_CAPS_DEVICE_VIRTIO_KEYBOARD_CCW,
            QEMU_CAPS_DEVICE_VIRTIO_MOUSE_CCW,
            QEMU_CAPS_DEVICE_VIRTIO_TABLET_CCW);
1259

1260 1261 1262 1263 1264 1265 1266 1267 1268
    DO_TEST("tseg-explicit-size",
            QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_PCI_BRIDGE,
            QEMU_CAPS_DEVICE_IOH3420,
            QEMU_CAPS_ICH9_AHCI,
            QEMU_CAPS_MACHINE_SMM_OPT,
            QEMU_CAPS_VIRTIO_SCSI,
            QEMU_CAPS_MCH_EXTENDED_TSEG_MBYTES);

1269
# define DO_TEST_STATUS(_name) \
1270
    do { \
1271 1272 1273
        static struct testQemuInfo info = { \
            .name = _name, \
        }; \
1274 1275 1276 1277
        if (testQemuInfoSetArgs(&info, capslatest, \
                                ARG_QEMU_CAPS, QEMU_CAPS_LAST, \
                                ARG_END) < 0 || \
            qemuTestCapsCacheInsert(driver.qemuCapsCache, info.qemuCaps) < 0 || \
1278 1279
            testInfoSetStatusPaths(&info) < 0) { \
            VIR_TEST_DEBUG("Failed to generate status test data for '%s'", _name); \
1280 1281 1282
            return -1; \
        } \
\
1283
        if (virTestRun("QEMU status XML-2-XML " _name, \
1284 1285 1286
                       testCompareStatusXMLToXMLFiles, &info) < 0) \
            ret = -1; \
\
1287
        testQemuInfoClear(&info); \
1288 1289 1290 1291 1292
    } while (0)


    DO_TEST_STATUS("blockjob-mirror");
    DO_TEST_STATUS("vcpus-multi");
1293
    DO_TEST_STATUS("modern");
1294
    DO_TEST_STATUS("migration-out-nbd");
1295 1296
    DO_TEST_STATUS("migration-in-params");
    DO_TEST_STATUS("migration-out-params");
1297
    DO_TEST_STATUS("migration-out-nbd-tls");
1298
    DO_TEST_STATUS("disk-secinfo-upgrade");
1299

1300 1301
    DO_TEST_STATUS("blockjob-blockdev");

1302 1303
    DO_TEST("vhost-vsock", QEMU_CAPS_DEVICE_VHOST_VSOCK);
    DO_TEST("vhost-vsock-auto", QEMU_CAPS_DEVICE_VHOST_VSOCK);
1304 1305 1306 1307 1308
    DO_TEST("vhost-vsock-ccw", QEMU_CAPS_DEVICE_VHOST_VSOCK,
            QEMU_CAPS_CCW);
    DO_TEST("vhost-vsock-ccw-auto", QEMU_CAPS_DEVICE_VHOST_VSOCK,
            QEMU_CAPS_CCW);

L
Lubomir Rintel 已提交
1309 1310
    DO_TEST("riscv64-virt",
            QEMU_CAPS_DEVICE_VIRTIO_MMIO);
1311 1312
    DO_TEST("riscv64-virt-pci",
            QEMU_CAPS_OBJECT_GPEX);
J
Ján Tomko 已提交
1313

1314 1315
    DO_TEST_CAPS_LATEST("virtio-transitional");
    DO_TEST_CAPS_LATEST("virtio-non-transitional");
1316

1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332
    /* Simple headless guests for various architectures */
    DO_TEST_CAPS_ARCH_LATEST("aarch64-virt-headless", "aarch64");
    DO_TEST_CAPS_ARCH_LATEST("ppc64-pseries-headless", "ppc64");
    DO_TEST_CAPS_ARCH_LATEST("riscv64-virt-headless", "riscv64");
    DO_TEST_CAPS_ARCH_LATEST("s390x-ccw-headless", "s390x");
    DO_TEST_CAPS_ARCH_LATEST("x86_64-pc-headless", "x86_64");
    DO_TEST_CAPS_ARCH_LATEST("x86_64-q35-headless", "x86_64");

    /* Simple guests with graphics for various architectures */
    DO_TEST_CAPS_ARCH_LATEST("aarch64-virt-graphics", "aarch64");
    DO_TEST_CAPS_ARCH_LATEST("ppc64-pseries-graphics", "ppc64");
    DO_TEST_CAPS_ARCH_LATEST("riscv64-virt-graphics", "riscv64");
    DO_TEST_CAPS_ARCH_LATEST("s390x-ccw-graphics", "s390x");
    DO_TEST_CAPS_ARCH_LATEST("x86_64-pc-graphics", "x86_64");
    DO_TEST_CAPS_ARCH_LATEST("x86_64-q35-graphics", "x86_64");

A
Andrea Bolognani 已提交
1333 1334 1335
    if (getenv("LIBVIRT_SKIP_CLEANUP") == NULL)
        virFileDeleteTree(fakerootdir);

1336
    virHashFree(capslatest);
1337
    qemuTestDriverFree(&driver);
A
Andrea Bolognani 已提交
1338
    VIR_FREE(fakerootdir);
1339
    virFileWrapperClearPrefixes();
1340

1341
    return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
1342 1343
}

A
Andrea Bolognani 已提交
1344
VIR_TEST_MAIN_PRELOAD(mymain,
1345
                      abs_builddir "/.libs/virpcimock.so",
1346 1347
                      abs_builddir "/.libs/virrandommock.so",
                      abs_builddir "/.libs/virdeterministichashmock.so")
1348

1349 1350
#else

1351 1352 1353 1354 1355
int
main(void)
{
    return EXIT_AM_SKIP;
}
1356 1357

#endif /* WITH_QEMU */