[libvirt PATCH 3/5] add virQEMUCapsProbeQMPTCGState function to set QEMU_CAPS_TCG_DISABLED

Tobin Feldman-Fitzthum tobin at linux.vnet.ibm.com
Fri Mar 27 19:51:14 UTC 2020


virQEMUCapsProbeQMPTCGState will set QEMU_CAPS_TCG_DISABLED if QEMU
version is at least 2.10, KVM is enabled, and qom-list-types does 
not include tcg-accel.

Signed-off-by: Tobin Feldman-Fitzthum <tobin at linux.vnet.ibm.com>
---
 src/qemu/qemu_capabilities.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 9c946339a3..c84ad0e831 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -2553,6 +2553,38 @@ virQEMUCapsProbeQMPGenericProps(virQEMUCapsPtr qemuCaps,
     return 0;
 }
 
+static int
+virQEMUCapsProbeQMPTCGState(virQEMUCapsPtr qemuCaps,
+                            qemuMonitorPtr mon)
+{
+    int nvalues;
+    char **values;
+    size_t i;
+    bool found = false;
+    /*
+     * As of version 2.10, QEMU can be built without the TCG.
+     * */
+    if (qemuCaps->version < 2010000)
+        return 0;
+    if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM))
+        return 0;
+    if ((nvalues = qemuMonitorGetObjectTypes(mon, &values)) < 0)
+        return -1;
+
+    for (i = 0; i < nvalues; i++) {
+        if (STREQ(values[i], "tcg-accel")) {
+            found = true;
+            break;
+        }
+    }
+
+    if (!found)
+        virQEMUCapsSet(qemuCaps, QEMU_CAPS_TCG_DISABLED);
+
+    virStringListFreeCount(values, nvalues);
+    return 0;
+}
+
 static int
 virQEMUCapsProbeQMPDevices(virQEMUCapsPtr qemuCaps,
                            qemuMonitorPtr mon)
-- 
2.20.1 (Apple Git-117)





More information about the libvir-list mailing list