On 03/10/2016 08:40 AM, Daniel P. Berrange wrote:
On Thu, Mar 10, 2016 at 02:34:02PM +0100, Andrea Bolognani wrote:
> On Thu, 2016-03-10 at 09:56 +0000, Daniel P. Berrange wrote:
>> So, I've just seen that QEMU has decided that as of QEMU 2.6, the virt
>> machine type will start to be versioned. This is quite convenient I
>> think as it gives us a nice thing to hook on. ie we see a non-versioned
>> machine type of 'virt' then we use virtio-mmio addressing, however, if
>> we see a versioned virt-X.Y.Z machine type, then we can assume pci by
>> default.
>>
>> Since the long term plan for AArch64 is to use PCI for everything, this
>> gives us nice default behaviour from this point onwards, while not
>> breaking compatibility for existing early adopters.
>>
>> Of course people with "legacy" mmio-only guests will stll have a
little
>> pain to run then on new QEMU, but honestly I think that's worth it since
>> it will avoid us long term pain in the world where aarch64 uses pci for
>> everything
>
> I think it's way too early to flip the switch and default to
> PCI addresses: my understanding is that guest OS support is
> expected to be spotty at best for at least a couple more
> years.
I don't buy that. For a start the only virtio-mmio and/or pci devices we
are giving to guests are virtio devices (blk, net, balloon, etc). The
only current guests supporting these devices are Linux, and Linux has
support for PCI on aarch64. So any Linux distro that ships today is
going to support PCI. Other guests (*BSD) which may choose to support
aarch64 in future would likely go straight to PCI and not bother with
virtio-mmio. Likewise if we did ever get a Windows guest on aarch64
with win-virtio drivers I would expec them to be PCI based.
So AFAICT, the only distros which are going to be using virtio-mmio are
the Linux aarch64 early-access/tech-preview releases. I don't really see
them as an important target. Even if we switch to PCI by default, I'd
still expect virt-manager to be capable of being told to override the
default and assign mmio addresses instad.
It's not that simple. The kernel supports the devices fine, but there's other
bits in the chain. For example Fedora 23 + AAVMF does not work with
virtio-pci... I don't understand the specifics but it's likely to do with
as-yet-not-fully-upstreamed aarch64 ACPI support that we have in RHELSA. I
don't think any released distro works out of the box with AAVMF + virtio-pci.
CCing Drew who maybe can shed more light on specifics
That said, maybe the simpler thing is to do what you suggest: default to
virtio-pci for versioned virt-*, then teach tools to force <address
type='virtio-mmio'/> via the XML until we know distros can support it.
Means some difficult transition time for the tools in the short to medium
term, since for example an older virt-manager (which doesn't explicitly
specify virtio-mmio) will generate an incorrect XML config for Fedora 23 with
a new libvirt (which defaults to virtio-pci). But maybe it's just best to get
it out of the way now...
- Cole