Check for QMP query-tpm-models and set a capability flag. Do not use
this QMP command if it is not supported.

Signed-off-by: Stefan Berger <stef...@linux.vnet.ibm.com>

---
 src/qemu/qemu_capabilities.c |    8 ++++++++
 src/qemu/qemu_capabilities.h |    1 +
 2 files changed, 9 insertions(+)

Index: libvirt/src/qemu/qemu_capabilities.h
===================================================================
--- libvirt.orig/src/qemu/qemu_capabilities.h
+++ libvirt/src/qemu/qemu_capabilities.h
@@ -179,6 +179,7 @@ enum virQEMUCapsFlags {
     QEMU_CAPS_MACHINE_USB_OPT    = 137, /* -machine xxx,usb=on/off */
     QEMU_CAPS_DEVICE_TPM_PASSTHROUGH = 138, /* -tpmdev passthrough */
     QEMU_CAPS_DEVICE_TPM_TIS     = 139, /* -device tpm_tis */
+    QEMU_CAPS_TPM_MODELS         = 140, /* query-tpm-models QMP command */

QEMU_CAPS_LAST, /* this must always be the last item */
 };
Index: libvirt/src/qemu/qemu_capabilities.c
===================================================================
--- libvirt.orig/src/qemu/qemu_capabilities.c
+++ libvirt/src/qemu/qemu_capabilities.c
@@ -220,6 +220,8 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAS
               "machine-usb-opt",
               "tpm-passthrough",
               "tpm-tis",
+
+              "query-tpm-models", /* 140 */
     );

 struct _virQEMUCaps {
@@ -1962,6 +1964,8 @@ virQEMUCapsProbeQMPCommands(virQEMUCapsP
             virQEMUCapsSet(qemuCaps, QEMU_CAPS_ADD_FD);
         else if (STREQ(name, "nbd-server-start"))
             virQEMUCapsSet(qemuCaps, QEMU_CAPS_NBD_SERVER);
+        else if (STREQ(name, "query-tpm-models"))
+            virQEMUCapsSet(qemuCaps, QEMU_CAPS_TPM_MODELS);
         VIR_FREE(name);
     }
     VIR_FREE(commands);
@@ -2144,6 +2148,10 @@ virQEMUCapsProbeQMPTPM(virQEMUCapsPtr qe
 {
     int nentries, i;
     char **entries = NULL;
+
+    if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_TPM_MODELS))
+        return 0;
+
     if ((nentries = qemuMonitorGetTPMModels(mon, &entries)) < 0)
         return -1;

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to