-------- Original message --------
From: Alex Williamson <alex.williamson(a)redhat.com>
Date: 07/10/2020 18:08 (GMT+00:00)
To: Steven Newbury <steve(a)snewbury.org.uk>
Cc: Peter Krempa <pkrempa(a)redhat.com>, libvir-list(a)redhat.com
Subject: Re: [PATCH] Support x-vga=on for PCI host passthrough devices
On Wed, 07 Oct 2020 14:20:21 +0100
Steven Newbury <steve(a)snewbury.org.uk> wrote:
> On Wed, 2020-10-07 at 15:07 +0200, Peter Krempa wrote:
> > On Wed, Oct 07, 2020 at 13:59:35 +0100, Steven Newbury wrote:
> > > When using a passthrough GPU with libvirt there is no option to
> > > pass "x-vga=on" to the device specification. This means
legacy
> >
> > Please note that we don't add support for experimental qemu features
> > (prefixed with "x-") until they are deemed stable and the x- is
> > removed, so this patch can't be accepted in this form.
> >
> Okay, so should I bug qemu to promote the feature to stable? It's been
> like that forever, it's certainly not a new feature:
>
>
https://github.com/qemu/qemu/commit/f15689c7e4422d5453ae45628df5b83a53e518ed
>
> So it's been that way for 8 years!
It's that way upstream because VGA routing is a nightmare, it's
essentially broken on any system with Intel graphics because the device
always has VGA regions routed to itself. That problem is not getting
better, but the demand for VGA is getting less, so there's very little
incentive to work on the problem rather than just letting it die out
once nobody cares about VGA. Any 600 series or newer GeForce card
should have a UEFI ROM available. Also note that VGA support can be
configured both as a module option of vfio-pci and a build option, so
there's no guarantee that a display class device will have the VGA
regions available for QEMU to use this option. Thanks,
I'm still going to fix up my patch even if it's not going to get
committed. It's very useful for me, my old nvidia card doesn't work
without it, and I also need it for seabios/dos compatibility with my
ATIs. In fairness, I haven't tried it with my Intel, it's too old to
support the new vGPU stuff and I need to see what I'm typing! ;-)
For what it's worth, I had no trouble with GPU passthrough once I
realised it needed x-vga=on. VGA arbitration was automatically
switched. It's been rock solid stability wise, although the 8800 has
horrible VGA/DOS performance. Windows10 runs like on bare metal.
Are you aware that you can add arbitrary options to devices using the
<qemu:commandline> support in libvirt? For example:
<domain type='kvm'
...
<devices>
...
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00'
function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x01'
slot='0x00' function='0x0'/>
<alias name='ua-geforce8800'/>
</hostdev>
...
</devices>
<qemu:commandline>
<qemu:arg value='-set'/>
<qemu:arg value='device.ua-geforce8800.x-vga=on'/>
</qemu:commandline>
</domain>
This is generally how users make use of unsupportable or
not-yet-supported QEMU features while still using libvirt to manage the
VM. Thanks,
Alex