Ryzen GPU Passthrough Setup Guide: Fedora 26 + Windows Gaming on Linux | Level One Techs

Just saw this post, otherwise I would’ve replied some time ago.

Here you go:

From there:

But how well does it perform?

Surprisingly well, actually. I didn’t benchmark extensively, but I did run Cinebench R15, Unigine Heaven, and the Tomb Raider (2013) benchmark on both physical and virtual Windows 10 installations. All were run on installations that were as clean as possible, meaning only Cinebench, Unigine Heaven, Steam, and Tomb Raider were installed as well as all W10 Updates.

Cinebench Single – Physical – Virtual
Minimum – 146 – 144
Median – 147 – 144
Maximum – 147 – 144

Cinebench Multi – Physical – Virtual
Minimum – 529 – 531
Median – 531 – 532
Maximum – 532 – 536

Using the Single threaded performance, we can see a loss of about 2%. I would call that negligible. The multithreaded performance was much closer than I expected, one virtual run even scoring higher than the physical maximum. Perhaps Microsoft has some optimizations in place for Windows 10 in a virtual environment, or perhaps there was some background noise in the physical runs. Overall, the conclusion I draw from these benchmarks is that the performance loss is not worth considering at all.

Unigine Heaven – Physical – Virtual
Minimum – 8.4 – 21.5
Average – 54.7 – 55.0
Maximum – 116.8 – 115.8
Score – 1379 – 1384

The settings were Ultra w/ 8x AA @ 1080p on the DirectX 11 API. This time, our virtualized run actually achieved a better score. However, it’s not significantly higher than the baremetal performance, so I again concluded that the performance hit is, surprisingly, negligible.

Tomb Raider – Physical – Virtual
Minimum – 68.0 – 70.0
Average – 94.4 – 97.4
Maximum – 114.0 – 128.0

1 Like

I dont have the vfio.conf in the /etc/modprobe.d folder, what do I need?

Then just create one.
sudo touch /etc/modprobe.d/vfio.conf
The name doesn’t matter btw, as long as it ends on .conf.

with rd.driver.pre=vfio-pci on kernel option, my kernel wont boot :frowning:

my kernel 4.13.13-300.fc27.x86_64

After a while (2 weeks) I was able to boot windows 10, (Apparently I had had installed the bios version of fedora 27 instead of the UEFI version), but I got error 43 in the device manager of windows. I had to used the Bus Sata instead of the Virtio even tough I installed the driver before setting up the VM.
I put the


In the features of the XML config file, but same code 43 error problem.

What can I do or change to use the Nvidia GPU?

tried and true: kvm=off

haven’t tried but looks like it might be a better workaround: https://github.com/sk1080/nvidia-kvm-patcher

1 Like

Thank you, i follow the instruction of the link you posted, and now is working, now I ust need to get the NTP working.

1 Like

Sadly, I bought my board before finding this guide. I have an ASUS-PRIME x399-A motherboard. Otherwise I have followed the guide. I have Two Samsung 960 PRO NVMe 512GB drives that show up on separate IOMMU Groups. They have the same device ID.

If there is a way to only pass through one of these, I’d like to use the other for Fedora. If anyone has implemented the shell script that Wendell mentions in the video, perhaps I could adapt it for use on my drives also.

Is this a problem for two identical drives, the same way it is for two identical video cards? I have another drive I can use if this is a no go.

Yeah, you will need an ACS patch to separate 2 of the same drive or GPU. That isn’t optimal at all.

I’d exchange one of the 960 Pros for an EVO.

You would also be better using an RX 580 for the host and a Geforce for the VM at the moment because of issues with Nvidia and Wayland (the default display manager in GNOME now)

this isn’t really too big of a deal – do plan to use the other one as the boot drive? if not, then you can get vfio to release one of them and re-assign the driver later in the boot up process.

I think vfio supports the bus ID these days, but worst case, you can do a script on your initrd to bind only to one of the nvme. similar process for duplicate video cards.

Anyone messed with passthrough on MSI B350 Tomahawk board?

Wendell maybe? :stuck_out_tongue:

1 Like

Damn I thought I had checked that. Appreciate it

@wendell Have you done any more testing on the MSI B350 Tomahawk board lately?

not since the agesa update… tomahawk was great for non OC/light 8 cores or the 6 core. the pcie slot layout is not optimal for passthrough. Maybe with an apu? but the other slot is through the pch so no passthrough there. And no way to specify primary gpu to be the one through the pch. The asrock ab4 has its other x16 shared with the m.2 so that works pretty well if you dont m.2

1 Like

If you’re using a SATA M.2 that technically wouldn’t disable the lanes for the PCIe slot, right? But does that actually work in the UEFI?

yep, it has on the boards I’ve tested, havent tested this specific board tho

1 Like

Considering i have 1 set of KVM, how would a kvm switch work? I’ve never used one, and from looking at the device, i wouldn’t have 2 monitor inputs, what would i plug in the host/guest slots? Using this video as a parameter, i would only have 1 machine to plug.
I haven’t bought the PC for passthrough yet, i’m just doing research, so i can’t just plug it in and try it out.

Has anyone had difficulties in regards to deleting the Spice display. I tries that on both a Linux & a Windows Guest and neither will load with the passthrough GPU. Now I am in a bit of uncharted territory with e Vega 64 GPU. I was able to get the Windows 10 install to start with spice and then just “disable” that display and set my main monitor as the “Main Display” using the passthrough. But on the Fedora 27 Guest I am even more lost. I did install the proprietary driver for the GPU, but still nothing. At a minimum I am hoping to get either Guest working without the Spice display. Any advice in this area would be greatly appreciated. Thanks, -Bill

Have anyone passtrough a USB controller on the Gigabyte aorus gaming 5, I basically need to use a gamepad and an usb Audio Interface (I tried to assign it to the VM as the keyboard and mouse but it get an error in the Guest W-10)