]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Implement chardev source setup for tpm
authorPeter Krempa <pkrempa@redhat.com>
Wed, 8 Dec 2021 09:07:44 +0000 (10:07 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 10 Dec 2021 15:37:42 +0000 (16:37 +0100)
Add handling to qemuDomainDeviceBackendChardevForeachOne and callbacks
so that we can later use 'qemuBuildChardevCommand' for TPM devices.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_domain.c
src/qemu/qemu_process.c
tests/qemuxml2argvtest.c

index 475f2f536e199839402fe47d682295b2906706ed..5607d6f581f0a9bbb17057b60a42a51ea3a71c4a 100644 (file)
@@ -11530,6 +11530,19 @@ qemuDomainDeviceBackendChardevForeachOne(virDomainDeviceDef *dev,
 
         return cb(dev, dev->data.rng->source.chardev, opaque);
 
+    case VIR_DOMAIN_DEVICE_TPM:
+        switch ((virDomainTPMBackendType) dev->data.tpm->type) {
+        case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH:
+            return cb(dev, dev->data.tpm->data.passthrough.source, opaque);
+
+        case VIR_DOMAIN_TPM_TYPE_EMULATOR:
+            return cb(dev, dev->data.tpm->data.emulator.source, opaque);
+
+        case VIR_DOMAIN_TPM_TYPE_LAST:
+            return 0;
+        }
+        return 0;
+
     case VIR_DOMAIN_DEVICE_LEASE:
     case VIR_DOMAIN_DEVICE_FS:
     case VIR_DOMAIN_DEVICE_INPUT:
@@ -11543,7 +11556,6 @@ qemuDomainDeviceBackendChardevForeachOne(virDomainDeviceDef *dev,
     case VIR_DOMAIN_DEVICE_NONE:
     case VIR_DOMAIN_DEVICE_MEMBALLOON:
     case VIR_DOMAIN_DEVICE_NVRAM:
-    case VIR_DOMAIN_DEVICE_TPM:
     case VIR_DOMAIN_DEVICE_PANIC:
     case VIR_DOMAIN_DEVICE_LAST:
     case VIR_DOMAIN_DEVICE_MEMORY:
index f9580c1b179d45b6bd965e96b1ca4d4d65bf1042..4963ce383f2f8856f1eb4ad855fae05e2b8fb8e8 100644 (file)
@@ -6891,6 +6891,10 @@ qemuProcessPrepareHostBackendChardevOne(virDomainDeviceDef *dev,
              * vhost-sockets for network devices */
             return 0;
         }
+
+        /* TPMs FD passing setup is special and handled separately */
+        if (dev->type == VIR_DOMAIN_DEVICE_TPM)
+            return 0;
     }
 
     switch ((virDomainChrType) chardev->type) {
index ac4b532ef11b3ec4419fbeabae5ea7d033c4d496..615f45376c0c32e60f010e0ca89572258dc9fb5e 100644 (file)
@@ -394,6 +394,10 @@ testPrepareHostBackendChardevOne(virDomainDeviceDef *dev,
              * vhost-sockets for network devices */
             return 0;
         }
+
+        /* TPMs FD passing setup is special and handled separately */
+        if (dev->type == VIR_DOMAIN_DEVICE_TPM)
+            return 0;
     }
 
     switch ((virDomainChrType) chardev->type) {