109 lines
3.2 KiB
Diff
109 lines
3.2 KiB
Diff
From 6361cb03d2bada54287e20b979e26e3b3a7c793d Mon Sep 17 00:00:00 2001
|
|
Message-ID: <6361cb03d2bada54287e20b979e26e3b3a7c793d.1752837271.git.jdenemar@redhat.com>
|
|
From: Martin Kletzander <mkletzan@redhat.com>
|
|
Date: Thu, 17 Jul 2025 11:54:22 +0200
|
|
Subject: [PATCH] qemu_tpm: Extract per-TPM functionality from
|
|
qemuTPMDomainHasSharedStorage
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
This way we can do the check for a particular TPM also elsewhere in the
|
|
code, especially in places where we're dealing with only one TPM. The
|
|
semantics is changed a little bit in a way that the function will check
|
|
all the TPMs as opposed to stopping on the first one which is of the
|
|
emulator type, but since a domain can currently only have one of these
|
|
it was not an issue.
|
|
|
|
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
|
|
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
|
|
(cherry picked from commit 6c6b6b2b4133f3d6be643416cc3756d940d22ddc)
|
|
|
|
Resolves: https://issues.redhat.com/browse/RHEL-80155
|
|
|
|
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
|
|
---
|
|
src/qemu/qemu_tpm.c | 59 ++++++++++++++++++++++++++-------------------
|
|
1 file changed, 34 insertions(+), 25 deletions(-)
|
|
|
|
diff --git a/src/qemu/qemu_tpm.c b/src/qemu/qemu_tpm.c
|
|
index 8c104ab1b3..855d732e60 100644
|
|
--- a/src/qemu/qemu_tpm.c
|
|
+++ b/src/qemu/qemu_tpm.c
|
|
@@ -205,6 +205,40 @@ qemuTPMEmulatorCreateStorage(virDomainTPMDef *tpm,
|
|
}
|
|
|
|
|
|
+static bool
|
|
+qemuTPMHasSharedStorage(const virQEMUDriverConfig *cfg,
|
|
+ const virDomainTPMDef *tpm)
|
|
+{
|
|
+ switch (tpm->type) {
|
|
+ case VIR_DOMAIN_TPM_TYPE_EMULATOR:
|
|
+ return virFileIsSharedFS(tpm->data.emulator.source_path,
|
|
+ cfg->sharedFilesystems) == 1;
|
|
+ case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH:
|
|
+ case VIR_DOMAIN_TPM_TYPE_EXTERNAL:
|
|
+ case VIR_DOMAIN_TPM_TYPE_LAST:
|
|
+ break;
|
|
+ }
|
|
+
|
|
+ return false;
|
|
+}
|
|
+
|
|
+
|
|
+bool
|
|
+qemuTPMDomainHasSharedStorage(virQEMUDriver *driver,
|
|
+ virDomainDef *def)
|
|
+{
|
|
+ g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
|
|
+ size_t i;
|
|
+
|
|
+ for (i = 0; i < def->ntpms; i++) {
|
|
+ if (qemuTPMHasSharedStorage(cfg, def->tpms[i]))
|
|
+ return true;
|
|
+ }
|
|
+
|
|
+ return false;
|
|
+}
|
|
+
|
|
+
|
|
/**
|
|
* qemuTPMEmulatorDeleteStorage:
|
|
* @tpm: TPM definition
|
|
@@ -1218,31 +1252,6 @@ qemuTPMEmulatorStart(virQEMUDriver *driver,
|
|
}
|
|
|
|
|
|
-bool
|
|
-qemuTPMDomainHasSharedStorage(virQEMUDriver *driver,
|
|
- virDomainDef *def)
|
|
-{
|
|
- g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
|
|
- size_t i;
|
|
-
|
|
- for (i = 0; i < def->ntpms; i++) {
|
|
- virDomainTPMDef *tpm = def->tpms[i];
|
|
-
|
|
- switch (tpm->type) {
|
|
- case VIR_DOMAIN_TPM_TYPE_EMULATOR:
|
|
- return virFileIsSharedFS(tpm->data.emulator.source_path,
|
|
- cfg->sharedFilesystems) == 1;
|
|
- case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH:
|
|
- case VIR_DOMAIN_TPM_TYPE_EXTERNAL:
|
|
- case VIR_DOMAIN_TPM_TYPE_LAST:
|
|
- break;
|
|
- }
|
|
- }
|
|
-
|
|
- return false;
|
|
-}
|
|
-
|
|
-
|
|
bool
|
|
qemuTPMCanMigrateSharedStorage(virDomainDef *def)
|
|
{
|
|
--
|
|
2.50.1
|