[libvirt] [PATCH v2] qemu: map "virtio" video model to "virt" machtype correctly (arm/aarch64)

Laszlo Ersek lersek at redhat.com
Fri Sep 16 15:25:08 UTC 2016


On 09/16/16 15:44, Andrea Bolognani wrote:
> On Fri, 2016-09-16 at 15:20 +0200, Pavel Hrdina wrote:
>>> There is something I wanted to clarify with Laszlo: is
>>> virtio-gpu-pci ever going to be usable on other architectures
>>> such as x86_64? Maybe it already is? Because if that's the
>>> case, we'll want to be able to choose between virtio-vga and
>>> virtio-gpu-pci.
>>>  
>>> One solution would be to keep mapping model='virtio' to
>>> virtio-vga and create a new model='virtio-gpu' that maps to
>>> virtio-gpu-pci, then forbid aarch64 mach-virt guests to use
>>> model='virtio'. Or something like that, I'm not married to
>>> the idea, I just think it's something we should definitely
>>> think about before this ends up in a release.
>>  
>> I have some patches in my TODO branch that will rewrite the video
>> device code. virtio-gpu-pci is usable also on other architectures
>> but it lacks the VGA compatibility mode.  In libvirt all primary
>> video devices for x86 architecture have VGA mode.  Currently we
>> allow only QXL to be used as secondary video device and now with
>> the virtio-gpu-pci it could be also used as secondary video device.
>>  
>> The solution would be simple, there is no need to add a new video
>> model 'virtio-gpu', we will use the existing model 'virtio', but
>> depending on architecture and also whether it's primary or
>> secondary video device we will use appropriate device.
>> We already do this for QXL.
> 
> I don't know much about video devices, so forgive me if I'm
> asking silly questions, but what is preventing you (on x86)
> from having virtio-vga as secondary video device?

The "VGA compatibility" stuff in virtio-vga is not just the linear
framebuffer that lives in one of its MMIO BARs. VGA compatibility is
much larger baggage; for example, it involves hard-coded ISA IO ports.

Alex Williamson discusses VGA arbitration in the following blog post:

http://vfio.blogspot.com/2014/08/whats-deal-with-vga-arbitration.html

So the short answer is that "VGA compatibility" includes things that you
mostly want to have *exactly one* instance of, in your x86 system. Zero
instances of those things, and you might lose compatibility with some
software; more than one instance of that stuff, and things get really
messy with arbitration (hard-coded IO ports and MMIO ranges).

So, even in the physical word, a multi-graphics-card x86 workstation
usually has one primary VGA card (nowadays likely as an integrated
device), carrying the legacy baggage; and then a number of secondary
GPUs (that have none of that baggage).

> Or
> virtio-gpu-pci as primary video device?

I described this earlier -- virtio-gpu-pci is more limited than
virtio-vga as a primary graphics card, so wherever you can go with
virtio-vga as primary, you'll do that. In aarch64/KVM guests however,
virtio-vga is not an option, and the more limited (as primary)
virtio-gpu-pci card is still better (much better) than nothing.

Thanks
Laszlo




More information about the libvir-list mailing list