TestBot and graphics tests
Francois Gouget
fgouget at codeweavers.com
Mon Aug 24 10:53:41 CDT 2020
On Sun, 21 Apr 2019, Francois Gouget wrote:
>
> Here are some things I've learned about PCI-passthrough recently, which
> would be one way (probably the best) to add "real hardware" to the
> TestBot.
I have finally done some tests with PCI-passthrough on my box and got it
working with a Windows 10 VM outside of the TestBot.
Hardware: i7-4790K + Asus Z97-A + AMD RX 550
Software: Debian 10 + kernel 5.5.0-0.bpo.2-amd64 + QEmu 5.0-14~bpo10+1
Things I learned:
* Everyone recommends using OVMF, QEMu's UEFI BIOS. Currently that's
totally useless for the TestBot: not only is it impossible to take
live snapshots with OVMF, you cannot even take snapshots of the
powered off VM!!! And that's even before PCI-passthrough enters the
picture. Such a VM would be no better than running the tests on the
bare metal in terms of getting back to a clean state.
* But getting PCI-passthrough going with OVMF was indeed easier.
* It's possible to combine the QXL+Spice screen and PCI-passthrough for
a dual-GPU VM configuration. The benefit is you at least get the QXL
screen and then can work out the kinks for the extra GPU.
* In this configuration you can also use the host's keyboard and mouse
although things will be wonky as soon as you extend your screen with
the second GPU. The reason is that you normally have to exit your main
screen by the side to get on the second one. But in this configuration
that just gets your mouse out of the Spice window. So what Spice/QEmu seems to be doing
is matching the left (resp. right) edge of your Spice window to the
left (right) edge of your leftmost (rightmost) screen. So the mouse
switches to the second screen somewhere in the middle which means all
clicks are offset from the mouse pointer. Yuck!
So look for hovering highlights and learn to use keyboard shortcuts.
* Once you remove the QXL+Spice screen the VM will be headless because
it does not know there is still a VGA device (that's the part OVMF
handles better). The fix is to manually edit the VM's XML file to
pass x-vga=on on the right device:
-<domain type='kvm'>
+<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
...
+<qemu:commandline>
+ <qemu:arg value='-set'/>
+ <qemu:arg value='device.hostdev0.x-vga=on'/>
+</qemu:commandline>
Where 'hostdev0' is the GPU (and hostdev1 is the matching audio card).
* With that configuration it's possible to take snapshots of the powered
off VM. So that's something the TestBot can work with... eventually.
* You can also remove the ich9 audio device and use the graphics card
one instead. There's even an option (somewhere) to make it work
through a DVI-to-HDMI cable (my other cables at hand were too short).
* I also did tests with a Debian 10 VM but those attempts were thrown
off by:
- The x-vga issue above.
- My old screen which simply does not work with the AMD graphics card
(and one other laptop out of two, except when going through a VGA
adapter).
- Probably some GPU driver setup issues (initially I was missing
firmware-linux-nonfree).
So I'll have to retry.
* During my Debian 10 tests I ended up crashing the RX 550 such that I
got a QEmu error on the host side and could not restart that VM until
I rebooted the host. Ouch! I really don't want to have to reboot the
host after each test. Also I thought AMD's reset issues only concerned
the Southern Islands (HD 7000) and Sea Island (Rx 200) GPUs. But then
I did not run into this issue again when testing the Windows 10 guest.
So maybe there's still hope.
So that's the state of things for now. I don't know when I'll get back
to this but the next steps will likely be:
1. Setting up a proper Windows VM with PCI-passthrough and add it to the
TestBot.
2. Add it to my local TestBot instance and see how stable that is.
3. Give the Debian 10 VM another try.
4. Maybe set up a Windows PCI-passthrough VM on the official TestBot.
vm3 and vm4 look like they should support it (E3-1226 v3 + C224 PCH).
However I don't know if the chassis has room to put a graphics card.
--
Francois Gouget <fgouget at codeweavers.com>
More information about the wine-devel
mailing list