From: Jiri Denemark <jdenemar@redhat.com> Since virCPUDefFilterFeatures never fails, we can use it for in-place modifications instead of modifying a temporary virCPUDef copy. Signed-off-by: Jiri Denemark <jdenemar@redhat.com> --- src/qemu/qemu_domain.c | 26 ++++++-------------------- src/qemu/qemu_domain.h | 2 +- src/qemu/qemu_process.c | 4 ++-- 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 227eee3646..0c0ac4d82d 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -9633,7 +9633,7 @@ qemuDomainUpdateCPU(virDomainObj *vm, */ void qemuDomainFixupCPUs(virDomainObj *vm, - virCPUDef **origCPU) + virCPUDef *origCPU) { virArch arch = vm->def->os.arch; @@ -9649,28 +9649,14 @@ qemuDomainFixupCPUs(virDomainObj *vm, * we asked for or libvirt was too old to mess up the translation from * host-model. */ - if (!*origCPU) + if (!origCPU) return; - if (virCPUDefFindFeature(vm->def->cpu, "cmt")) { - g_autoptr(virCPUDef) fixedCPU = virCPUDefCopyWithoutModel(vm->def->cpu); + if (virCPUDefFindFeature(vm->def->cpu, "cmt")) + virCPUDefFilterFeatures(vm->def->cpu, virQEMUCapsCPUFilterFeatures, &arch); - virCPUDefCopyModelFilter(fixedCPU, vm->def->cpu, false, - virQEMUCapsCPUFilterFeatures, &arch); - - virCPUDefFree(vm->def->cpu); - vm->def->cpu = g_steal_pointer(&fixedCPU); - } - - if (virCPUDefFindFeature(*origCPU, "cmt")) { - g_autoptr(virCPUDef) fixedOrig = virCPUDefCopyWithoutModel(*origCPU); - - virCPUDefCopyModelFilter(fixedOrig, *origCPU, false, - virQEMUCapsCPUFilterFeatures, &arch); - - virCPUDefFree(*origCPU); - *origCPU = g_steal_pointer(&fixedOrig); - } + if (virCPUDefFindFeature(origCPU, "cmt")) + virCPUDefFilterFeatures(origCPU, virQEMUCapsCPUFilterFeatures, &arch); } diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index fe4ba4fa15..3396f929fd 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -997,7 +997,7 @@ qemuDomainUpdateCPU(virDomainObj *vm, void qemuDomainFixupCPUs(virDomainObj *vm, - virCPUDef **origCPU); + virCPUDef *origCPU); char * qemuDomainGetMachineName(virDomainObj *vm); diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 17eac5772b..330519fd2e 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -8695,7 +8695,7 @@ qemuProcessStartWithMemoryState(virConnectPtr conn, * the CPU definitions. */ if (cookie) - qemuDomainFixupCPUs(vm, &cookie->cpu); + qemuDomainFixupCPUs(vm, cookie->cpu); if (cookie && !cookie->slirpHelper) priv->disableSlirp = true; @@ -9517,7 +9517,7 @@ qemuProcessRefreshCPU(virQEMUDriver *driver, * case the host-model is known to not contain features which QEMU * doesn't know about. */ - qemuDomainFixupCPUs(vm, &priv->origCPU); + qemuDomainFixupCPUs(vm, priv->origCPU); } return 0; -- 2.51.0