I followed no single guide really but I’ve reached a point where it’s good for every day use, with some heavy script usage.
Troubles started with making my guest play nice with the disk controller and ended with having to use a USB sound card for sound and use 3rd party windows programs to reset audio when some applications break due to swapping HIDs back and forth.
It took me really long to put this together and now its a hot mess constructed out of python scripts working with powershell to swap my inputs back and forth, xbindkeys and autohotkey to make the process a little less painful, a batch script to make audio play nice and thats probably forgetting half the obstacles I had to get over. CPU topology for sure was another issue, the guest just kept seeing 2 cores but the issue wasn’t the topology setup alone, it was also the windows license expiring to due changed hardware… and yet another issue the Nvidia driver refusing to run in a VM for I’m guessing completely arbitrary reasons.
So yeah it’s certainly a weekend project. But I’m all the happier having pretty much native gaming performance just 3 clicks away and dual booting done away with.
Configuring Arch itself to use iommu was quite the nobrainer though, hardest part there was trying to find the virtualization setting in my bios. Apparently that’s an “overclocking” feature…
Took me a little more than 2 days to learn and set up everything but it’s worth!
I got VFIO passthrough working on Fedora and have been running it now for around 9 months without too many issues and I’m now using it on Fedora 28. My motivation at the time was to do this to try Looking Glass in its early stages of release. Initially I very loosely followed this guide by Level1Techs and their accompanying video here:
it goes through all the required steps to get this working on Fedora 26 at the time but is still transferable to later versions of Fedora, The only real issue I had was that both my cards were Gigabyte and the audio device shared an id and was unable to pass through the card because of this, but later found a script which takes your first card and then assigns the vfio driver to all other GPUs in your system.
for i in $(find /sys/devices/pci* -name boot_vga); do
if [ $(cat $i) -eq 0 ]; then
AUDIO=$(echo $GPU | sed -e "s/0$/1/")
echo "vfio-pci" > $GPU/driver_override
if [ -d $AUDIO ]; then
echo "vfio-pci" > $AUDIO/driver_override
modprobe -i vfio-pci
I placed it in /sbin/ and loaded it in my /etc/modprobe.d/vfio.conf with install vfio-pci /sbin/vfio-pci-override-vga.sh and everything worked from then on.
I also later attempted to get a VFIO passthrough setup on NixOS myself and wrote a guide for it here:
NixOS is very unique in the way it handles this and I generally wouldn’t recommend trying it as your first passthrough build but because of the way it work with the system begin defined in a config file the steps to get passthrough working are very clearly described and might prove useful even on other distributions.
Similarly you may also want to give the Arch wiki page for VFIO Passtrhough a read as the process is generally similar and is very good for troubleshooting as its mostly transferable to other distributions.
Lastly Passthough POST has some very good articles on VFIO passthrough in general and is worth a read if you really want to get into using it.
Yep. Works very well. I use Antergos and followed the Arch Wiki, was pretty straight forward.
Initially it was hell trying to get games to run on my FX-8350. I tried every tweak under the sun before I gave up and bought a new CPU etc. A few weeks later someone released an NPT patch for AMD CPU’s which probably would have fixed it
Been using vfio/passthrough etc for my windows needs the last year. It works pretty good. Set it up with both Arch, Opensuse and lastly Fedora.
Just follow the relevant guides and do it as a weekend project.