[Pkg-xen-devel] Xen VGA passthrough working again in Debian stable!

Chuck Zmudzinski brchuckz at netscape.net
Fri Apr 23 22:16:05 BST 2021


An old bug (#776742) reported over six years ago by Brian Paterni 
concerns Xen and VGA passthrough for full graphics performance in a 
virtual machine, and it was recently closed without being solved. About 
seven years ago, Xen had the best support for this feature but it has 
broken for a long time in Xen and that is why most users who want the 
VGA passthrough feature on their workstations are now using KVM/virtio 
based solutions instead of Xen/xl. However, I never gave up on Xen and 
with some workarounds I have been able to do VGA passthrough of an Intel 
integrated graphics device (IGD) using Xen and Debian but not since the 
days of wheezy have I been able to do this with unpatched and official 
up-to-date Debian software… until now!

The magic fix came with the backport of Qemu 5.2 to buster. After 
installing it on my system, I was able to fairly easily configure my 
Debian system to passthrough the Intel IGD. Thank you Debian Qemu Team 
and Debian Xen Team!

How I configured it:

Hardware: Haswell core i5-4590S with Intel HD Graphics 4600 and ASRock 
B85M-Pro4 Motherboard with 16 GB memory

Software: Up-to-date amd64 Debian buster using the Xen metapackage which 
installs some Qemu 3.1 packages. Then I installed the Qemu 5.2 backport 
of Qemu and its dependencies from buster-backports.

Passthrough configuration: Default bios (seabios), default device model, 
default toolstack (xl), but a non-default setting for rdm in xl.cfg:

rdm = "strategy=host,policy=relaxed"

This rdm setting might not be needed for newer Intel IGD devices. Mine 
is about seven years old.
n
To make the IGD assignable, in Xen it is very simple, no need to 
blacklist drivers (assuming the Intel IGD is not running an X or Wayland 
display):

sudo xl pci-assignable-add 0000:02.0

In /etc/default/grub I have:

GRUB_CMDLINE_XEN="dom0_mem=2G,max:2G smt=false pv-l1tf=false iommu=1"

Not all these settings in grub are necessary, but this is a setting to 
tweak, as well as the GRUB_CMDLINE_LINUX_DEFAULT setting in 
/etc/default/grub if it doesn’t work on the first try.

Windows 10 works great with this setup – I also passed through the USB 
3.0 controller and the onboard realtekHD audio device and do not 
experience any crackling sounds or any problems that are sometimes 
reported when using KVM. Also, Xen’s GPLPV drivers installed fairly 
easily for accelerated disk and network performance.

A Debian buster virtual machine did not work, because the 4.19 kernel 
did not successfully configure the passed through hardware with default 
settings. I will try a newer backported kernel and see if that works and 
file a bug report about that if it isn't fixed in the latest kernels.

Going forward, I think Xen might be worth a try again for the difficult 
problem of getting VGA passthrough to Windows working on Linux. I think 
even the infamous code 43 error that Nvidia GeForce cards trigger is 
being fixed by Nvidia so the fact that Xen does not have a workaround 
for that problem like KVM does is not a deal breaker for Xen even for 
Nvidia users.




More information about the Pkg-xen-devel mailing list