From 25ab0e10faaffed0f182b7e8f893a934382b0a94 Mon Sep 17 00:00:00 2001 Message-Id: <25ab0e10faaffed0f182b7e8f893a934382b0a94@dist-git> From: Jiri Denemark Date: Tue, 23 Sep 2014 15:47:56 +0200 Subject: [PATCH] qemu: Add RDMA migration capabilities https://bugzilla.redhat.com/show_bug.cgi?id=1013055 (cherry picked from commit b3fd95e368e507b619e6c0588ed18b14c6536adf) Signed-off-by: Jiri Denemark --- src/qemu/qemu_capabilities.c | 32 +- src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_monitor.c | 22 +- src/qemu/qemu_monitor.h | 3 + src/qemu/qemu_monitor_json.c | 44 +- src/qemu/qemu_monitor_json.h | 2 + tests/qemucapabilitiesdata/caps_1.2.2-1.replies | 10 + tests/qemucapabilitiesdata/caps_1.3.1-1.replies | 10 + tests/qemucapabilitiesdata/caps_1.4.2-1.replies | 10 + tests/qemucapabilitiesdata/caps_1.5.3-1.replies | 10 + tests/qemucapabilitiesdata/caps_1.6.0-1.replies | 22 + tests/qemucapabilitiesdata/caps_1.6.50-1.replies | 22 + tests/qemucapabilitiesdata/caps_2.1.1-1.caps | 162 ++ tests/qemucapabilitiesdata/caps_2.1.1-1.replies | 3264 ++++++++++++++++++++++ tests/qemucapabilitiestest.c | 1 + 15 files changed, 3602 insertions(+), 13 deletions(-) create mode 100644 tests/qemucapabilitiesdata/caps_2.1.1-1.caps create mode 100644 tests/qemucapabilitiesdata/caps_2.1.1-1.replies diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 4145c22..ca112e9 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -269,6 +269,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST, "splash-timeout", /* 175 */ "iothread", + "migrate-rdma", ); @@ -993,9 +994,9 @@ virCapsPtr virQEMUCapsInit(virQEMUCapsCachePtr cache) if (virQEMUCapsInitPages(caps) < 0) VIR_WARN("Failed to get pages info"); - /* Add domain migration transport URI */ - virCapabilitiesAddHostMigrateTransport(caps, - "tcp"); + /* Add domain migration transport URIs */ + virCapabilitiesAddHostMigrateTransport(caps, "tcp"); + virCapabilitiesAddHostMigrateTransport(caps, "rdma"); /* QEMU can support pretty much every arch that exists, * so just probe for them all - we gracefully fail @@ -1435,6 +1436,10 @@ struct virQEMUCapsStringFlags virQEMUCapsCommands[] = { { "rtc-reset-reinjection", QEMU_CAPS_RTC_RESET_REINJECTION }, }; +struct virQEMUCapsStringFlags virQEMUCapsMigration[] = { + { "rdma-pin-all", QEMU_CAPS_MIGRATE_RDMA }, +}; + struct virQEMUCapsStringFlags virQEMUCapsEvents[] = { { "BALLOON_CHANGE", QEMU_CAPS_BALLOON_EVENT }, { "SPICE_MIGRATE_COMPLETED", QEMU_CAPS_SEAMLESS_MIGRATION }, @@ -2476,6 +2481,25 @@ virQEMUCapsProbeQMPCommandLine(virQEMUCapsPtr qemuCaps, return 0; } +static int +virQEMUCapsProbeQMPMigrationCapabilities(virQEMUCapsPtr qemuCaps, + qemuMonitorPtr mon) +{ + char **caps = NULL; + int ncaps; + + if ((ncaps = qemuMonitorGetMigrationCapabilities(mon, &caps)) < 0) + return -1; + + virQEMUCapsProcessStringFlags(qemuCaps, + ARRAY_CARDINALITY(virQEMUCapsMigration), + virQEMUCapsMigration, + ncaps, caps); + virQEMUCapsFreeStringList(ncaps, caps); + + return 0; +} + int virQEMUCapsProbeQMP(virQEMUCapsPtr qemuCaps, qemuMonitorPtr mon) { @@ -3168,6 +3192,8 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps, goto cleanup; if (virQEMUCapsProbeQMPCommandLine(qemuCaps, mon) < 0) goto cleanup; + if (virQEMUCapsProbeQMPMigrationCapabilities(qemuCaps, mon) < 0) + goto cleanup; ret = 0; cleanup: diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index cf69e59..b15b9f1 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -216,6 +216,7 @@ typedef enum { QEMU_CAPS_RTC_RESET_REINJECTION = 174, /* rtc-reset-reinjection monitor command */ QEMU_CAPS_SPLASH_TIMEOUT = 175, /* -boot splash-time */ QEMU_CAPS_OBJECT_IOTHREAD = 176, /* -object iothread */ + QEMU_CAPS_MIGRATE_RDMA = 177, /* have rdma migration */ QEMU_CAPS_LAST, /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index ab252fd..fea551d 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -121,7 +121,7 @@ VIR_ENUM_IMPL(qemuMonitorMigrationStatus, VIR_ENUM_IMPL(qemuMonitorMigrationCaps, QEMU_MONITOR_MIGRATION_CAPS_LAST, - "xbzrle", "auto-converge") + "xbzrle", "auto-converge", "rdma-pin-all") VIR_ENUM_IMPL(qemuMonitorVMStatus, QEMU_MONITOR_VM_STATUS_LAST, @@ -3789,6 +3789,26 @@ char *qemuMonitorGetTargetArch(qemuMonitorPtr mon) } +int +qemuMonitorGetMigrationCapabilities(qemuMonitorPtr mon, + char ***capabilities) +{ + VIR_DEBUG("mon=%p", mon); + + if (!mon) { + virReportError(VIR_ERR_INVALID_ARG, "%s", + _("monitor must not be NULL")); + return -1; + } + + /* No capability is supported without JSON monitor */ + if (!mon->json) + return 0; + + return qemuMonitorJSONGetMigrationCapabilities(mon, capabilities); +} + + /** * Returns 1 if @capability is supported, 0 if it's not, or -1 on error. */ diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index ed96011..62c9f2e 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -461,12 +461,15 @@ int qemuMonitorGetSpiceMigrationStatus(qemuMonitorPtr mon, typedef enum { QEMU_MONITOR_MIGRATION_CAPS_XBZRLE, QEMU_MONITOR_MIGRATION_CAPS_AUTO_CONVERGE, + QEMU_MONITOR_MIGRATION_CAPS_RDMA_PIN_ALL, QEMU_MONITOR_MIGRATION_CAPS_LAST } qemuMonitorMigrationCaps; VIR_ENUM_DECL(qemuMonitorMigrationCaps); +int qemuMonitorGetMigrationCapabilities(qemuMonitorPtr mon, + char ***capabilities); int qemuMonitorGetMigrationCapability(qemuMonitorPtr mon, qemuMonitorMigrationCaps capability); int qemuMonitorSetMigrationCapability(qemuMonitorPtr mon, diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 5ad0d05..17b082c 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -5228,14 +5228,18 @@ qemuMonitorJSONGetTargetArch(qemuMonitorPtr mon) int -qemuMonitorJSONGetMigrationCapability(qemuMonitorPtr mon, - qemuMonitorMigrationCaps capability) +qemuMonitorJSONGetMigrationCapabilities(qemuMonitorPtr mon, + char ***capabilities) { int ret; virJSONValuePtr cmd; virJSONValuePtr reply = NULL; virJSONValuePtr caps; + char **list = NULL; size_t i; + int n; + + *capabilities = NULL; if (!(cmd = qemuMonitorJSONMakeCommand("query-migrate-capabilities", NULL))) @@ -5254,14 +5258,17 @@ qemuMonitorJSONGetMigrationCapability(qemuMonitorPtr mon, ret = -1; - caps = virJSONValueObjectGet(reply, "return"); - if (!caps || caps->type != VIR_JSON_TYPE_ARRAY) { + if (!(caps = virJSONValueObjectGet(reply, "return")) || + (n = virJSONValueArraySize(caps)) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("missing migration capabilities")); goto cleanup; } - for (i = 0; i < virJSONValueArraySize(caps); i++) { + if (VIR_ALLOC_N(list, n + 1) < 0) + goto cleanup; + + for (i = 0; i < n; i++) { virJSONValuePtr cap = virJSONValueArrayGet(caps, i); const char *name; @@ -5277,15 +5284,16 @@ qemuMonitorJSONGetMigrationCapability(qemuMonitorPtr mon, goto cleanup; } - if (qemuMonitorMigrationCapsTypeFromString(name) == capability) { - ret = 1; + if (VIR_STRDUP(list[i], name) < 1) goto cleanup; - } } - ret = 0; + ret = n; + *capabilities = list; cleanup: + if (ret < 0) + virStringFreeList(list); virJSONValueFree(cmd); virJSONValueFree(reply); return ret; @@ -5293,6 +5301,24 @@ qemuMonitorJSONGetMigrationCapability(qemuMonitorPtr mon, int +qemuMonitorJSONGetMigrationCapability(qemuMonitorPtr mon, + qemuMonitorMigrationCaps capability) +{ + int ret; + char **capsList = NULL; + const char *cap = qemuMonitorMigrationCapsTypeToString(capability); + + if (qemuMonitorJSONGetMigrationCapabilities(mon, &capsList) < 0) + return -1; + + ret = virStringArrayHasString(capsList, cap); + + virStringFreeList(capsList); + return ret; +} + + +int qemuMonitorJSONSetMigrationCapability(qemuMonitorPtr mon, qemuMonitorMigrationCaps capability) { diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index dc5a059..c4e795c 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -133,6 +133,8 @@ int qemuMonitorJSONSetMigrationCacheSize(qemuMonitorPtr mon, int qemuMonitorJSONGetMigrationStatus(qemuMonitorPtr mon, qemuMonitorMigrationStatusPtr status); +int qemuMonitorJSONGetMigrationCapabilities(qemuMonitorPtr mon, + char ***capabilities); int qemuMonitorJSONGetMigrationCapability(qemuMonitorPtr mon, qemuMonitorMigrationCaps capability); int qemuMonitorJSONSetMigrationCapability(qemuMonitorPtr mon, diff --git a/tests/qemucapabilitiesdata/caps_1.2.2-1.replies b/tests/qemucapabilitiesdata/caps_1.2.2-1.replies index 345c32b..4fce9d7 100644 --- a/tests/qemucapabilitiesdata/caps_1.2.2-1.replies +++ b/tests/qemucapabilitiesdata/caps_1.2.2-1.replies @@ -1555,3 +1555,13 @@ "desc": "The command query-command-line-options has not been found" } } + +{ + "return": [ + { + "capability": "xbzrle", + "state": false + } + ], + "id": "libvirt-32" +} diff --git a/tests/qemucapabilitiesdata/caps_1.3.1-1.replies b/tests/qemucapabilitiesdata/caps_1.3.1-1.replies index 04d2141..43713b2 100644 --- a/tests/qemucapabilitiesdata/caps_1.3.1-1.replies +++ b/tests/qemucapabilitiesdata/caps_1.3.1-1.replies @@ -1735,3 +1735,13 @@ "desc": "The command query-command-line-options has not been found" } } + +{ + "return": [ + { + "capability": "xbzrle", + "state": false + } + ], + "id": "libvirt-34" +} diff --git a/tests/qemucapabilitiesdata/caps_1.4.2-1.replies b/tests/qemucapabilitiesdata/caps_1.4.2-1.replies index aef359c..34384f8 100644 --- a/tests/qemucapabilitiesdata/caps_1.4.2-1.replies +++ b/tests/qemucapabilitiesdata/caps_1.4.2-1.replies @@ -1785,3 +1785,13 @@ "desc": "The command query-command-line-options has not been found" } } + +{ + "return": [ + { + "capability": "xbzrle", + "state": false + } + ], + "id": "libvirt-34" +} diff --git a/tests/qemucapabilitiesdata/caps_1.5.3-1.replies b/tests/qemucapabilitiesdata/caps_1.5.3-1.replies index 1f84bb6..4613472 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3-1.replies +++ b/tests/qemucapabilitiesdata/caps_1.5.3-1.replies @@ -2539,3 +2539,13 @@ ], "id": "libvirt-33" } + +{ + "return": [ + { + "capability": "xbzrle", + "state": false + } + ], + "id": "libvirt-34" +} diff --git a/tests/qemucapabilitiesdata/caps_1.6.0-1.replies b/tests/qemucapabilitiesdata/caps_1.6.0-1.replies index c9dc29b..4205c89 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0-1.replies +++ b/tests/qemucapabilitiesdata/caps_1.6.0-1.replies @@ -2519,3 +2519,25 @@ ], "id": "libvirt-33" } + +{ + "return": [ + { + "capability": "xbzrle", + "state": false + }, + { + "capability": "x-rdma-pin-all", + "state": false + }, + { + "capability": "auto-converge", + "state": false + }, + { + "capability": "zero-blocks", + "state": false + } + ], + "id": "libvirt-34" +} diff --git a/tests/qemucapabilitiesdata/caps_1.6.50-1.replies b/tests/qemucapabilitiesdata/caps_1.6.50-1.replies index ec7451f..7582385 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.50-1.replies +++ b/tests/qemucapabilitiesdata/caps_1.6.50-1.replies @@ -2501,3 +2501,25 @@ ], "id": "libvirt-33" } + +{ + "return": [ + { + "capability": "xbzrle", + "state": false + }, + { + "capability": "x-rdma-pin-all", + "state": false + }, + { + "capability": "auto-converge", + "state": false + }, + { + "capability": "zero-blocks", + "state": false + } + ], + "id": "libvirt-34" +} diff --git a/tests/qemucapabilitiesdata/caps_2.1.1-1.caps b/tests/qemucapabilitiesdata/caps_2.1.1-1.caps new file mode 100644 index 0000000..71d2459 --- /dev/null +++ b/tests/qemucapabilitiesdata/caps_2.1.1-1.caps @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/qemucapabilitiesdata/caps_2.1.1-1.replies b/tests/qemucapabilitiesdata/caps_2.1.1-1.replies new file mode 100644 index 0000000..74d09dc --- /dev/null +++ b/tests/qemucapabilitiesdata/caps_2.1.1-1.replies @@ -0,0 +1,3264 @@ +{ + "QMP": { + "version": { + "qemu": { + "micro": 1, + "minor": 1, + "major": 2 + }, + "package": "" + }, + "capabilities": [ + ] + } +} + +{ + "return": { + }, + "id": "libvirt-1" +} + +{ + "return": { + "qemu": { + "micro": 1, + "minor": 1, + "major": 2 + }, + "package": "" + }, + "id": "libvirt-2" +} + +{ + "return": { + "arch": "x86_64" + }, + "id": "libvirt-3" +} + +{ + "return": [ + { + "name": "rtc-reset-reinjection" + }, + { + "name": "query-acpi-ospm-status" + }, + { + "name": "query-memory-devices" + }, + { + "name": "query-memdev" + }, + { + "name": "query-named-block-nodes" + }, + { + "name": "blockdev-add" + }, + { + "name": "query-rx-filter" + }, + { + "name": "chardev-remove" + }, + { + "name": "chardev-add" + }, + { + "name": "query-tpm-types" + }, + { + "name": "query-tpm-models" + }, + { + "name": "query-tpm" + }, + { + "name": "query-target" + }, + { + "name": "query-cpu-definitions" + }, + { + "name": "query-machines" + }, + { + "name": "device-list-properties" + }, + { + "name": "qom-list-types" + }, + { + "name": "change-vnc-password" + }, + { + "name": "nbd-server-stop" + }, + { + "name": "nbd-server-add" + }, + { + "name": "nbd-server-start" + }, + { + "name": "qom-get" + }, + { + "name": "qom-set" + }, + { + "name": "qom-list" + }, + { + "name": "query-block-jobs" + }, + { + "name": "query-balloon" + }, + { + "name": "query-migrate-capabilities" + }, + { + "name": "migrate-set-capabilities" + }, + { + "name": "query-migrate" + }, + { + "name": "query-command-line-options" + }, + { + "name": "query-uuid" + }, + { + "name": "query-name" + }, + { + "name": "query-spice" + }, + { + "name": "query-vnc" + }, + { + "name": "query-mice" + }, + { + "name": "query-status" + }, + { + "name": "query-kvm" + }, + { + "name": "query-pci" + }, + { + "name": "query-iothreads" + }, + { + "name": "query-cpus" + }, + { + "name": "query-blockstats" + }, + { + "name": "query-block" + }, + { + "name": "query-chardev-backends" + }, + { + "name": "query-chardev" + }, + { + "name": "query-events" + }, + { + "name": "query-commands" + }, + { + "name": "query-version" + }, + { + "name": "human-monitor-command" + }, + { + "name": "qmp_capabilities" + }, + { + "name": "add_client" + }, + { + "name": "expire_password" + }, + { + "name": "set_password" + }, + { + "name": "block_set_io_throttle" + }, + { + "name": "block_passwd" + }, + { + "name": "query-fdsets" + }, + { + "name": "remove-fd" + }, + { + "name": "add-fd" + }, + { + "name": "closefd" + }, + { + "name": "getfd" + }, + { + "name": "set_link" + }, + { + "name": "balloon" + }, + { + "name": "change-backing-file" + }, + { + "name": "drive-mirror" + }, + { + "name": "blockdev-snapshot-delete-internal-sync" + }, + { + "name": "blockdev-snapshot-internal-sync" + }, + { + "name": "blockdev-snapshot-sync" + }, + { + "name": "transaction" + }, + { + "name": "block-job-complete" + }, + { + "name": "block-job-resume" + }, + { + "name": "block-job-pause" + }, + { + "name": "block-job-cancel" + }, + { + "name": "block-job-set-speed" + }, + { + "name": "drive-backup" + }, + { + "name": "block-commit" + }, + { + "name": "block-stream" + }, + { + "name": "block_resize" + }, + { + "name": "object-del" + }, + { + "name": "object-add" + }, + { + "name": "netdev_del" + }, + { + "name": "netdev_add" + }, + { + "name": "query-dump-guest-memory-capability" + }, + { + "name": "dump-guest-memory" + }, + { + "name": "client_migrate_info" + }, + { + "name": "migrate_set_downtime" + }, + { + "name": "migrate_set_speed" + }, + { + "name": "query-migrate-cache-size" + }, + { + "name": "migrate-set-cache-size" + }, + { + "name": "migrate_cancel" + }, + { + "name": "migrate" + }, + { + "name": "xen-set-global-dirty-log" + }, + { + "name": "xen-save-devices-state" + }, + { + "name": "ringbuf-read" + }, + { + "name": "ringbuf-write" + }, + { + "name": "inject-nmi" + }, + { + "name": "pmemsave" + }, + { + "name": "memsave" + }, + { + "name": "cpu-add" + }, + { + "name": "cpu" + }, + { + "name": "send-key" + }, + { + "name": "device_del" + }, + { + "name": "device_add" + }, + { + "name": "system_powerdown" + }, + { + "name": "system_reset" + }, + { + "name": "system_wakeup" + }, + { + "name": "cont" + }, + { + "name": "stop" + }, + { + "name": "screendump" + }, + { + "name": "change" + }, + { + "name": "eject" + }, + { + "name": "quit" + } + ], + "id": "libvirt-4" +} + +{ + "return": { + "fd": 10, + "fdset-id": 0 + }, + "id": "libvirt-5" +} + +{ + "id": "libvirt-6", + "error": { + "class": "DeviceNotFound", + "desc": "Device 'bogus' not found" + } +} + +{ + "return": [ + { + "name": "VSERPORT_CHANGE" + }, + { + "name": "QUORUM_REPORT_BAD" + }, + { + "name": "QUORUM_FAILURE" + }, + { + "name": "GUEST_PANICKED" + }, + { + "name": "BALLOON_CHANGE" + }, + { + "name": "ACPI_DEVICE_OST" + }, + { + "name": "SPICE_MIGRATE_COMPLETED" + }, + { + "name": "SPICE_DISCONNECTED" + }, + { + "name": "SPICE_INITIALIZED" + }, + { + "name": "SPICE_CONNECTED" + }, + { + "name": "VNC_DISCONNECTED" + }, + { + "name": "VNC_INITIALIZED" + }, + { + "name": "VNC_CONNECTED" + }, + { + "name": "NIC_RX_FILTER_CHANGED" + }, + { + "name": "DEVICE_DELETED" + }, + { + "name": "WATCHDOG" + }, + { + "name": "RTC_CHANGE" + }, + { + "name": "WAKEUP" + }, + { + "name": "SUSPEND_DISK" + }, + { + "name": "SUSPEND" + }, + { + "name": "RESUME" + }, + { + "name": "STOP" + }, + { + "name": "RESET" + }, + { + "name": "POWERDOWN" + }, + { + "name": "SHUTDOWN" + }, + { + "name": "DEVICE_TRAY_MOVED" + }, + { + "name": "BLOCK_JOB_READY" + }, + { + "name": "BLOCK_JOB_ERROR" + }, + { + "name": "BLOCK_JOB_CANCELLED" + }, + { + "name": "BLOCK_JOB_COMPLETED" + }, + { + "name": "BLOCK_IO_ERROR" + }, + { + "name": "BLOCK_IMAGE_CORRUPTED" + } + ], + "id": "libvirt-7" +} + +{ + "return": [ + { + "name": "pc-0.13-machine" + }, + { + "name": "fw_cfg" + }, + { + "name": "i82551" + }, + { + "name": "i82550" + }, + { + "name": "Westmere-x86_64-cpu" + }, + { + "name": "xlnx,ps7-usb" + }, + { + "name": "e1000-82540em" + }, + { + "name": "pci-serial-4x" + }, + { + "name": "Penryn-x86_64-cpu" + }, + { + "name": "Haswell-x86_64-cpu" + }, + { + "name": "iothread" + }, + { + "name": "icc-bridge" + }, + { + "name": "cfi.pflash01" + }, + { + "name": "Opteron_G3-x86_64-cpu" + }, + { + "name": "Broadwell-x86_64-cpu" + }, + { + "name": "piix3-ide" + }, + { + "name": "isa-parallel" + }, + { + "name": "i2c-bus" + }, + { + "name": "megasas" + }, + { + "name": "usb-braille" + }, + { + "name": "exynos4210-ehci-usb" + }, + { + "name": "vmware-svga" + }, + { + "name": "pc-i440fx-2.0-machine" + }, + { + "name": "PIIX3-xen" + }, + { + "name": "ccid-bus" + }, + { + "name": "scsi-cd" + }, + { + "name": "isa-serial" + }, + { + "name": "usb-ehci" + }, + { + "name": "user-creatable" + }, + { + "name": "container" + }, + { + "name": "host-x86_64-cpu" + }, + { + "name": "pci-serial-2x" + }, + { + "name": "piix4-ide" + }, + { + "name": "scsi-generic" + }, + { + "name": "pc-1.0-machine" + }, + { + "name": "virtio-net-pci" + }, + { + "name": "pc-dimm" + }, + { + "name": "pc-i440fx-2.1-machine" + }, + { + "name": "isa-debugcon" + }, + { + "name": "ide-hd" + }, + { + "name": "qemu64-x86_64-cpu" + }, + { + "name": "pc-q35-1.7-machine" + }, + { + "name": "rng-egd" + }, + { + "name": "isa-pcspk" + }, + { + "name": "isa-pit" + }, + { + "name": "pc-1.1-machine" + }, + { + "name": "ich9-usb-ehci2" + }, + { + "name": "ich9-usb-ehci1" + }, + { + "name": "irq" + }, + { + "name": "cirrus-vga" + }, + { + "name": "virtconsole" + }, + { + "name": "virtio-rng-pci" + }, + { + "name": "PCIE" + }, + { + "name": "pentium3-x86_64-cpu" + }, + { + "name": "qxl-vga" + }, + { + "name": "ioapic" + }, + { + "name": "kvm-pit" + }, + { + "name": "pc-0.14-machine" + }, + { + "name": "xen-apic" + }, + { + "name": "pc-q35-2.0-machine" + }, + { + "name": "usb-host" + }, + { + "name": "usb-bus" + }, + { + "name": "pc-i440fx-1.4-machine" + }, + { + "name": "vhost-scsi-pci" + }, + { + "name": "usb-kbd" + }, + { + "name": "486-x86_64-cpu" + }, + { + "name": "ES1370" + }, + { + "name": "gus" + }, + { + "name": "isa-applesmc" + }, + { + "name": "PIIX3" + }, + { + "name": "kvm-pci-assign" + }, + { + "name": "xen-pci-passthrough" + }, + { + "name": "i82559er" + }, + { + "name": "e1000-82545em" + }, + { + "name": "q35-pcihost" + }, + { + "name": "tegra2-ehci-usb" + }, + { + "name": "pc-i440fx-1.5-machine" + }, + { + "name": "usb-bt-dongle" + }, + { + "name": "AC97" + }, + { + "name": "i6300esb" + }, + { + "name": "mc146818rtc" + }, + { + "name": "e1000-82544gc" + }, + { + "name": "PIIX4_PM" + }, + { + "name": "piix4-usb-uhci" + }, + { + "name": "sysbus-ahci" + }, + { + "name": "kvm-ioapic" + }, + { + "name": "pvpanic" + }, + { + "name": "core2duo-x86_64-cpu" + }, + { + "name": "virtio-9p-pci" + }, + { + "name": "scsi-disk" + }, + { + "name": "acpi-device-interface" + }, + { + "name": "sb16" + }, + { + "name": "pc-0.15-machine" + }, + { + "name": "xenfv-machine" + }, + { + "name": "usb-mouse" + }, + { + "name": "piix3-usb-uhci" + }, + { + "name": "virtio-scsi-device" + }, + { + "name": "virtio-blk-pci" + }, + { + "name": "virtio-9p-device" + }, + { + "name": "hda-output" + }, + { + "name": "SUNW,fdtwo" + }, + { + "name": "tpci200" + }, + { + "name": "Opteron_G4-x86_64-cpu" + }, + { + "name": "pc-q35-1.4-machine" + }, + { + "name": "virtio-mmio" + }, + { + "name": "qemu-console" + }, + { + "name": "isa-i8259" + }, + { + "name": "System" + }, + { + "name": "pvscsi" + }, + { + "name": "virtio-net-device" + }, + { + "name": "usb-hub" + }, + { + "name": "hda-duplex" + }, + { + "name": "isapc-machine" + }, + { + "name": "ipoctal232" + }, + { + "name": "pc-1.2-machine" + }, + { + "name": "xio3130-downstream" + }, + { + "name": "ide-cd" + }, + { + "name": "apic" + }, + { + "name": "isabus-bridge" + }, + { + "name": "memory-backend-file" + }, + { + "name": "isa-ide" + }, + { + "name": "isa-vga" + }, + { + "name": "qemu:memory-region" + }, + { + "name": "kvm-i8259" + }, + { + "name": "rng-random" + }, + { + "name": "hotplug-handler" + }, + { + "name": "pci-ohci" + }, + { + "name": "i440FX-pcihost" + }, + { + "name": "qemu32-x86_64-cpu" + }, + { + "name": "tpm-tis" + }, + { + "name": "tpm-passthrough" + }, + { + "name": "nec-usb-xhci" + }, + { + "name": "isa-debug-exit" + }, + { + "name": "pc-0.10-machine" + }, + { + "name": "pc-testdev" + }, + { + "name": "sga" + }, + { + "name": "Opteron_G1-x86_64-cpu" + }, + { + "name": "xen-pvdevice" + }, + { + "name": "pcnet" + }, + { + "name": "ivshmem" + }, + { + "name": "hpet" + }, + { + "name": "adlib" + }, + { + "name": "lsi53c895a" + }, + { + "name": "usb-audio" + }, + { + "name": "usb-wacom-tablet" + }, + { + "name": "pc-0.11-machine" + }, + { + "name": "kvm-apic" + }, + { + "name": "phenom-x86_64-cpu" + }, + { + "name": "ioh3420" + }, + { + "name": "cs4231a" + }, + { + "name": "dc390" + }, + { + "name": "nvme" + }, + { + "name": "i82801b11-bridge" + }, + { + "name": "kvmvapic" + }, + { + "name": "pc-q35-2.1-machine" + }, + { + "name": "fw-path-provider" + }, + { + "name": "usb-net" + }, + { + "name": "mch" + }, + { + "name": "usb-tablet" + }, + { + "name": "vhost-scsi" + }, + { + "name": "usb-ccid" + }, + { + "name": "pc-i440fx-1.7-machine" + }, + { + "name": "virtio-mmio-bus" + }, + { + "name": "usb-bot" + }, + { + "name": "ICH9-LPC" + }, + { + "name": "pci-bridge" + }, + { + "name": "pc-i440fx-1.6-machine" + }, + { + "name": "kvmclock" + }, + { + "name": "lsi53c810" + }, + { + "name": "isa-cirrus-vga" + }, + { + "name": "virtio-serial-bus" + }, + { + "name": "ICH9 SMB" + }, + { + "name": "SandyBridge-x86_64-cpu" + }, + { + "name": "esp" + }, + { + "name": "virtio-balloon-device" + }, + { + "name": "ccid-card-passthru" + }, + { + "name": "qxl" + }, + { + "name": "intel-hda" + }, + { + "name": "vmxnet3" + }, + { + "name": "virtio-serial-device" + }, + { + "name": "pci-testdev" + }, + { + "name": "ich9-usb-uhci6" + }, + { + "name": "ib700" + }, + { + "name": "ich9-usb-uhci4" + }, + { + "name": "piix3-ide-xen" + }, + { + "name": "ich9-usb-uhci5" + }, + { + "name": "icc-bus" + }, + { + "name": "IDE" + }, + { + "name": "VGA" + }, + { + "name": "ich9-usb-uhci3" + }, + { + "name": "ich9-usb-uhci2" + }, + { + "name": "ich9-usb-uhci1" + }, + { + "name": "x3130-upstream" + }, + { + "name": "none-machine" + }, + { + "name": "sysbus-fdc" + }, + { + "name": "SCSI" + }, + { + "name": "n270-x86_64-cpu" + }, + { + "name": "pci-serial" + }, + { + "name": "xenpv-machine" + }, + { + "name": "athlon-x86_64-cpu" + }, + { + "name": "ISA" + }, + { + "name": "i8042" + }, + { + "name": "ccid-card-emulated" + }, + { + "name": "i82559c" + }, + { + "name": "i82559b" + }, + { + "name": "i82559a" + }, + { + "name": "scsi-hd" + }, + { + "name": "pc-q35-1.5-machine" + }, + { + "name": "virtio-balloon-pci" + }, + { + "name": "hda-micro" + }, + { + "name": "scsi-block" + }, + { + "name": "virtio-scsi-pci" + }, + { + "name": "rtl8139" + }, + { + "name": "vmmouse" + }, + { + "name": "ich9-intel-hda" + }, + { + "name": "usb-mtp" + }, + { + "name": "ide-drive" + }, + { + "name": "PCI" + }, + { + "name": "Opteron_G5-x86_64-cpu" + }, + { + "name": "vmport" + }, + { + "name": "coreduo-x86_64-cpu" + }, + { + "name": "virtio-serial-pci" + }, + { + "name": "pc-q35-1.6-machine" + }, + { + "name": "xen-platform" + }, + { + "name": "pentium2-x86_64-cpu" + }, + { + "name": "i82558b" + }, + { + "name": "i82558a" + }, + { + "name": "pc-0.12-machine" + }, + { + "name": "kvm64-x86_64-cpu" + }, + { + "name": "port92" + }, + { + "name": "virtio-pci-bus" + }, + { + "name": "am53c974" + }, + { + "name": "e1000" + }, + { + "name": "Conroe-x86_64-cpu" + }, + { + "name": "ne2k_isa" + }, + { + "name": "HDA" + }, + { + "name": "usb-storage" + }, + { + "name": "pc-1.3-machine" + }, + { + "name": "usb-serial" + }, + { + "name": "sysbus-ohci" + }, + { + "name": "usb-redir" + }, + { + "name": "i82801" + }, + { + "name": "usb-uas" + }, + { + "name": "i82557b" + }, + { + "name": "i82557c" + }, + { + "name": "Nehalem-x86_64-cpu" + }, + { + "name": "memory-backend-ram" + }, + { + "name": "i82557a" + }, + { + "name": "virtserialport" + }, + { + "name": "i440FX" + }, + { + "name": "ne2k_pci" + }, + { + "name": "smbus-eeprom" + }, + { + "name": "i82562" + }, + { + "name": "ich9-ahci" + }, + { + "name": "isa-fdc" + }, + { + "name": "kvm32-x86_64-cpu" + }, + { + "name": "Opteron_G2-x86_64-cpu" + }, + { + "name": "virtio-rng-device" + }, + { + "name": "IndustryPack" + }, + { + "name": "vfio-pci" + }, + { + "name": "vt82c686b-usb-uhci" + }, + { + "name": "secondary-vga" + }, + { + "name": "pentium-x86_64-cpu" + }, + { + "name": "virtio-blk-device" + }, + { + "name": "fusbh200-ehci-usb" + } + ], + "id": "libvirt-8" +} + +{ + "return": [ + { + "name": "iothread", + "type": "link" + }, + { + "name": "x-data-plane", + "type": "bool" + }, + { + "name": "scsi", + "type": "bool" + }, + { + "name": "config-wce", + "type": "bool" + }, + { + "name": "serial", + "type": "str" + }, + { + "name": "secs", + "type": "uint32" + }, + { + "name": "heads", + "type": "uint32" + }, + { + "name": "cyls", + "type": "uint32" + }, + { + "name": "discard_granularity", + "type": "uint32" + }, + { + "name": "bootindex", + "type": "int32" + }, + { + "name": "opt_io_size", + "type": "uint32" + }, + { + "name": "min_io_size", + "type": "uint16" + }, + { + "name": "physical_block_size", + "type": "uint16" + }, + { + "name": "logical_block_size", + "type": "uint16" + }, + { + "name": "drive", + "type": "str" + }, + { + "name": "virtio-backend", + "type": "child" + }, + { + "name": "command_serr_enable", + "type": "on/off" + }, + { + "name": "multifunction", + "type": "on/off" + }, + { + "name": "rombar", + "type": "uint32" + }, + { + "name": "romfile", + "type": "str" + }, + { + "name": "addr", + "type": "pci-devfn" + }, + { + "name": "event_idx", + "type": "on/off" + }, + { + "name": "indirect_desc", + "type": "on/off" + }, + { + "name": "vectors", + "type": "uint32" + }, + { + "name": "ioeventfd", + "type": "on/off" + }, + { + "name": "class", + "type": "uint32" + } + ], + "id": "libvirt-9" +} + +{ + "return": [ + { + "name": "virtio-backend", + "type": "child" + }, + { + "name": "command_serr_enable", + "type": "on/off" + }, + { + "name": "multifunction", + "type": "on/off" + }, + { + "name": "rombar", + "type": "uint32" + }, + { + "name": "romfile", + "type": "str" + }, + { + "name": "addr", + "type": "pci-devfn" + }, + { + "name": "event_idx", + "type": "on/off" + }, + { + "name": "indirect_desc", + "type": "on/off" + }, + { + "name": "tx", + "type": "str" + }, + { + "name": "x-txburst", + "type": "int32" + }, + { + "name": "x-txtimer", + "type": "uint32" + }, + { + "name": "bootindex", + "type": "int32" + }, + { + "name": "netdev", + "type": "netdev" + }, + { + "name": "vlan", + "type": "vlan" + }, + { + "name": "mac", + "type": "macaddr" + }, + { + "name": "mq", + "type": "on/off" + }, + { + "name": "ctrl_guest_offloads", + "type": "on/off" + }, + { + "name": "ctrl_mac_addr", + "type": "on/off" + }, + { + "name": "ctrl_rx_extra", + "type": "on/off" + }, + { + "name": "ctrl_vlan", + "type": "on/off" + }, + { + "name": "ctrl_rx", + "type": "on/off" + }, + { + "name": "ctrl_vq", + "type": "on/off" + }, + { + "name": "status", + "type": "on/off" + }, + { + "name": "mrg_rxbuf", + "type": "on/off" + }, + { + "name": "host_ufo", + "type": "on/off" + }, + { + "name": "host_ecn", + "type": "on/off" + }, + { + "name": "host_tso6", + "type": "on/off" + }, + { + "name": "host_tso4", + "type": "on/off" + }, + { + "name": "guest_announce", + "type": "on/off" + }, + { + "name": "guest_ufo", + "type": "on/off" + }, + { + "name": "guest_ecn", + "type": "on/off" + }, + { + "name": "guest_tso6", + "type": "on/off" + }, + { + "name": "guest_tso4", + "type": "on/off" + }, + { + "name": "gso", + "type": "on/off" + }, + { + "name": "guest_csum", + "type": "on/off" + }, + { + "name": "csum", + "type": "on/off" + }, + { + "name": "any_layout", + "type": "on/off" + }, + { + "name": "vectors", + "type": "uint32" + }, + { + "name": "ioeventfd", + "type": "on/off" + } + ], + "id": "libvirt-10" +} + +{ + "id": "libvirt-11", + "error": { + "class": "DeviceNotFound", + "desc": "Device 'virtio-blk-ccw' not found" + } +} + +{ + "id": "libvirt-12", + "error": { + "class": "DeviceNotFound", + "desc": "Device 'virtio-net-ccw' not found" + } +} + +{ + "id": "libvirt-13", + "error": { + "class": "DeviceNotFound", + "desc": "Device 'virtio-blk-s390' not found" + } +} + +{ + "id": "libvirt-14", + "error": { + "class": "DeviceNotFound", + "desc": "Device 'virtio-net-s390' not found" + } +} + +{ + "id": "libvirt-15", + "error": { + "class": "DeviceNotFound", + "desc": "Device 'pci-assign' not found" + } +} + +{ + "return": [ + { + "name": "command_serr_enable", + "type": "on/off" + }, + { + "name": "multifunction", + "type": "on/off" + }, + { + "name": "rombar", + "type": "uint32" + }, + { + "name": "romfile", + "type": "str" + }, + { + "name": "addr", + "type": "pci-devfn" + }, + { + "name": "configfd", + "type": "str" + }, + { + "name": "bootindex", + "type": "int32" + }, + { + "name": "share_intx", + "type": "on/off" + }, + { + "name": "prefer_msi", + "type": "on/off" + }, + { + "name": "host", + "type": "pci-host-devaddr" + } + ], + "id": "libvirt-16" +} + +{ + "return": [ + { + "name": "command_serr_enable", + "type": "on/off" + }, + { + "name": "multifunction", + "type": "on/off" + }, + { + "name": "rombar", + "type": "uint32" + }, + { + "name": "romfile", + "type": "str" + }, + { + "name": "addr", + "type": "pci-devfn" + }, + { + "name": "bootindex", + "type": "int32" + }, + { + "name": "x-vga", + "type": "on/off" + }, + { + "name": "x-intx-mmap-timeout-ms", + "type": "uint32" + }, + { + "name": "host", + "type": "pci-host-devaddr" + } + ], + "id": "libvirt-17" +} + +{ + "return": [ + { + "name": "lun", + "type": "uint32" + }, + { + "name": "scsi-id", + "type": "uint32" + }, + { + "name": "channel", + "type": "uint32" + }, + { + "name": "max_unmap_size", + "type": "uint64" + }, + { + "name": "port_index", + "type": "uint16" + }, + { + "name": "port_wwn", + "type": "uint64" + }, + { + "name": "wwn", + "type": "uint64" + }, + { + "name": "dpofua", + "type": "on/off" + }, + { + "name": "removable", + "type": "on/off" + }, + { + "name": "product", + "type": "str" + }, + { + "name": "vendor", + "type": "str" + }, + { + "name": "serial", + "type": "str" + }, + { + "name": "ver", + "type": "str" + }, + { + "name": "discard_granularity", + "type": "uint32" + }, + { + "name": "bootindex", + "type": "int32" + }, + { + "name": "opt_io_size", + "type": "uint32" + }, + { + "name": "min_io_size", + "type": "uint16" + }, + { + "name": "physical_block_size", + "type": "blocksize" + }, + { + "name": "logical_block_size", + "type": "blocksize" + }, + { + "name": "drive", + "type": "drive" + } + ], + "id": "libvirt-18" +} + +{ + "return": [ + { + "name": "unit", + "type": "uint32" + }, + { + "name": "model", + "type": "str" + }, + { + "name": "serial", + "type": "str" + }, + { + "name": "wwn", + "type": "uint64" + }, + { + "name": "ver", + "type": "str" + }, + { + "name": "discard_granularity", + "type": "uint32" + }, + { + "name": "bootindex", + "type": "int32" + }, + { + "name": "opt_io_size", + "type": "uint32" + }, + { + "name": "min_io_size", + "type": "uint16" + }, + { + "name": "physical_block_size", + "type": "blocksize" + }, + { + "name": "logical_block_size", + "type": "blocksize" + }, + { + "name": "drive", + "type": "drive" + } + ], + "id": "libvirt-19" +} + +{ + "return": [ + { + "name": "command_serr_enable", + "type": "on/off" + }, + { + "name": "multifunction", + "type": "on/off" + }, + { + "name": "rombar", + "type": "uint32" + }, + { + "name": "romfile", + "type": "str" + }, + { + "name": "addr", + "type": "pci-devfn" + }, + { + "name": "memory-hotplug-support", + "type": "bool" + }, + { + "name": "acpi-pci-hotplug-with-bridge-support", + "type": "bool" + }, + { + "name": "s4_val", + "type": "uint8" + }, + { + "name": "disable_s4", + "type": "uint8" + }, + { + "name": "disable_s3", + "type": "uint8" + }, + { + "name": "smb_io_base", + "type": "uint32" + } + ], + "id": "libvirt-20" +} + +{ + "return": [ + { + "name": "msos-desc", + "type": "on/off" + }, + { + "name": "full-path", + "type": "on/off" + }, + { + "name": "serial", + "type": "str" + }, + { + "name": "port", + "type": "str" + }, + { + "name": "bootindex", + "type": "int32" + }, + { + "name": "filter", + "type": "str" + }, + { + "name": "debug", + "type": "uint8" + }, + { + "name": "chardev", + "type": "chr" + } + ], + "id": "libvirt-21" +} + +{ + "return": [ + { + "name": "msos-desc", + "type": "on/off" + }, + { + "name": "full-path", + "type": "on/off" + }, + { + "name": "serial", + "type": "str" + }, + { + "name": "port", + "type": "str" + }, + { + "name": "pipeline", + "type": "on/off" + }, + { + "name": "loglevel", + "type": "uint32" + }, + { + "name": "bootindex", + "type": "int32" + }, + { + "name": "isobsize", + "type": "uint32" + }, + { + "name": "isobufs", + "type": "uint32" + }, + { + "name": "productid", + "type": "uint32" + }, + { + "name": "vendorid", + "type": "uint32" + }, + { + "name": "hostport", + "type": "str" + }, + { + "name": "hostaddr", + "type": "uint32" + }, + { + "name": "hostbus", + "type": "uint32" + } + ], + "id": "libvirt-22" +} + +{ + "return": [ + { + "name": "lun", + "type": "uint32" + }, + { + "name": "scsi-id", + "type": "uint32" + }, + { + "name": "channel", + "type": "uint32" + }, + { + "name": "bootindex", + "type": "int32" + }, + { + "name": "drive", + "type": "drive" + } + ], + "id": "libvirt-23" +} + +{ + "return": [ + { + "name": "pci-hole64-end", + "type": "int" + }, + { + "name": "pci-hole64-start", + "type": "int" + }, + { + "name": "pci-hole-end", + "type": "int" + }, + { + "name": "pci-hole-start", + "type": "int" + }, + { + "name": "pci-conf-data[0]", + "type": "child" + }, + { + "name": "pci-conf-idx[0]", + "type": "child" + }, + { + "name": "short_root_bus", + "type": "uint32" + }, + { + "name": "pci-hole64-size", + "type": "size" + } + ], + "id": "libvirt-24" +} + +{ + "return": [ + { + "name": "mcfg_size", + "type": "int" + }, + { + "name": "pci-hole64-end", + "type": "int" + }, + { + "name": "pci-hole64-start", + "type": "int" + }, + { + "name": "pci-hole-end", + "type": "int" + }, + { + "name": "pci-hole-start", + "type": "int" + }, + { + "name": "mch", + "type": "child" + }, + { + "name": "pci-conf-data[0]", + "type": "child" + }, + { + "name": "pci-conf-idx[0]", + "type": "child" + }, + { + "name": "short_root_bus", + "type": "uint32" + }, + { + "name": "pci-hole64-size", + "type": "size" + }, + { + "name": "MCFG", + "type": "uint64" + } + ], + "id": "libvirt-25" +} + +{ + "return": [ + { + "name": "msos-desc", + "type": "on/off" + }, + { + "name": "full-path", + "type": "on/off" + }, + { + "name": "serial", + "type": "str" + }, + { + "name": "port", + "type": "str" + }, + { + "name": "removable", + "type": "on/off" + }, + { + "name": "discard_granularity", + "type": "uint32" + }, + { + "name": "bootindex", + "type": "int32" + }, + { + "name": "opt_io_size", + "type": "uint32" + }, + { + "name": "min_io_size", + "type": "uint16" + }, + { + "name": "physical_block_size", + "type": "blocksize" + }, + { + "name": "logical_block_size", + "type": "blocksize" + }, + { + "name": "drive", + "type": "drive" + } + ], + "id": "libvirt-26" +} + +{ + "return": [ + { + "name": "lost_tick_policy", + "type": "LostTickPolicy" + }, + { + "name": "iobase", + "type": "uint32" + } + ], + "id": "libvirt-27" +} + +{ + "return": [ + { + "name": "pc-1.3", + "cpu-max": 255 + }, + { + "name": "pc-0.12", + "cpu-max": 255 + }, + { + "name": "pc-q35-1.6", + "cpu-max": 255 + }, + { + "name": "pc-q35-1.5", + "cpu-max": 255 + }, + { + "name": "xenpv", + "cpu-max": 1 + }, + { + "name": "none", + "cpu-max": 1 + }, + { + "name": "pc-i440fx-1.6", + "cpu-max": 255 + }, + { + "name": "pc-i440fx-1.7", + "cpu-max": 255 + }, + { + "name": "pc-q35-2.1", + "cpu-max": 255, + "alias": "q35" + }, + { + "name": "pc-0.11", + "cpu-max": 255 + }, + { + "name": "pc-0.10", + "cpu-max": 255 + }, + { + "name": "pc-1.2", + "cpu-max": 255 + }, + { + "name": "isapc", + "cpu-max": 1 + }, + { + "name": "pc-q35-1.4", + "cpu-max": 255 + }, + { + "name": "xenfv", + "cpu-max": 128 + }, + { + "name": "pc-0.15", + "cpu-max": 255 + }, + { + "name": "pc-i440fx-1.5", + "cpu-max": 255 + }, + { + "name": "pc-i440fx-1.4", + "cpu-max": 255 + }, + { + "name": "pc-q35-2.0", + "cpu-max": 255 + }, + { + "name": "pc-0.14", + "cpu-max": 255 + }, + { + "name": "pc-1.1", + "cpu-max": 255 + }, + { + "name": "pc-q35-1.7", + "cpu-max": 255 + }, + { + "name": "pc-i440fx-2.1", + "is-default": true, + "cpu-max": 255, + "alias": "pc" + }, + { + "name": "pc-1.0", + "cpu-max": 255 + }, + { + "name": "pc-i440fx-2.0", + "cpu-max": 255 + }, + { + "name": "pc-0.13", + "cpu-max": 255 + } + ], + "id": "libvirt-28" +} + +{ + "return": [ + { + "name": "Opteron_G5" + }, + { + "name": "Opteron_G4" + }, + { + "name": "Opteron_G3" + }, + { + "name": "Opteron_G2" + }, + { + "name": "Opteron_G1" + }, + { + "name": "Broadwell" + }, + { + "name": "Haswell" + }, + { + "name": "SandyBridge" + }, + { + "name": "Westmere" + }, + { + "name": "Nehalem" + }, + { + "name": "Penryn" + }, + { + "name": "Conroe" + }, + { + "name": "n270" + }, + { + "name": "athlon" + }, + { + "name": "pentium3" + }, + { + "name": "pentium2" + }, + { + "name": "pentium" + }, + { + "name": "486" + }, + { + "name": "coreduo" + }, + { + "name": "kvm32" + }, + { + "name": "qemu32" + }, + { + "name": "kvm64" + }, + { + "name": "core2duo" + }, + { + "name": "phenom" + }, + { + "name": "qemu64" + } + ], + "id": "libvirt-29" +} + +{ + "return": { + "enabled": false, + "present": true + }, + "id": "libvirt-30" +} + +{ + "return": [ + "tpm-tis" + ], + "id": "libvirt-31" +} + +{ + "return": [ + "passthrough" + ], + "id": "libvirt-32" +} + +{ + "return": [ + { + "parameters": [ + { + "name": "initiator-name", + "help": "Initiator iqn name to use when connecting", + "type": "string" + }, + { + "name": "header-digest", + "help": "HeaderDigest setting. {CRC32C|CRC32C-NONE|NONE-CRC32C|NONE}", + "type": "string" + }, + { + "name": "password", + "help": "password for CHAP authentication to target", + "type": "string" + }, + { + "name": "user", + "help": "username for CHAP authentication to target", + "type": "string" + } + ], + "option": "iscsi" + }, + { + "parameters": [ + { + "name": "seamless-migration", + "type": "boolean" + }, + { + "name": "playback-compression", + "type": "boolean" + }, + { + "name": "agent-mouse", + "type": "boolean" + }, + { + "name": "streaming-video", + "type": "string" + }, + { + "name": "zlib-glz-wan-compression", + "type": "string" + }, + { + "name": "jpeg-wan-compression", + "type": "string" + }, + { + "name": "image-compression", + "type": "string" + }, + { + "name": "plaintext-channel", + "type": "string" + }, + { + "name": "tls-channel", + "type": "string" + }, + { + "name": "tls-ciphers", + "type": "string" + }, + { + "name": "x509-dh-key-file", + "type": "string" + }, + { + "name": "x509-cacert-file", + "type": "string" + }, + { + "name": "x509-cert-file", + "type": "string" + }, + { + "name": "x509-key-password", + "type": "string" + }, + { + "name": "x509-key-file", + "type": "string" + }, + { + "name": "x509-dir", + "type": "string" + }, + { + "name": "sasl", + "type": "boolean" + }, + { + "name": "disable-agent-file-xfer", + "type": "boolean" + }, + { + "name": "disable-copy-paste", + "type": "boolean" + }, + { + "name": "disable-ticketing", + "type": "boolean" + }, + { + "name": "password", + "type": "string" + }, + { + "name": "ipv6", + "type": "boolean" + }, + { + "name": "ipv4", + "type": "boolean" + }, + { + "name": "addr", + "type": "string" + }, + { + "name": "tls-port", + "type": "number" + }, + { + "name": "port", + "type": "number" + } + ], + "option": "spice" + }, + { + "parameters": [ + ], + "option": "acpi" + }, + { + "parameters": [ + { + "name": "sock_fd", + "type": "number" + }, + { + "name": "socket", + "type": "string" + }, + { + "name": "readonly", + "type": "boolean" + }, + { + "name": "writeout", + "type": "string" + }, + { + "name": "security_model", + "type": "string" + }, + { + "name": "mount_tag", + "type": "string" + }, + { + "name": "path", + "type": "string" + }, + { + "name": "fsdriver", + "type": "string" + } + ], + "option": "virtfs" + }, + { + "parameters": [ + { + "name": "sock_fd", + "type": "number" + }, + { + "name": "socket", + "type": "string" + }, + { + "name": "readonly", + "type": "boolean" + }, + { + "name": "writeout", + "type": "string" + }, + { + "name": "security_model", + "type": "string" + }, + { + "name": "path", + "type": "string" + }, + { + "name": "fsdriver", + "type": "string" + } + ], + "option": "fsdev" + }, + { + "parameters": [ + ], + "option": "smbios" + }, + { + "parameters": [ + ], + "option": "numa" + }, + { + "parameters": [ + { + "name": "debug-threads", + "help": "When enabled, name the individual threads; defaults off.\nNOTE: The thread names are for debugging and not a\nstable API.", + "type": "boolean" + }, + { + "name": "process", + "help": "Sets the name of the QEMU process, as shown in top etc", + "type": "string" + }, + { + "name": "guest", + "help": "Sets the name of the guest.\nThis name will be displayed in the SDL window caption.\nThe name will also be used for the VNC server", + "type": "string" + } + ], + "option": "name" + }, + { + "parameters": [ + { + "name": "timestamp", + "type": "boolean" + } + ], + "option": "msg" + }, + { + "parameters": [ + { + "name": "mlock", + "type": "boolean" + } + ], + "option": "realtime" + }, + { + "parameters": [ + ], + "option": "tpmdev" + }, + { + "parameters": [ + ], + "option": "object" + }, + { + "parameters": [ + { + "name": "opaque", + "help": "free-form string used to describe fd", + "type": "string" + }, + { + "name": "set", + "help": "ID of the fd set to add fd to", + "type": "number" + }, + { + "name": "fd", + "help": "file descriptor of which a duplicate is added to fd set", + "type": "number" + } + ], + "option": "add-fd" + }, + { + "parameters": [ + { + "name": "enable", + "type": "boolean" + } + ], + "option": "sandbox" + }, + { + "parameters": [ + { + "name": "strict", + "type": "boolean" + }, + { + "name": "reboot-timeout", + "type": "string" + }, + { + "name": "splash-time", + "type": "string" + }, + { + "name": "splash", + "type": "string" + }, + { + "name": "menu", + "type": "boolean" + }, + { + "name": "once", + "type": "string" + }, + { + "name": "order", + "type": "string" + } + ], + "option": "boot-opts" + }, + { + "parameters": [ + { + "name": "maxcpus", + "type": "number" + }, + { + "name": "threads", + "type": "number" + }, + { + "name": "cores", + "type": "number" + }, + { + "name": "sockets", + "type": "number" + }, + { + "name": "cpus", + "type": "number" + } + ], + "option": "smp-opts" + }, + { + "parameters": [ + { + "name": "maxmem", + "type": "size" + }, + { + "name": "slots", + "type": "number" + }, + { + "name": "size", + "type": "size" + } + ], + "option": "memory" + }, + { + "parameters": [ + { + "name": "max-ram-below-4g", + "help": "maximum ram below the 4G boundary (32bit boundary)", + "type": "size" + }, + { + "name": "kvm-type", + "help": "Specifies the KVM virtualization mode (HV, PR)", + "type": "string" + }, + { + "name": "firmware", + "help": "firmware image", + "type": "string" + }, + { + "name": "usb", + "help": "Set on/off to enable/disable usb", + "type": "boolean" + }, + { + "name": "mem-merge", + "help": "enable/disable memory merge support", + "type": "boolean" + }, + { + "name": "dump-guest-core", + "help": "Include guest memory in a core dump", + "type": "boolean" + }, + { + "name": "dt_compatible", + "help": "Overrides the \"compatible\" property of the dt root node", + "type": "string" + }, + { + "name": "phandle_start", + "help": "The first phandle ID we may generate dynamically", + "type": "number" + }, + { + "name": "dumpdtb", + "help": "Dump current dtb to a file and quit", + "type": "string" + }, + { + "name": "dtb", + "help": "Linux kernel device tree file", + "type": "string" + }, + { + "name": "append", + "help": "Linux kernel command line", + "type": "string" + }, + { + "name": "initrd", + "help": "Linux initial ramdisk file", + "type": "string" + }, + { + "name": "kernel", + "help": "Linux kernel image file", + "type": "string" + }, + { + "name": "kvm_shadow_mem", + "help": "KVM shadow MMU size", + "type": "size" + }, + { + "name": "kernel_irqchip", + "help": "use KVM in-kernel irqchip", + "type": "boolean" + }, + { + "name": "accel", + "help": "accelerator list", + "type": "string" + }, + { + "name": "type", + "help": "emulated machine", + "type": "string" + } + ], + "option": "machine" + }, + { + "parameters": [ + { + "name": "romfile", + "type": "string" + }, + { + "name": "bootindex", + "type": "number" + } + ], + "option": "option-rom" + }, + { + "parameters": [ + { + "name": "file", + "type": "string" + }, + { + "name": "events", + "type": "string" + } + ], + "option": "trace" + }, + { + "parameters": [ + { + "name": "pretty", + "type": "boolean" + }, + { + "name": "default", + "type": "boolean" + }, + { + "name": "chardev", + "type": "string" + }, + { + "name": "mode", + "type": "string" + } + ], + "option": "mon" + }, + { + "parameters": [ + { + "name": "value", + "type": "string" + }, + { + "name": "property", + "type": "string" + }, + { + "name": "driver", + "type": "string" + } + ], + "option": "global" + }, + { + "parameters": [ + { + "name": "driftfix", + "type": "string" + }, + { + "name": "clock", + "type": "string" + }, + { + "name": "base", + "type": "string" + } + ], + "option": "rtc" + }, + { + "parameters": [ + ], + "option": "net" + }, + { + "parameters": [ + ], + "option": "netdev" + }, + { + "parameters": [ + ], + "option": "device" + }, + { + "parameters": [ + { + "name": "chardev", + "type": "string" + }, + { + "name": "size", + "type": "size" + }, + { + "name": "debug", + "type": "number" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "signal", + "type": "boolean" + }, + { + "name": "mux", + "type": "boolean" + }, + { + "name": "rows", + "type": "number" + }, + { + "name": "cols", + "type": "number" + }, + { + "name": "height", + "type": "number" + }, + { + "name": "width", + "type": "number" + }, + { + "name": "telnet", + "type": "boolean" + }, + { + "name": "delay", + "type": "boolean" + }, + { + "name": "server", + "type": "boolean" + }, + { + "name": "wait", + "type": "boolean" + }, + { + "name": "ipv6", + "type": "boolean" + }, + { + "name": "ipv4", + "type": "boolean" + }, + { + "name": "to", + "type": "number" + }, + { + "name": "localport", + "type": "string" + }, + { + "name": "localaddr", + "type": "string" + }, + { + "name": "port", + "type": "string" + }, + { + "name": "host", + "type": "string" + }, + { + "name": "path", + "type": "string" + }, + { + "name": "backend", + "type": "string" + } + ], + "option": "chardev" + }, + { + "parameters": [ + { + "name": "copy-on-read", + "help": "copy read data from backing file into image file", + "type": "boolean" + }, + { + "name": "werror", + "help": "write error action", + "type": "string" + }, + { + "name": "rerror", + "help": "read error action", + "type": "string" + }, + { + "name": "read-only", + "help": "open drive file as read-only", + "type": "boolean" + }, + { + "name": "file", + "help": "file name", + "type": "string" + }, + { + "name": "serial", + "help": "disk serial number", + "type": "string" + }, + { + "name": "addr", + "help": "pci address (virtio only)", + "type": "string" + }, + { + "name": "boot", + "help": "(deprecated, ignored)", + "type": "boolean" + }, + { + "name": "trans", + "help": "chs translation (auto, lba, none)", + "type": "string" + }, + { + "name": "secs", + "help": "number of sectors (ide disk geometry)", + "type": "number" + }, + { + "name": "heads", + "help": "number of heads (ide disk geometry)", + "type": "number" + }, + { + "name": "cyls", + "help": "number of cylinders (ide disk geometry)", + "type": "number" + }, + { + "name": "if", + "help": "interface (ide, scsi, sd, mtd, floppy, pflash, virtio)", + "type": "string" + }, + { + "name": "media", + "help": "media type (disk, cdrom)", + "type": "string" + }, + { + "name": "index", + "help": "index number", + "type": "number" + }, + { + "name": "unit", + "help": "unit number (i.e. lun for scsi)", + "type": "number" + }, + { + "name": "bus", + "help": "bus number", + "type": "number" + }, + { + "name": "detect-zeroes", + "help": "try to optimize zero writes (off, on, unmap)", + "type": "string" + }, + { + "name": "throttling.iops-size", + "help": "when limiting by iops max size of an I/O in bytes", + "type": "number" + }, + { + "name": "throttling.bps-write-max", + "help": "total bytes write burst", + "type": "number" + }, + { + "name": "throttling.bps-read-max", + "help": "total bytes read burst", + "type": "number" + }, + { + "name": "throttling.bps-total-max", + "help": "total bytes burst", + "type": "number" + }, + { + "name": "throttling.iops-write-max", + "help": "I/O operations write burst", + "type": "number" + }, + { + "name": "throttling.iops-read-max", + "help": "I/O operations read burst", + "type": "number" + }, + { + "name": "throttling.iops-total-max", + "help": "I/O operations burst", + "type": "number" + }, + { + "name": "throttling.bps-write", + "help": "limit write bytes per second", + "type": "number" + }, + { + "name": "throttling.bps-read", + "help": "limit read bytes per second", + "type": "number" + }, + { + "name": "throttling.bps-total", + "help": "limit total bytes per second", + "type": "number" + }, + { + "name": "throttling.iops-write", + "help": "limit write operations per second", + "type": "number" + }, + { + "name": "throttling.iops-read", + "help": "limit read operations per second", + "type": "number" + }, + { + "name": "throttling.iops-total", + "help": "limit total I/O operations per second", + "type": "number" + }, + { + "name": "werror", + "help": "write error action", + "type": "string" + }, + { + "name": "format", + "help": "disk format (raw, qcow2, ...)", + "type": "string" + }, + { + "name": "aio", + "help": "host AIO implementation (threads, native)", + "type": "string" + }, + { + "name": "cache.no-flush", + "help": "ignore any flush requests for the device", + "type": "boolean" + }, + { + "name": "cache.direct", + "help": "enables use of O_DIRECT (bypass the host page cache)", + "type": "boolean" + }, + { + "name": "cache.writeback", + "help": "enables writeback mode for any caches", + "type": "boolean" + }, + { + "name": "discard", + "help": "discard operation (ignore/off, unmap/on)", + "type": "string" + }, + { + "name": "snapshot", + "help": "enable/disable snapshot mode", + "type": "boolean" + } + ], + "option": "drive" + } + ], + "id": "libvirt-33" +} + +{ + "return": [ + { + "state": false, + "capability": "xbzrle" + }, + { + "state": false, + "capability": "rdma-pin-all" + }, + { + "state": false, + "capability": "auto-converge" + }, + { + "state": false, + "capability": "zero-blocks" + } + ], + "id": "libvirt-34" +} diff --git a/tests/qemucapabilitiestest.c b/tests/qemucapabilitiestest.c index 2f2b73d..0fbc43c 100644 --- a/tests/qemucapabilitiestest.c +++ b/tests/qemucapabilitiestest.c @@ -189,6 +189,7 @@ mymain(void) DO_TEST("caps_1.5.3-1"); DO_TEST("caps_1.6.0-1"); DO_TEST("caps_1.6.50-1"); + DO_TEST("caps_2.1.1-1"); virObjectUnref(xmlopt); return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE; -- 2.1.1