diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index e2e76e4dd8..b8764eacd8 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1516,12 +1516,19 @@ virQEMUCapsHostCPUDataCopy(virQEMUCapsHostCPUDataPtr dst, static void -virQEMUCapsHostCPUDataClear(virQEMUCapsHostCPUDataPtr cpuData) +virQEMUCapsHostCPUDataClearModels(virQEMUCapsHostCPUDataPtr cpuData) { - qemuMonitorCPUModelInfoFree(cpuData->info); virCPUDefFree(cpuData->reported); virCPUDefFree(cpuData->migratable); virCPUDefFree(cpuData->full); +} + + +static void +virQEMUCapsHostCPUDataClear(virQEMUCapsHostCPUDataPtr cpuData) +{ + qemuMonitorCPUModelInfoFree(cpuData->info); + virQEMUCapsHostCPUDataClearModels(cpuData); memset(cpuData, 0, sizeof(*cpuData)); } @@ -2834,6 +2841,16 @@ virQEMUCapsNewHostCPUModel(void) } +void +virQEMUCapsFreeHostCPUModel(virQEMUCapsPtr qemuCaps, + virDomainVirtType type) +{ + virQEMUCapsHostCPUDataPtr cpuData = virQEMUCapsGetHostCPUData(qemuCaps, type); + + virQEMUCapsHostCPUDataClearModels(cpuData); +} + + void virQEMUCapsInitHostCPUModel(virQEMUCapsPtr qemuCaps, virArch hostArch, diff --git a/src/qemu/qemu_capspriv.h b/src/qemu/qemu_capspriv.h index 0199501c93..fea039ef3a 100644 --- a/src/qemu/qemu_capspriv.h +++ b/src/qemu/qemu_capspriv.h @@ -56,6 +56,10 @@ void virQEMUCapsSetArch(virQEMUCapsPtr qemuCaps, virArch arch); +void +virQEMUCapsFreeHostCPUModel(virQEMUCapsPtr qemuCaps, + virDomainVirtType type); + void virQEMUCapsInitHostCPUModel(virQEMUCapsPtr qemuCaps, virArch hostArch, diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index a6a40e273e..61c7ae59aa 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -388,6 +388,9 @@ testUpdateQEMUCaps(const struct testInfo *info, if (testAddCPUModels(info->qemuCaps, info->skipLegacyCPUs) < 0) goto cleanup; + virQEMUCapsFreeHostCPUModel(info->qemuCaps, VIR_DOMAIN_VIRT_KVM); + virQEMUCapsFreeHostCPUModel(info->qemuCaps, VIR_DOMAIN_VIRT_QEMU); + virQEMUCapsInitHostCPUModel(info->qemuCaps, caps->host.arch, VIR_DOMAIN_VIRT_KVM); virQEMUCapsInitHostCPUModel(info->qemuCaps, caps->host.arch,