Probe the bhyve binary to determine whether it supports TPM devices.

Signed-off-by: Roman Bogorodskiy <[email protected]>
---
 src/bhyve/bhyve_capabilities.c | 15 +++++++++++++++
 src/bhyve/bhyve_capabilities.h |  1 +
 2 files changed, 16 insertions(+)

diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c
index b321633b23..1fbee71205 100644
--- a/src/bhyve/bhyve_capabilities.c
+++ b/src/bhyve/bhyve_capabilities.c
@@ -357,6 +357,18 @@ bhyveProbeCapsRctl(unsigned int *caps)
     return;
 }
 
+
+static int
+bhyveProbeCapsLpcTpm(unsigned int *caps, char *binary)
+{
+    return bhyveProbeCapsDeviceHelper(caps, binary,
+                                      "-l",
+                                      "tpm",
+                                      "bhyve: invalid lpc device configuration 
'tpm'",
+                                      BHYVE_CAP_LPC_TPM);
+}
+
+
 int
 virBhyveProbeCaps(unsigned int *caps)
 {
@@ -381,6 +393,9 @@ virBhyveProbeCaps(unsigned int *caps)
 
     bhyveProbeCapsRctl(caps);
 
+    if ((ret = bhyveProbeCapsLpcTpm(caps, binary)))
+        goto out;
+
  out:
     VIR_FREE(binary);
     return ret;
diff --git a/src/bhyve/bhyve_capabilities.h b/src/bhyve/bhyve_capabilities.h
index 0302b68e22..9b3163b9ef 100644
--- a/src/bhyve/bhyve_capabilities.h
+++ b/src/bhyve/bhyve_capabilities.h
@@ -58,6 +58,7 @@ typedef enum {
     BHYVE_CAP_ACPI = 1 << 12,
     BHYVE_CAP_NUMA = 1 << 13,
     BHYVE_CAP_RCTL = 1 << 14,
+    BHYVE_CAP_LPC_TPM = 1 << 15,
 } virBhyveCapsFlags;
 
 int virBhyveProbeGrubCaps(virBhyveGrubCapsFlags *caps);
-- 
2.55.0

Reply via email to