On Fri, Dec 15, 2023 at 04:12:00PM -0600, Jonathon Jongsma wrote:
As described in detail in the commit "cpu_map: add canonical
names to
existing CPU models", the unversioned CPU model names are not
migration-safe. If qemu makes the anticipated changes to CPU alias
mapping, an unversioned CPU model may be represented by different
underlying CPU models on different hosts. To avoid being susceptible to
this issue, use the new 'canonical_name' property of the CPU definition
to always specify a specific versioned CPU model version to qemu rather
than using CPU model aliases.
The CPU models *are* migration safe because libvirt /always/ uses
the versioned machine type name.
This canonical name is only used in the qemu backend and is not
exposed
to the user in anyway. The libvirt CPU configuration will continue to
use existing unversioned model names in the domain xml for continuity.
But internally we will translate these to a specific version.
Signed-off-by: Jonathon Jongsma <jjongsma(a)redhat.com>
---
src/qemu/qemu_command.c | 5 ++++-
tests/qemuxml2argvdata/cpu-Haswell-noTSX.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/cpu-Haswell.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/cpu-Haswell2.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/cpu-Haswell3.x86_64-latest.args | 2 +-
.../cpu-Icelake-Server-pconfig.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/cpu-cache-disable3.x86_64-latest.args | 2 +-
.../cpu-check-default-partial.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/cpu-fallback.x86_64-5.2.0.args | 2 +-
tests/qemuxml2argvdata/cpu-fallback.x86_64-8.0.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-cmt.x86_64-latest.args | 2 +-
.../cpu-host-model-fallback-kvm.x86_64-4.2.0.args | 2 +-
.../cpu-host-model-fallback-kvm.x86_64-5.0.0.args | 2 +-
.../cpu-host-model-fallback-kvm.x86_64-5.1.0.args | 2 +-
.../cpu-host-model-fallback-kvm.x86_64-5.2.0.args | 2 +-
.../cpu-host-model-fallback-kvm.x86_64-6.0.0.args | 2 +-
.../cpu-host-model-fallback-kvm.x86_64-6.1.0.args | 2 +-
.../cpu-host-model-fallback-kvm.x86_64-6.2.0.args | 2 +-
.../cpu-host-model-fallback-kvm.x86_64-7.0.0.args | 2 +-
.../cpu-host-model-fallback-kvm.x86_64-7.1.0.args | 2 +-
.../cpu-host-model-fallback-kvm.x86_64-7.2.0.args | 2 +-
.../cpu-host-model-fallback-kvm.x86_64-8.0.0.args | 2 +-
.../cpu-host-model-fallback-kvm.x86_64-8.1.0.args | 2 +-
.../cpu-host-model-fallback-kvm.x86_64-latest.args | 2 +-
.../cpu-host-model-fallback-tcg.x86_64-7.2.0.args | 2 +-
.../cpu-host-model-fallback-tcg.x86_64-8.0.0.args | 2 +-
.../cpu-host-model-fallback-tcg.x86_64-8.1.0.args | 2 +-
.../cpu-host-model-fallback-tcg.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-4.2.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-5.0.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-5.1.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-5.2.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-6.0.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-6.1.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-6.2.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-7.0.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-7.1.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-7.2.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-8.0.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-8.1.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-kvm.x86_64-latest.args | 2 +-
.../cpu-host-model-nofallback-kvm.x86_64-4.2.0.args | 2 +-
.../cpu-host-model-nofallback-kvm.x86_64-5.0.0.args | 2 +-
.../cpu-host-model-nofallback-kvm.x86_64-5.1.0.args | 2 +-
.../cpu-host-model-nofallback-kvm.x86_64-5.2.0.args | 2 +-
.../cpu-host-model-nofallback-kvm.x86_64-6.0.0.args | 2 +-
.../cpu-host-model-nofallback-kvm.x86_64-6.1.0.args | 2 +-
.../cpu-host-model-nofallback-kvm.x86_64-6.2.0.args | 2 +-
.../cpu-host-model-nofallback-kvm.x86_64-7.0.0.args | 2 +-
.../cpu-host-model-nofallback-kvm.x86_64-7.1.0.args | 2 +-
.../cpu-host-model-nofallback-kvm.x86_64-7.2.0.args | 2 +-
.../cpu-host-model-nofallback-kvm.x86_64-8.0.0.args | 2 +-
.../cpu-host-model-nofallback-kvm.x86_64-8.1.0.args | 2 +-
.../cpu-host-model-nofallback-kvm.x86_64-latest.args | 2 +-
.../cpu-host-model-nofallback-tcg.x86_64-7.2.0.args | 2 +-
.../cpu-host-model-nofallback-tcg.x86_64-8.0.0.args | 2 +-
.../cpu-host-model-nofallback-tcg.x86_64-8.1.0.args | 2 +-
.../cpu-host-model-nofallback-tcg.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-tcg.x86_64-7.2.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-tcg.x86_64-8.0.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-tcg.x86_64-8.1.0.args | 2 +-
tests/qemuxml2argvdata/cpu-host-model-tcg.x86_64-latest.args | 2 +-
.../cpu-host-model-vendor.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/cpu-minimum1.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/cpu-minimum2.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/cpu-nofallback.x86_64-8.0.0.args | 2 +-
.../cpu-phys-bits-emulate2.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/cpu-strict1.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/cpu-translation.x86_64-latest.args | 2 +-
tests/qemuxml2argvdata/cpu-tsc-frequency.x86_64-latest.args | 2 +-
70 files changed, 73 insertions(+), 70 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 54fb8220e8..be9cbe4915 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -6267,7 +6267,10 @@ qemuBuildCpuModelArgStr(virQEMUDriver *driver,
break;
case VIR_CPU_MODE_CUSTOM:
- virBufferAdd(buf, cpu->model, -1);
+ if (cpu->canonical_model)
+ virBufferAdd(buf, cpu->canonical_model, -1);
+ else
+ virBufferAdd(buf, cpu->model, -1);
break;
This isn't checking whether QEMU supports the versioned CPU
model or not.
QEMU has had 'Haswell-noTSX' long before 'Haswell-v2' was
added.
Can you check what version QEMU introduced CPU versions,
and whether that's /equal or older/ than our minimum
QEMU version. Assuming it is, then record this in the
commit message as justification for why this doesn't
break compatibility with launching old QEMU.
With regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|