[libvirt] [PATCHv2 2/3] qemu: add capability check for memballoon 'autodeflate' feature

Dmitry Andreev dandreev at virtuozzo.com
Wed Dec 23 12:33:49 UTC 2015


New attribute 'autodeflate' for memballoon was introduced. This
commit adds appropriate capability check and new virQEMUCaps flag.
---
 src/qemu/qemu_capabilities.c                     |  11 ++
 src/qemu/qemu_capabilities.h                     |   2 +
 tests/qemucapabilitiesdata/caps_1.2.2-1.replies  |  68 +++++++++-
 tests/qemucapabilitiesdata/caps_1.3.1-1.replies  |  68 +++++++++-
 tests/qemucapabilitiesdata/caps_1.4.2-1.replies  |  68 +++++++++-
 tests/qemucapabilitiesdata/caps_1.5.3-1.replies  |  66 +++++++++-
 tests/qemucapabilitiesdata/caps_1.6.0-1.replies  |  66 +++++++++-
 tests/qemucapabilitiesdata/caps_1.6.50-1.replies |  66 +++++++++-
 tests/qemucapabilitiesdata/caps_2.1.1-1.replies  |  78 ++++++++++-
 tests/qemucapabilitiesdata/caps_2.4.0-1.caps     |   1 +
 tests/qemucapabilitiesdata/caps_2.4.0-1.replies  | 146 +++++++++++++++++++-
 tests/qemucapabilitiesdata/caps_2.5.0-1.caps     |   1 +
 tests/qemucapabilitiesdata/caps_2.5.0-1.replies  | 161 ++++++++++++++++++++++-
 13 files changed, 739 insertions(+), 63 deletions(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 6e5d203..74decbb 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -308,6 +308,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
 
               "virtio-tablet", /* 205 */
               "virtio-input-host",
+              "virtio-balloon-pci.deflate-on-oom",
     );
 
 
@@ -1562,6 +1563,10 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = {
     { "virtio-input-host-pci", QEMU_CAPS_VIRTIO_INPUT_HOST },
 };
 
+static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioBalloon[] = {
+    { "deflate-on-oom", QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE },
+};
+
 static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioBlk[] = {
     { "multifunction", QEMU_CAPS_PCI_MULTIFUNCTION },
     { "bootindex", QEMU_CAPS_BOOTINDEX },
@@ -1704,6 +1709,12 @@ static struct virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = {
       ARRAY_CARDINALITY(virQEMUCapsObjectPropsQxlVga) },
     { "virtio-gpu-pci", virQEMUCapsObjectPropsVirtioGpu,
       ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioGpu) },
+    { "virtio-balloon-pci", virQEMUCapsObjectPropsVirtioBalloon,
+      ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBalloon) },
+    { "virtio-balloon-ccw", virQEMUCapsObjectPropsVirtioBalloon,
+      ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBalloon) },
+    { "virtio-balloon-device", virQEMUCapsObjectPropsVirtioBalloon,
+      ARRAY_CARDINALITY(virQEMUCapsObjectPropsVirtioBalloon) },
 };
 
 
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index 61d6379..d76aa5a 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -335,6 +335,8 @@ typedef enum {
     /* 205 */
     QEMU_CAPS_VIRTIO_TABLET, /* -device virtio-tablet-{device,pci} */
     QEMU_CAPS_VIRTIO_INPUT_HOST, /* -device virtio-input-host-{device,pci} */
+    QEMU_CAPS_VIRTIO_BALLOON_AUTODEFLATE, /* virtio-balloon-{device,pci,ccw}.
+                                           * deflate-on-oom */
 
     QEMU_CAPS_LAST /* this must always be the last item */
 } virQEMUCapsFlags;
diff --git a/tests/qemucapabilitiesdata/caps_1.2.2-1.replies b/tests/qemucapabilitiesdata/caps_1.2.2-1.replies
index e7de77b..7e245c3 100644
--- a/tests/qemucapabilitiesdata/caps_1.2.2-1.replies
+++ b/tests/qemucapabilitiesdata/caps_1.2.2-1.replies
@@ -1608,6 +1608,60 @@
 {
     "return": [
         {
+             "name": "command_serr_enable",
+             "type": "on/off"
+        },
+        {
+            "name": "multifunction",
+            "type": "on/off"
+        },
+        {
+            "name": "rombar",
+            "type": "uint32"
+        },
+        {
+            "name": "romfile",
+            "type": "string"
+        },
+        {
+            "name": "addr",
+            "type": "pci-devfn"
+        },
+        {
+            "name": "class",
+            "type": "hex32"
+        },
+        {
+            "name": "event_idx",
+            "type": "on/off"
+        },
+        {
+            "name": "indirect_desc",
+            "type": "on/off"
+        }
+    ],
+    "id": "libvirt-32"
+}
+
+{
+    "id": "libvirt-33",
+    "error": {
+        "class": "DeviceNotFound",
+        "desc": "Device 'virtio-balloon-ccw' not found"
+    }
+}
+
+{
+    "id": "libvirt-34",
+    "error": {
+        "class": "DeviceNotFound",
+        "desc": "Device 'virtio-balloon-device' not found"
+    }
+}
+
+{
+    "return": [
+        {
             "name": "xenpv"
         },
         {
@@ -1649,7 +1703,7 @@
             "name": "none"
         }
     ],
-    "id": "libvirt-32"
+    "id": "libvirt-35"
 }
 
 {
@@ -1721,7 +1775,7 @@
             "name": "Opteron_G4"
         }
     ],
-    "id": "libvirt-33"
+    "id": "libvirt-36"
 }
 
 {
@@ -1729,11 +1783,11 @@
         "enabled": false,
         "present": true
     },
-    "id": "libvirt-34"
+    "id": "libvirt-37"
 }
 
 {
-    "id": "libvirt-35",
+    "id": "libvirt-38",
     "error": {
         "class": "CommandNotFound",
         "desc": "The command query-tpm-models has not been found"
@@ -1741,7 +1795,7 @@
 }
 
 {
-    "id": "libvirt-36",
+    "id": "libvirt-39",
     "error": {
         "class": "CommandNotFound",
         "desc": "The command query-tpm-types has not been found"
@@ -1749,7 +1803,7 @@
 }
 
 {
-    "id": "libvirt-37",
+    "id": "libvirt-40",
     "error": {
         "class": "CommandNotFound",
         "desc": "The command query-command-line-options has not been found"
@@ -1763,5 +1817,5 @@
             "state": false
         }
     ],
-    "id": "libvirt-38"
+    "id": "libvirt-41"
 }
diff --git a/tests/qemucapabilitiesdata/caps_1.3.1-1.replies b/tests/qemucapabilitiesdata/caps_1.3.1-1.replies
index bf9cbad..584778e 100644
--- a/tests/qemucapabilitiesdata/caps_1.3.1-1.replies
+++ b/tests/qemucapabilitiesdata/caps_1.3.1-1.replies
@@ -1787,6 +1787,60 @@
 {
     "return": [
         {
+             "name": "command_serr_enable",
+             "type": "on/off"
+        },
+        {
+            "name": "multifunction",
+            "type": "on/off"
+        },
+        {
+            "name": "rombar",
+            "type": "uint32"
+        },
+        {
+            "name": "romfile",
+            "type": "string"
+        },
+        {
+            "name": "addr",
+            "type": "pci-devfn"
+        },
+        {
+            "name": "class",
+            "type": "hex32"
+        },
+        {
+            "name": "event_idx",
+            "type": "on/off"
+        },
+        {
+            "name": "indirect_desc",
+            "type": "on/off"
+        }
+    ],
+    "id": "libvirt-33"
+}
+
+{
+    "id": "libvirt-34",
+    "error": {
+        "class": "DeviceNotFound",
+        "desc": "Device 'virtio-balloon-ccw' not found"
+    }
+}
+
+{
+    "id": "libvirt-35",
+    "error": {
+        "class": "DeviceNotFound",
+        "desc": "Device 'virtio-balloon-device' not found"
+    }
+}
+
+{
+    "return": [
+        {
             "name": "xenpv"
         },
         {
@@ -1835,7 +1889,7 @@
             "name": "none"
         }
     ],
-    "id": "libvirt-33"
+    "id": "libvirt-36"
 }
 
 {
@@ -1913,7 +1967,7 @@
             "name": "Opteron_G5"
         }
     ],
-    "id": "libvirt-34"
+    "id": "libvirt-37"
 }
 
 {
@@ -1921,11 +1975,11 @@
         "enabled": false,
         "present": true
     },
-    "id": "libvirt-35"
+    "id": "libvirt-38"
 }
 
 {
-    "id": "libvirt-36",
+    "id": "libvirt-39",
     "error": {
         "class": "CommandNotFound",
         "desc": "The command query-tpm-models has not been found"
@@ -1933,7 +1987,7 @@
 }
 
 {
-    "id": "libvirt-37",
+    "id": "libvirt-40",
     "error": {
         "class": "CommandNotFound",
         "desc": "The command query-tpm-types has not been found"
@@ -1941,7 +1995,7 @@
 }
 
 {
-    "id": "libvirt-38",
+    "id": "libvirt-41",
     "error": {
         "class": "CommandNotFound",
         "desc": "The command query-command-line-options has not been found"
@@ -1955,5 +2009,5 @@
             "state": false
         }
     ],
-    "id": "libvirt-39"
+    "id": "libvirt-42"
 }
diff --git a/tests/qemucapabilitiesdata/caps_1.4.2-1.replies b/tests/qemucapabilitiesdata/caps_1.4.2-1.replies
index bd7980f..410eb14 100644
--- a/tests/qemucapabilitiesdata/caps_1.4.2-1.replies
+++ b/tests/qemucapabilitiesdata/caps_1.4.2-1.replies
@@ -1834,6 +1834,60 @@
 {
     "return": [
         {
+             "name": "command_serr_enable",
+             "type": "on/off"
+        },
+        {
+            "name": "multifunction",
+            "type": "on/off"
+        },
+        {
+            "name": "rombar",
+            "type": "uint32"
+        },
+        {
+            "name": "romfile",
+            "type": "string"
+        },
+        {
+            "name": "addr",
+            "type": "pci-devfn"
+        },
+        {
+            "name": "class",
+            "type": "hex32"
+        },
+        {
+            "name": "event_idx",
+            "type": "on/off"
+        },
+        {
+            "name": "indirect_desc",
+            "type": "on/off"
+        }
+    ],
+    "id": "libvirt-33"
+}
+
+{
+    "id": "libvirt-34",
+    "error": {
+        "class": "DeviceNotFound",
+        "desc": "Device 'virtio-balloon-ccw' not found"
+    }
+}
+
+{
+    "id": "libvirt-35",
+    "error": {
+        "class": "DeviceNotFound",
+        "desc": "Device 'virtio-balloon-device' not found"
+    }
+}
+
+{
+    "return": [
+        {
             "name": "xenpv"
         },
         {
@@ -1885,7 +1939,7 @@
             "name": "none"
         }
     ],
-    "id": "libvirt-33"
+    "id": "libvirt-36"
 }
 
 {
@@ -1963,7 +2017,7 @@
             "name": "qemu64"
         }
     ],
-    "id": "libvirt-34"
+    "id": "libvirt-37"
 }
 
 {
@@ -1971,11 +2025,11 @@
         "enabled": false,
         "present": true
     },
-    "id": "libvirt-35"
+    "id": "libvirt-38"
 }
 
 {
-    "id": "libvirt-36",
+    "id": "libvirt-39",
     "error": {
         "class": "CommandNotFound",
         "desc": "The command query-tpm-models has not been found"
@@ -1983,7 +2037,7 @@
 }
 
 {
-    "id": "libvirt-37",
+    "id": "libvirt-40",
     "error": {
         "class": "CommandNotFound",
         "desc": "The command query-tpm-types has not been found"
@@ -1991,7 +2045,7 @@
 }
 
 {
-    "id": "libvirt-38",
+    "id": "libvirt-41",
     "error": {
         "class": "CommandNotFound",
         "desc": "The command query-command-line-options has not been found"
@@ -2005,5 +2059,5 @@
             "state": false
         }
     ],
-    "id": "libvirt-39"
+    "id": "libvirt-42"
 }
diff --git a/tests/qemucapabilitiesdata/caps_1.5.3-1.replies b/tests/qemucapabilitiesdata/caps_1.5.3-1.replies
index abdba6c..1170d13 100644
--- a/tests/qemucapabilitiesdata/caps_1.5.3-1.replies
+++ b/tests/qemucapabilitiesdata/caps_1.5.3-1.replies
@@ -1908,6 +1908,58 @@
 {
     "return": [
         {
+             "name": "command_serr_enable",
+             "type": "on/off"
+        },
+        {
+            "name": "multifunction",
+            "type": "on/off"
+        },
+        {
+            "name": "rombar",
+            "type": "uint32"
+        },
+        {
+            "name": "romfile",
+            "type": "string"
+        },
+        {
+            "name": "addr",
+            "type": "pci-devfn"
+        },
+        {
+            "name": "class",
+            "type": "hex32"
+        },
+        {
+            "name": "event_idx",
+            "type": "on/off"
+        },
+        {
+            "name": "indirect_desc",
+            "type": "on/off"
+        }
+    ],
+    "id": "libvirt-33"
+}
+
+{
+    "id": "libvirt-34",
+    "error": {
+        "class": "DeviceNotFound",
+        "desc": "Device 'virtio-balloon-ccw' not found"
+    }
+}
+
+{
+    "return": [
+    ],
+    "id": "libvirt-35"
+}
+
+{
+    "return": [
+        {
             "name": "pc-q35-1.4",
             "cpu-max": 255
         },
@@ -1975,7 +2027,7 @@
             "cpu-max": 1
         }
     ],
-    "id": "libvirt-33"
+    "id": "libvirt-36"
 }
 
 {
@@ -2053,7 +2105,7 @@
             "name": "qemu64"
         }
     ],
-    "id": "libvirt-34"
+    "id": "libvirt-37"
 }
 
 {
@@ -2061,19 +2113,19 @@
         "enabled": false,
         "present": true
     },
-    "id": "libvirt-35"
+    "id": "libvirt-38"
 }
 
 {
     "return": [
     ],
-    "id": "libvirt-36"
+    "id": "libvirt-39"
 }
 
 {
     "return": [
     ],
-    "id": "libvirt-37"
+    "id": "libvirt-40"
 }
 
 {
@@ -2749,7 +2801,7 @@
             "option": "drive"
         }
     ],
-    "id": "libvirt-38"
+    "id": "libvirt-41"
 }
 
 {
@@ -2759,5 +2811,5 @@
             "state": false
         }
     ],
-    "id": "libvirt-39"
+    "id": "libvirt-42"
 }
diff --git a/tests/qemucapabilitiesdata/caps_1.6.0-1.replies b/tests/qemucapabilitiesdata/caps_1.6.0-1.replies
index 26a0e9d..bbd5ca6 100644
--- a/tests/qemucapabilitiesdata/caps_1.6.0-1.replies
+++ b/tests/qemucapabilitiesdata/caps_1.6.0-1.replies
@@ -1970,6 +1970,58 @@
 {
     "return": [
         {
+             "name": "command_serr_enable",
+             "type": "on/off"
+        },
+        {
+            "name": "multifunction",
+            "type": "on/off"
+        },
+        {
+            "name": "rombar",
+            "type": "uint32"
+        },
+        {
+            "name": "romfile",
+            "type": "string"
+        },
+        {
+            "name": "addr",
+            "type": "pci-devfn"
+        },
+        {
+            "name": "class",
+            "type": "hex32"
+        },
+        {
+            "name": "event_idx",
+            "type": "on/off"
+        },
+        {
+            "name": "indirect_desc",
+            "type": "on/off"
+        }
+    ],
+    "id": "libvirt-33"
+}
+
+{
+    "id": "libvirt-34",
+    "error": {
+        "class": "DeviceNotFound",
+        "desc": "Device 'virtio-balloon-ccw' not found"
+    }
+}
+
+{
+    "return": [
+    ],
+    "id": "libvirt-35"
+}
+
+{
+    "return": [
+        {
             "name": "xenpv",
             "cpu-max": 1
         },
@@ -2053,7 +2105,7 @@
             "cpu-max": 1
         }
     ],
-    "id": "libvirt-33"
+    "id": "libvirt-36"
 }
 
 {
@@ -2131,7 +2183,7 @@
             "name": "qemu64"
         }
     ],
-    "id": "libvirt-34"
+    "id": "libvirt-37"
 }
 
 {
@@ -2139,19 +2191,19 @@
         "enabled": false,
         "present": true
     },
-    "id": "libvirt-35"
+    "id": "libvirt-38"
 }
 
 {
     "return": [
     ],
-    "id": "libvirt-36"
+    "id": "libvirt-39"
 }
 
 {
     "return": [
     ],
-    "id": "libvirt-37"
+    "id": "libvirt-40"
 }
 
 {
@@ -2729,7 +2781,7 @@
             "option": "drive"
         }
     ],
-    "id": "libvirt-38"
+    "id": "libvirt-41"
 }
 
 {
@@ -2751,5 +2803,5 @@
             "state": false
         }
     ],
-    "id": "libvirt-39"
+    "id": "libvirt-42"
 }
diff --git a/tests/qemucapabilitiesdata/caps_1.6.50-1.replies b/tests/qemucapabilitiesdata/caps_1.6.50-1.replies
index 5c493b7..319d33f 100644
--- a/tests/qemucapabilitiesdata/caps_1.6.50-1.replies
+++ b/tests/qemucapabilitiesdata/caps_1.6.50-1.replies
@@ -1934,6 +1934,58 @@
 {
     "return": [
         {
+             "name": "command_serr_enable",
+             "type": "on/off"
+        },
+        {
+            "name": "multifunction",
+            "type": "on/off"
+        },
+        {
+            "name": "rombar",
+            "type": "uint32"
+        },
+        {
+            "name": "romfile",
+            "type": "string"
+        },
+        {
+            "name": "addr",
+            "type": "pci-devfn"
+        },
+        {
+            "name": "class",
+            "type": "hex32"
+        },
+        {
+            "name": "event_idx",
+            "type": "on/off"
+        },
+        {
+            "name": "indirect_desc",
+            "type": "on/off"
+        }
+    ],
+    "id": "libvirt-33"
+}
+
+{
+    "id": "libvirt-34",
+    "error": {
+        "class": "DeviceNotFound",
+        "desc": "Device 'virtio-balloon-ccw' not found"
+    }
+}
+
+{
+    "return": [
+    ],
+    "id": "libvirt-35"
+}
+
+{
+    "return": [
+        {
             "name": "xenpv",
             "cpu-max": 1
         },
@@ -2025,7 +2077,7 @@
             "cpu-max": 1
         }
     ],
-    "id": "libvirt-33"
+    "id": "libvirt-36"
 }
 
 {
@@ -2103,7 +2155,7 @@
             "name": "qemu64"
         }
     ],
-    "id": "libvirt-34"
+    "id": "libvirt-37"
 }
 
 {
@@ -2111,19 +2163,19 @@
         "enabled": false,
         "present": true
     },
-    "id": "libvirt-35"
+    "id": "libvirt-38"
 }
 
 {
     "return": [
     ],
-    "id": "libvirt-36"
+    "id": "libvirt-39"
 }
 
 {
     "return": [
     ],
-    "id": "libvirt-37"
+    "id": "libvirt-40"
 }
 
 {
@@ -2711,7 +2763,7 @@
             "option": "drive"
         }
     ],
-    "id": "libvirt-38"
+    "id": "libvirt-41"
 }
 
 {
@@ -2733,5 +2785,5 @@
             "state": false
         }
     ],
-    "id": "libvirt-39"
+    "id": "libvirt-42"
 }
diff --git a/tests/qemucapabilitiesdata/caps_2.1.1-1.replies b/tests/qemucapabilitiesdata/caps_2.1.1-1.replies
index ba85b28..754067a 100644
--- a/tests/qemucapabilitiesdata/caps_2.1.1-1.replies
+++ b/tests/qemucapabilitiesdata/caps_2.1.1-1.replies
@@ -2380,6 +2380,70 @@
 {
   "return": [
     {
+      "name": "guest-stats-polling-interval",
+      "type": "int"
+    },
+    {
+      "name": "guest-stats",
+      "type": "guest statistics"
+    },
+    {
+      "name": "virtio-backend",
+      "type": "child<virtio-balloon-device>"
+    },
+    {
+      "name": "command_serr_enable",
+      "type": "on/off"
+    },
+    {
+      "name": "multifunction",
+      "type": "on/off"
+    },
+    {
+      "name": "rombar",
+      "type": "uint32"
+    },
+    {
+      "name": "romfile",
+      "type": "str"
+    },
+    {
+      "name": "addr",
+      "type": "pci-devfn"
+    },
+    {
+      "name": "event_idx",
+      "type": "on/off"
+    },
+    {
+      "name": "indirect_desc",
+      "type": "on/off"
+    },
+    {
+      "name": "class",
+      "type": "uint32"
+    }
+  ],
+  "id": "libvirt-33"
+}
+
+{
+  "id": "libvirt-34",
+  "error": {
+    "class": "DeviceNotFound",
+    "desc": "Device 'virtio-balloon-ccw' not found"
+  }
+}
+
+{
+  "return": [
+  ],
+  "id": "libvirt-35"
+}
+
+{
+  "return": [
+    {
       "name": "pc-1.3",
       "cpu-max": 255
     },
@@ -2487,7 +2551,7 @@
       "cpu-max": 255
     }
   ],
-  "id": "libvirt-33"
+  "id": "libvirt-36"
 }
 
 {
@@ -2568,7 +2632,7 @@
       "name": "qemu64"
     }
   ],
-  "id": "libvirt-34"
+  "id": "libvirt-37"
 }
 
 {
@@ -2576,21 +2640,21 @@
     "enabled": false,
     "present": true
   },
-  "id": "libvirt-35"
+  "id": "libvirt-38"
 }
 
 {
   "return": [
     "tpm-tis"
   ],
-  "id": "libvirt-36"
+  "id": "libvirt-39"
 }
 
 {
   "return": [
     "passthrough"
   ],
-  "id": "libvirt-37"
+  "id": "libvirt-40"
 }
 
 {
@@ -3450,7 +3514,7 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-38"
+  "id": "libvirt-41"
 }
 
 {
@@ -3472,5 +3536,5 @@
       "capability": "zero-blocks"
     }
   ],
-  "id": "libvirt-39"
+  "id": "libvirt-42"
 }
diff --git a/tests/qemucapabilitiesdata/caps_2.4.0-1.caps b/tests/qemucapabilitiesdata/caps_2.4.0-1.caps
index d67a48d..ab8357d 100644
--- a/tests/qemucapabilitiesdata/caps_2.4.0-1.caps
+++ b/tests/qemucapabilitiesdata/caps_2.4.0-1.caps
@@ -167,4 +167,5 @@
     <flag name='virtio-mouse'/>
     <flag name='virtio-tablet'/>
     <flag name='virtio-input-host'/>
+    <flag name='virtio-balloon-pci.deflate-on-oom'/>
   </qemuCaps>
diff --git a/tests/qemucapabilitiesdata/caps_2.4.0-1.replies b/tests/qemucapabilitiesdata/caps_2.4.0-1.replies
index 8f50128..3381377 100644
--- a/tests/qemucapabilitiesdata/caps_2.4.0-1.replies
+++ b/tests/qemucapabilitiesdata/caps_2.4.0-1.replies
@@ -2761,6 +2761,138 @@
 {
   "return": [
     {
+      "name": "guest-stats-polling-interval",
+      "type": "int"
+    },
+    {
+      "name": "guest-stats",
+      "type": "guest statistics"
+    },
+    {
+      "name": "any_layout",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "notify_on_empty",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "event_idx",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "indirect_desc",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "deflate-on-oom",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "virtio-backend",
+      "type": "child<virtio-balloon-device>"
+    },
+    {
+      "name": "command_serr_enable",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "multifunction",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "rombar",
+      "type": "uint32"
+    },
+    {
+      "name": "romfile",
+      "type": "str"
+    },
+    {
+      "name": "addr",
+      "description": "Slot and optional function number, example: 06.0 or 06",
+      "type": "int32"
+    },
+    {
+      "name": "disable-modern",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "disable-legacy",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "virtio-pci-bus-master-bug-migration",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "class",
+      "type": "uint32"
+    }
+  ],
+  "id": "libvirt-33"
+}
+
+{
+  "id": "libvirt-34",
+  "error": {
+    "class": "DeviceNotFound",
+    "desc": "Device 'virtio-balloon-ccw' not found"
+  }
+}
+
+{
+  "return": [
+    {
+      "name": "guest-stats-polling-interval",
+      "type": "int"
+    },
+    {
+      "name": "guest-stats",
+      "type": "guest statistics"
+    },
+    {
+      "name": "any_layout",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "notify_on_empty",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "event_idx",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "indirect_desc",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "deflate-on-oom",
+      "description": "on/off",
+      "type": "bool"
+    }
+  ],
+  "id": "libvirt-35"
+}
+
+{
+  "return": [
+    {
       "name": "pc-i440fx-2.4",
       "is-default": true,
       "cpu-max": 255,
@@ -2884,7 +3016,7 @@
       "cpu-max": 255
     }
   ],
-  "id": "libvirt-33"
+  "id": "libvirt-36"
 }
 
 {
@@ -2974,7 +3106,7 @@
       "name": "qemu64"
     }
   ],
-  "id": "libvirt-34"
+  "id": "libvirt-37"
 }
 
 {
@@ -2982,21 +3114,21 @@
     "enabled": false,
     "present": true
   },
-  "id": "libvirt-35"
+  "id": "libvirt-38"
 }
 
 {
   "return": [
     "tpm-tis"
   ],
-  "id": "libvirt-36"
+  "id": "libvirt-39"
 }
 
 {
   "return": [
     "passthrough"
   ],
-  "id": "libvirt-37"
+  "id": "libvirt-40"
 }
 
 {
@@ -4000,7 +4132,7 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-38"
+  "id": "libvirt-41"
 }
 
 {
@@ -4030,5 +4162,5 @@
       "capability": "events"
     }
   ],
-  "id": "libvirt-39"
+  "id": "libvirt-42"
 }
diff --git a/tests/qemucapabilitiesdata/caps_2.5.0-1.caps b/tests/qemucapabilitiesdata/caps_2.5.0-1.caps
index f4f3673..e3c7d14 100644
--- a/tests/qemucapabilitiesdata/caps_2.5.0-1.caps
+++ b/tests/qemucapabilitiesdata/caps_2.5.0-1.caps
@@ -168,4 +168,5 @@
     <flag name='virtio-mouse'/>
     <flag name='virtio-tablet'/>
     <flag name='virtio-input-host'/>
+    <flag name='virtio-balloon-pci.deflate-on-oom'/>
   </qemuCaps>
diff --git a/tests/qemucapabilitiesdata/caps_2.5.0-1.replies b/tests/qemucapabilitiesdata/caps_2.5.0-1.replies
index d90a74b..29429f6 100644
--- a/tests/qemucapabilitiesdata/caps_2.5.0-1.replies
+++ b/tests/qemucapabilitiesdata/caps_2.5.0-1.replies
@@ -2766,6 +2766,153 @@
 {
   "return": [
     {
+      "name": "disable-modern",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "rombar",
+      "type": "uint32"
+    },
+    {
+      "name": "virtio-pci-bus-master-bug-migration",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "class",
+      "type": "uint32"
+    },
+    {
+      "name": "indirect_desc",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "guest-stats-polling-interval",
+      "type": "int"
+    },
+    {
+      "name": "guest-stats",
+      "type": "guest statistics"
+    },
+    {
+      "name": "multifunction",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "migrate-extra",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "event_idx",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "modern-pio-notify",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "romfile",
+      "type": "str"
+    },
+    {
+      "name": "virtio-backend",
+      "type": "child<virtio-balloon-device>"
+    },
+    {
+      "name": "disable-legacy",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "command_serr_enable",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "x-disable-pcie",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "addr",
+      "description": "Slot and optional function number, example: 06.0 or 06",
+      "type": "int32"
+    },
+    {
+      "name": "any_layout",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "notify_on_empty",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "deflate-on-oom",
+      "description": "on/off",
+      "type": "bool"
+    }
+  ],
+  "id": "libvirt-33"
+}
+
+{
+  "id": "libvirt-34",
+  "error": {
+    "class": "DeviceNotFound",
+    "desc": "Device 'virtio-balloon-ccw' not found"
+  }
+}
+
+{
+  "return": [
+    {
+      "name": "notify_on_empty",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "any_layout",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "indirect_desc",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "guest-stats-polling-interval",
+      "type": "int"
+    },
+    {
+      "name": "guest-stats",
+      "type": "guest statistics"
+    },
+    {
+      "name": "event_idx",
+      "description": "on/off",
+      "type": "bool"
+    },
+    {
+      "name": "deflate-on-oom",
+      "description": "on/off",
+      "type": "bool"
+    }
+  ],
+  "id": "libvirt-35"
+}
+
+{
+  "return": [
+    {
       "name": "pc-i440fx-2.4",
       "is-default": true,
       "cpu-max": 255,
@@ -2889,7 +3036,7 @@
       "cpu-max": 255
     }
   ],
-  "id": "libvirt-33"
+  "id": "libvirt-36"
 }
 
 {
@@ -2979,7 +3126,7 @@
       "name": "qemu64"
     }
   ],
-  "id": "libvirt-34"
+  "id": "libvirt-37"
 }
 
 {
@@ -2987,21 +3134,21 @@
     "enabled": false,
     "present": true
   },
-  "id": "libvirt-35"
+  "id": "libvirt-38"
 }
 
 {
   "return": [
     "tpm-tis"
   ],
-  "id": "libvirt-36"
+  "id": "libvirt-39"
 }
 
 {
   "return": [
     "passthrough"
   ],
-  "id": "libvirt-37"
+  "id": "libvirt-40"
 }
 
 {
@@ -4005,7 +4152,7 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-38"
+  "id": "libvirt-41"
 }
 
 {
@@ -4035,5 +4182,5 @@
       "capability": "events"
     }
   ],
-  "id": "libvirt-39"
+  "id": "libvirt-42"
 }
-- 
1.8.3.1




More information about the libvir-list mailing list