Return to

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

 <target dev='vdd' bus='virtio'/>

inaccessible because windows doesn’t know about virio. Need to install the virtio drivers in windows in native mode OR swap over to sata mode then install the virtio drivers within windows


I agree, i would like to passthrough the asmedia sata controller(on (Asrock X370 Taichi) ), but can’t quite figure it out. Could someone provide some informations on how this is done? Maybe @wendell could share his knowledge :wink: ?


This thread from reddit talked about the same problem. Looks as though the version of the taichi board used in the video was beta. Myself, as well as the OP of the reddit thread are also finding that the asrock sata controller is not separated. As far as I can tell the asrock sata controller is now grouped with another sata controller, a usb controller, the network and ethernet controllers, and some pci bridges. So the asrock media device cannot be passed through without giving up all those as well.

Now I wonder if it is possible to get an M.2 drive that will use a different group that might be possible to pass through, but I really don’t know enough to check what groups are connected to what ports.

My IOMMU groupings.


There are still 3 SATA controllers as far as I can tell and only 2 of them are in one group (line 11 and 17), you can still passthrough the other one (line 43), no?

That’s also the same as wendell had in the initial review here:

Look at the groups on the time stamp. One AMD and Asmedia controller each in Group 0, and one AMD controller in group 5. That’s basically the same as you have in your groups, even though you seem to have more groups overall.

In the video in this thread one AMD and one Asmedia are in Group 13. Can’t make out where the third controller is, I would suspect it’s in another group though since that’s what he was talking about :stuck_out_tongue:

Though he said the Asmedia was in a separate group, everything I’ve seen so far suggests that it’s actually one of the two AMD controllers.


You’re right, group 8 looks promising. Is there anyway to tell what the Host bridge, PCI bridge, and non-essential instrumentation are for in that group? Because wont I need to pass through all of group 8 to pass that sata controller?

I was going off what was said in the video here, because I believe that review was before agesa


Not sure about how the actual passing works since I haven’t done it myself. As I understand you can pass single devices though.

The original review was release BIOS, the video in this thread is, hence the many IOMMU groups.


Wouldn’t the agesa update or the ACS patch be unnecessary if we could pass through individual devices? If am remembering correctly, I think I tried passing through the sata device on its own before, and ended up getting an error when trying to start the VM.

Edit: So looking at the wikipedia page for host bridge I learned that it is looking a bit more important that I thought… So group 8 is likely out.


HA! I finally managed to get the virtualization and device passthrough working for about 3 weeks. My approch is very similar to Wendels Guide for IOMMU on Ubuntu 17.04 but less refined :wink: (Ubuntu 17.04 -- VFIO PCIe Passthrough & Kernel Update (4.14-rc1))
I can now confirm that the ASUS ROG Crosshair 6 Hero works for IOMMU. But robust results require of course BIOS version at least 15.01!
Now it performes pretty neat :wink:

Mit freundlichen Grüßen

@ Sanfordvdev,

I testet Unigine Valley and Superposition on Window 10. On native Machine I messured around 54 FPS avg, virtulized with gpu passthrough round 49 FPS almost 50 FPS avg in Valley. And 19.3 FPS avg vs. 18.5 FPS avg in Super Position.

Please take a look on my post in the Ubuntu GPU Passthrough HowTo from Wendel here:

I played ARK also, nearly same Performance - location depended dangeling between 35 and 50 FPS in slidly below High Settings. BTW I used an Sapphire Pulse Radeon RX 560 4GB VRAM overclocked to 1440 Mhz GPU and 2 GHz VRAM.

PS: I’m limited to do only 3 Replys here :frowning:


Does anyone have performance comparisons between bare metal and a passthrough setup?


This might concern some of you:

Posted article also on Phoronix. Sorry if this seems like a necro post, but seems like this would be a BIG deal for lots of you!



Hi Riddick, hi Foppe,

sounds for me like great news! I will check the Ubuntu Mainline Kernel Releases for updates about that patch and will try it out ASAP.

I hope the NPT Fix for AMD platforms will improve the virtulize experience on Ryzen! ATM the Performance in DX11 Games is quite OK with some hick ups and some times with light studder, but DX9c is very very rough :frowning:

Thanks guys for the comment! :slight_smile:


Have you tried wine for dx9 games? :slight_smile:


Jup on … Resident Evil 6 Benchmark Tool, Resident Evil 5 build in benchmark and Attack on Titans.
In RE6 BT my score dropped from native ~9200 Points to ~3600 Points with Framerates from ~100-120 FPS down to max 40 mostly 25 FPS in my VM.

RE5: Frames from around 200 FPS down to 25 FPS and below when more opponents are on the screen -.-

Attack on Titans has no benchmark, but if there are some action with some Titans the whole VM becomes slowmotion -.-.

Not very recommanded to play under this conditions.


It does!:slightly_smiling_face:


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


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?