
On Thu, 2019-10-03 at 16:00 +0200, Jiri Denemark wrote:
When starting a domain without a CPU model specified in the domain XML, QEMU will choose a default one. Which is fine unless the domain gets migrated to another host because libvirt doesn't perform any CPU ABI checks and the virtual CPU provided by QEMU on the destination host can differ from the one on the source host.
With QEMU 4.2.0 we can probe for the default CPU model used by QEMU for a particular machine type and store it in the domain XML. This way the chosen CPU model is more visible to users and libvirt will make sure the guest will see the exact same CPU after migration.
https://bugzilla.redhat.com/show_bug.cgi?id=1598151 https://bugzilla.redhat.com/show_bug.cgi?id=1598162
Unfortunately this will break all ppc64 guests that have been defined without specifying a CPU model, because it will result in something like <cpu mode='custom' match='exact' check='partial'> <model fallback='allow'>power8</model> </cpu> being added to the domain XML, which in turn at runtime will cause error: internal error: Unknown CPU model power8 For a while, QEMU has been reporting (and accepting) CPU models for ppc64 guests as lowercase strings, but historically they were all uppercase and our CPU map, which the user-provided CPU model is validated against, still contains those variants. For the record, our documentation[1] recommends using something like <cpu mode='host-model'> <model>power8</model> </cpu> to obtain a POWER8 CPU that can be safely migrated back and forth between POWER8 and POWER9 machines, but we can't assume everyone is following that recommendation. [1] https://libvirt.org/formatdomain.html#elementsCPU -- Andrea Bolognani / Red Hat / Virtualization