All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: Chao Peng <chao.p.peng@linux.intel.com>
Cc: qemu-devel@nongnu.org, "Tian, Kevin" <kevin.tian@intel.com>
Subject: Re: [Qemu-devel] change x86 default machine type to Q35?
Date: Wed, 5 Jul 2017 12:04:31 +0100	[thread overview]
Message-ID: <20170705110431.GE22008@redhat.com> (raw)
In-Reply-To: <1499237876.3041.4.camel@linux.intel.com>

On Wed, Jul 05, 2017 at 02:57:56PM +0800, Chao Peng wrote:
> Hi,
>  
> Q35 has been in QEMU for quite a while. Compared to the current default
> i440FX, Q35 is probably not that mature and not widely used, however in
> some case, Q35 has advantages, for example, in supporting new features.
> For instance, we have some features require PCI-e support which is only
> available on Q35 and some others need it for EFI support. It is of
> course not necessary to change it as the default but if more and more
> features have dependencies on Q35 because of requiring much more modern
> features then I think it may be worth to do so. In such case we can have
> more people to use it and find problems we may know or not know. There
> are certainly some drawbacks:
> -        Compatibility: current code or script may need adjustment
> -        Quality: we may suffer more bugs on Q35
> 
> Any thoughts?

Changing the default machine will certainly break a large number of
apps / scripts / users of QEMU because it completely changes the ABI
exposed to guest OS. It will also invalidate documentation about
QEMU usage across countless websites / source repos.

If you're lucky QEMU may immediately fail to start because a command
line argument refers to some property / device that exists by default
in PIIX, but not in Q35.

If you're unlucky QEMU will successfully start, but expose a different
ABI to the guest. This will cause Windows guests to trigger license
reactivation. It will cause QEMU to fail to load any previously saved
snapshots, and will fail to process incoming migration.

Then there is the fact that some guest OS may not work with the chipset
exposed by Q35.

While you can say people should just add '-M pc' that isn't a nice
user experiance, because it makes the assumption that people actually
understand what caused their breakage. When the incompatibilities
arise the error messages are unlikely to give any hint to users that
the problems are caused by the machine type change. So unless someone
is very familiar with debugging QEMU, they're not going to realize
that '-M pc' will fix their problem. Documentation assuming the old
defaults will live on forever, meaning users suffer from the change
in defaults for years, probably decades into the future.

All these problems can be avoided if the change in defaults in done by
higher level applications. For example, OpenStack/oVirt know what guest
OS is being deployed, so they can intelligently choose between either
Q35 or PIIX4, depending on which the guest is known to work with. These
apps will also have a persistent record of full guest config (via libvirt)
to the change in defaults won't risk breaking existing deployed guests,
or their snapshots & ensure migration continues to work.

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 :|

  parent reply	other threads:[~2017-07-05 11:04 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-05  6:57 [Qemu-devel] change x86 default machine type to Q35? Chao Peng
2017-07-05  8:14 ` Thomas Huth
2017-07-05  9:32   ` Marcel Apfelbaum
2017-07-07 13:39     ` Eduardo Habkost
2017-07-07 15:17       ` Michael S. Tsirkin
2017-07-07 18:03         ` Eduardo Habkost
2017-07-10  7:42           ` Marcel Apfelbaum
2017-07-10  9:45             ` Paolo Bonzini
2017-07-10 13:59             ` Eduardo Habkost
2017-07-10 16:45               ` Michael S. Tsirkin
2017-07-10 17:47                 ` Eduardo Habkost
2017-07-11  7:48                   ` Thomas Huth
2017-07-11  8:01                     ` Marcel Apfelbaum
2017-07-11  8:13                     ` Gerd Hoffmann
2017-07-11 14:42                       ` Kevin Wolf
2017-07-11 14:47                         ` Paolo Bonzini
2017-07-12  6:39                           ` Marcel Apfelbaum
2017-07-12 15:17                             ` Eduardo Habkost
2017-07-12  5:51                         ` Gerd Hoffmann
2017-07-12  6:18                           ` Marcel Apfelbaum
2017-07-12  8:28                           ` Kevin Wolf
2017-07-11 14:47                       ` Eduardo Habkost
2017-07-05 11:07   ` Daniel P. Berrange
2017-07-05 11:13     ` Thomas Huth
2017-07-06 10:30     ` Stefan Hajnoczi
2017-07-06 10:41       ` Daniel P. Berrange
2017-07-11 10:13         ` Stefan Hajnoczi
2017-07-05 10:49 ` Laszlo Ersek
2017-07-05 11:04 ` Daniel P. Berrange [this message]
2017-07-05 11:44   ` Fam Zheng
2017-07-05 11:58     ` Thomas Huth
2017-07-05 12:22       ` Fam Zheng
2017-07-06 10:49         ` Daniel P. Berrange
2017-07-06 10:57           ` Peter Maydell
2017-07-06 11:00           ` Thomas Huth
2017-07-06 11:06             ` Daniel P. Berrange
2017-07-06 11:12               ` Thomas Huth
2017-07-06 11:13               ` Dr. David Alan Gilbert
2017-07-07 13:49           ` Eduardo Habkost
2017-07-05 12:43       ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170705110431.GE22008@redhat.com \
    --to=berrange@redhat.com \
    --cc=chao.p.peng@linux.intel.com \
    --cc=kevin.tian@intel.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.