On Tue, Feb 15, 2022 at 04:25:33PM +0000, Dr. David Alan Gilbert (git) wrote:
> From: "Dr. David Alan Gilbert" <dgilb...@redhat.com>
> 
> The 'q35' machine type series has been around for a few years now, and
> is getting heavily used downstream without many problems;  lets flip
> to using it as the default.

I don't think I'd claim 'without many problems'.  In RHEL while 'q35'
is recommended, it explicitly isn't the default because it would havbe
created compatibility problems for applications. Every non-trivial
application needs to make code changes to cope with 'q35' if they're
using 'i440fx' today.  Apps that Red Hat ships, either in RHEL or as
add-on products, have been updated, but it was certainly not painfree
and took considerable time for OpenStack at least. I worry about how
ready the broader QEMU consumers are to work with 'q35' as an opt-in,
let alone as a default.


PCI is the really big ticket item here. If keeping the same command
line none of the PCI devices added will be hotpluggable because
they'll all be put in the root complex as integrated end points,
whether PCI or PCIe devices.

To allow for hot-unplug, any cold plugged PCIe devices need to be
placed in unique pcie-root-port (one root port per device). The
PCI devices meanwhile have to be put into a pci-bridge, which is
in turn plugged into a pcie-to-pci-bridge.  QEMU doesn't do this
placement by default so nothing is hot-unpluggable.

To allow for hot-plug, it is needed to pre-create many pcie-root-port
devices - one for each device to be plugged.

Libvirt tried to make this a little easier by putting cold plugged
devices into a place that allows them to be hot-unplugged.

On the libvirt side, there's also the need to know about sata vs
ide. That ones fun because at the QEMU level we still refer to it
as 'ide' throughout, even though q35 is implementing sata. 

There was one other notable difference that impacted apps, but I
can't remember what it was offhand.


> While it is of course newer and shinier than it's old i440fx cousin,
> the main reasons are:

s/newer and shinier/slightly less ancient and obsolete/ ;-P

>   * PCIe support
>   * No default floppy or IDE
>   * More modern defaults for NIC
>   * Better OVMF support

These are fine reasons for recommending apps to prefer use of 'q35'
on an opt-in basis.

Given the semantic differences from 'i440fx', changing the default
machine type has effects that are equivalent to breaking command
line syntax compatibility, which is something we've always tried
to avoid.

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


Reply via email to