qemuExtDevicesInitPaths(virQEMUDriver *driver,
virDomainDef *def)
{
- if (def->ntpms > 0)
- return qemuExtTPMInitPaths(driver, def);
+ size_t i;
+
+ for (i = 0; i < def->ntpms; i++) {
+ virDomainTPMDef *tpm = def->tpms[i];
+
+ if (tpm->type == VIR_DOMAIN_TPM_TYPE_EMULATOR &&
+ qemuExtTPMInitPaths(driver, def, tpm) < 0)
+ return -1;
+ }
return 0;
}
virDomainObj *vm)
{
virDomainDef *def = vm->def;
+ size_t i;
if (qemuExtDevicesInitPaths(driver, def) < 0)
return -1;
- if (def->ntpms > 0 &&
- qemuExtTPMPrepareHost(driver, def) < 0)
- return -1;
+ for (i = 0; i < def->ntpms; i++) {
+ virDomainTPMDef *tpm = def->tpms[i];
+
+ if (tpm->type == VIR_DOMAIN_TPM_TYPE_EMULATOR &&
+ qemuExtTPMPrepareHost(driver, def, tpm) < 0)
+ return -1;
+ }
return 0;
}
qemuExtDevicesCleanupHost(virQEMUDriver *driver,
virDomainDef *def)
{
+ size_t i;
+
if (qemuExtDevicesInitPaths(driver, def) < 0)
return;
- if (def->ntpms > 0)
- qemuExtTPMCleanupHost(def);
+ for (i = 0; i < def->ntpms; i++) {
+ qemuExtTPMCleanupHost(def->tpms[i]);
+ }
}
}
}
- if (def->ntpms > 0 && qemuExtTPMStart(driver, vm, incomingMigration) < 0)
- return -1;
+ for (i = 0; i < def->ntpms; i++) {
+ virDomainTPMDef *tpm = def->tpms[i];
+
+ if (tpm->type == VIR_DOMAIN_TPM_TYPE_EMULATOR &&
+ qemuExtTPMStart(driver, vm, tpm, incomingMigration) < 0)
+ return -1;
+ }
for (i = 0; i < def->nnets; i++) {
virDomainNetDef *net = def->nets[i];
qemuExtVhostUserGPUStop(driver, vm, video);
}
- if (def->ntpms > 0)
- qemuExtTPMStop(driver, vm);
+ for (i = 0; i < def->ntpms; i++) {
+ if (def->tpms[i]->type == VIR_DOMAIN_TPM_TYPE_EMULATOR)
+ qemuExtTPMStop(driver, vm);
+ }
for (i = 0; i < def->nnets; i++) {
virDomainNetDef *net = def->nets[i];
return -1;
}
- if (def->ntpms > 0 &&
- qemuExtTPMSetupCgroup(driver, def, cgroup) < 0)
- return -1;
+ for (i = 0; i < def->ntpms; i++) {
+ if (def->tpms[i]->type == VIR_DOMAIN_TPM_TYPE_EMULATOR &&
+ qemuExtTPMSetupCgroup(driver, def, cgroup) < 0)
+ return -1;
+ }
for (i = 0; i < def->nfss; i++) {
virDomainFSDef *fs = def->fss[i];
int
qemuExtTPMInitPaths(virQEMUDriver *driver,
- virDomainDef *def)
+ virDomainDef *def,
+ virDomainTPMDef *tpm)
{
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
- size_t i;
-
- for (i = 0; i < def->ntpms; i++) {
- if (def->tpms[i]->type != VIR_DOMAIN_TPM_TYPE_EMULATOR)
- continue;
-
- return qemuTPMEmulatorInitPaths(def->tpms[i],
- cfg->swtpmStorageDir,
- cfg->swtpmLogDir,
- def->name,
- def->uuid);
- }
- return 0;
+ return qemuTPMEmulatorInitPaths(tpm,
+ cfg->swtpmStorageDir,
+ cfg->swtpmLogDir,
+ def->name,
+ def->uuid);
}
int
qemuExtTPMPrepareHost(virQEMUDriver *driver,
- virDomainDef *def)
+ virDomainDef *def,
+ virDomainTPMDef *tpm)
{
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
g_autofree char *shortName = virDomainDefGetShortName(def);
- size_t i;
if (!shortName)
return -1;
- for (i = 0; i < def->ntpms; i++) {
- if (def->tpms[i]->type != VIR_DOMAIN_TPM_TYPE_EMULATOR)
- continue;
-
- return qemuTPMEmulatorPrepareHost(def->tpms[i], cfg->swtpmLogDir,
- cfg->swtpm_user,
- cfg->swtpm_group,
- cfg->swtpmStateDir, cfg->user,
- shortName);
- }
-
- return 0;
+ return qemuTPMEmulatorPrepareHost(tpm,
+ cfg->swtpmLogDir,
+ cfg->swtpm_user,
+ cfg->swtpm_group,
+ cfg->swtpmStateDir,
+ cfg->user,
+ shortName);
}
void
-qemuExtTPMCleanupHost(virDomainDef *def)
+qemuExtTPMCleanupHost(virDomainTPMDef *tpm)
{
- size_t i;
-
- for (i = 0; i < def->ntpms; i++) {
- if (def->tpms[i]->type != VIR_DOMAIN_TPM_TYPE_EMULATOR)
- continue;
-
- qemuTPMEmulatorCleanupHost(def->tpms[i]);
- }
+ qemuTPMEmulatorCleanupHost(tpm);
}
int
qemuExtTPMStart(virQEMUDriver *driver,
virDomainObj *vm,
+ virDomainTPMDef *tpm,
bool incomingMigration)
{
g_autofree char *shortName = virDomainDefGetShortName(vm->def);
- size_t i;
if (!shortName)
return -1;
- for (i = 0; i < vm->def->ntpms; i++) {
- if (vm->def->tpms[i]->type != VIR_DOMAIN_TPM_TYPE_EMULATOR)
- continue;
-
- return qemuTPMEmulatorStart(driver, vm, shortName, vm->def->tpms[i],
- incomingMigration);
- }
-
- return 0;
+ return qemuTPMEmulatorStart(driver, vm, shortName, tpm, incomingMigration);
}
{
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
g_autofree char *shortName = virDomainDefGetShortName(vm->def);
- size_t i;
if (!shortName)
return;
- for (i = 0; i < vm->def->ntpms; i++) {
- if (vm->def->tpms[i]->type != VIR_DOMAIN_TPM_TYPE_EMULATOR)
- continue;
-
- qemuTPMEmulatorStop(cfg->swtpmStateDir, shortName);
- qemuSecurityCleanupTPMEmulator(driver, vm);
- }
-
- return;
+ qemuTPMEmulatorStop(cfg->swtpmStateDir, shortName);
+ qemuSecurityCleanupTPMEmulator(driver, vm);
}
{
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
g_autofree char *shortName = virDomainDefGetShortName(def);
- size_t i;
if (!shortName)
return -1;
- for (i = 0; i < def->ntpms; i++) {
- if (def->tpms[i]->type != VIR_DOMAIN_TPM_TYPE_EMULATOR)
- continue;
-
- if (qemuExtTPMEmulatorSetupCgroup(cfg->swtpmStateDir, shortName, cgroup) < 0)
- return -1;
- }
+ if (qemuExtTPMEmulatorSetupCgroup(cfg->swtpmStateDir, shortName, cgroup) < 0)
+ return -1;
return 0;
}
#include "vircommand.h"
int qemuExtTPMInitPaths(virQEMUDriver *driver,
- virDomainDef *def)
+ virDomainDef *def,
+ virDomainTPMDef *tpm)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
G_GNUC_WARN_UNUSED_RESULT;
int qemuExtTPMPrepareHost(virQEMUDriver *driver,
- virDomainDef *def)
+ virDomainDef *def,
+ virDomainTPMDef *tpm)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
+ ATTRIBUTE_NONNULL(3)
G_GNUC_WARN_UNUSED_RESULT;
-void qemuExtTPMCleanupHost(virDomainDef *def)
+void qemuExtTPMCleanupHost(virDomainTPMDef *tpm)
ATTRIBUTE_NONNULL(1);
int qemuExtTPMStart(virQEMUDriver *driver,
virDomainObj *vm,
+ virDomainTPMDef *def,
bool incomingMigration)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
+ ATTRIBUTE_NONNULL(3)
G_GNUC_WARN_UNUSED_RESULT;
void qemuExtTPMStop(virQEMUDriver *driver,