[libvirt] Question about the host-model CPU mode

Jiri Denemark jdenemar at redhat.com
Fri Oct 20 12:50:56 UTC 2017

On Fri, Oct 20, 2017 at 13:37:42 +0200, David Hildenbrand wrote:
> On 20.10.2017 13:09, Marc Hartmayer wrote:
> > we recently encountered the problem that the 'host-model' [1] has to be
> > related to the machine type of a domain. We have following problem:
> > 
> >    Let's assume we've a z13 system with a QEMU 2.9 and we define a
> >    domain using the default s390-virtio-ccw machine together with the
> >    host-model CPU mode [1]. The definition will have the machine
> >    expanded to s390-virtio-ccw-2.9 but retain the host-model CPU mode
> >    in the domain definition. In a next step we upgrade to QEMU 2.10
> >    (first version to recognize z14). Everything is still fine, even
> >    though the machine runs in 2.9 compatibility mode. Finally we
> >    upgrade to a z14. As a consequence it is not possible to start the
> >    domain anymore as the machine type doesn't support our CPU host
> >    model (which is expanded at start time of the domain).
> Yes, the host model may vary depending on QEMU version and to some
> degree also on compatibility machines (although I always try to push
> people to not introduce any new such stuff).
> Quoting for the libvirt documentation: https://libvirt.org/formatdomain.html
> "host-model
>     The host-model mode is essentially a shortcut to copying host CPU
> definition from capabilities XML into domain XML. Since the CPU
> definition is copied just before starting a domain, exactly the same XML
> can be used on different hosts while still providing the best guest CPU
> each host supports."
> You're telling me that that copying does not happen, which seems to be
> the problematic part about this in my opinion.
> So I am not sure if probing anything else (as you noted below) is the
> correct thing to do. Copy it and you have a migration_safe and even
> static version of the _current_ host CPU.

The thing is libvirt calls query-cpu-model-expansion to check what the
host CPU is. This 'host-model' CPU is replaced with the probed CPU model
when a domain starts. The problem described by Marc is that the probed
CPU model cannot be used universally with all machine types. So starting
a domain on such host with machine type s390-virtio-ccw-2.10 works, but
a domain with machine type s390-virtio-ccw-2.9 fails to start with the
same probed CPU model.


More information about the libvir-list mailing list