On Tue, Jun 23, 2015 at 05:56:35PM +0200, Michael S. Tsirkin wrote:
> On Tue, Jun 23, 2015 at 04:51:00PM +0100, Daniel P. Berrange wrote:
> > On Tue, Jun 23, 2015 at 12:08:28PM -0300, Eduardo Habkost wrote:
> > > On Tue, Jun 23, 2015 at 02:32:00PM +0200, Andreas Färber wrote:
> > > > Am 08.06.2015 um 22:18 schrieb Jiri Denemark:
> > > > >> To help libvirt in the transition, a x86-cpu-model-dump script is 
> > > > >> provided,
> > > > >> that will generate a config file that can be loaded using 
> > > > >> -readconfig, based on
> > > > >> the -cpu and -machine options provided in the command-line.
> > > > > 
> > > > > Thanks Eduardo, I never was a big fan of moving (or copying) all the 
> > > > > CPU
> > > > > configuration data to libvirt, but now I think it actually makes 
> > > > > sense.
> > > > > We already have a partial copy of CPU model definitions in libvirt
> > > > > anyway, but as QEMU changes some CPU models in some machine types (and
> > > > > libvirt does not do that) we have no real control over the guest CPU
> > > > > configuration. While what we really want is full control to enforce
> > > > > stable guest ABI.
> > > > 
> > > > That sounds like FUD to me. Any concrete data points where QEMU does not
> > > > have a stable ABI for x86 CPUs? That's what we have the pc*-x.y machines
> > > > for.
> > > 
> > > What Jiri is saying that the CPUs change depending on -mmachine, not
> > > that the ABI is broken by a given machine.
> > > 
> > > The problem here is that libvirt needs to provide CPU models whose
> > > runnability does not depend on the machine-type. If users have a VM that
> > > is running in a host and the VM machine-type changes, the VM should be
> > > still runnable in that host. QEMU doesn't provide that, our CPU models
> > > may change when we introduce new machine-types, so we are giving them a
> > > mechanism that allows libvirt to implement the policy they need.
> > 
> > Expanding on that, but tieing the CPU model to the machine type, QEMU
> > has in turn effectively tied the machine type to the host hardware.
> > eg, switching to a newer machine type, may then prevent the guest
> > from being able to launch on the hardware that it was previously
> > able to run on, due to some new requirement of the CPU model associated
> > with the machine type.
> 
> So why not keep machine type stable?

There are many reasons to choose a particular machine type - for
example, to achieve migration compat between hosts with different
QEMU versions, or to enable access to some performance or bug
fix in the machine type in question. Users / apps need to be free
to make those decisions, without being restricted by changes in the
CPU model which may affect what hardware the machine type can be
used on. The current use of machine types for CPU model versioning
is placing users between a rock & hard place, giving them impossible
decisions about which bad behaviour/bug they're willing to accept.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|

Reply via email to