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