[PATCH] Support x-vga=on for PCI host passthrough devices
Alex Williamson
alex.williamson at redhat.com
Wed Oct 7 19:17:57 UTC 2020
On Wed, 07 Oct 2020 19:59:36 +0100
steve <steve at snewbury.org.uk> wrote:
> -------- Original message --------
> From: Alex Williamson <alex.williamson at redhat.com>
> Date: 07/10/2020 18:08 (GMT+00:00)
> To: Steven Newbury <steve at snewbury.org.uk>
> Cc: Peter Krempa <pkrempa at redhat.com>, libvir-list at 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 at 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' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
...
<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
More information about the libvir-list
mailing list