Return to

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


It might have been asked before, but I have a small problem:
I don’t use fedora and in the built guide, they are basically installing a bunch of packages, that are (I assume) being “tagged” with @virtualisation.
Is there some sort of a list somewhere? Or any way I can get all the needed stuff from the AUR?
(I juse Yay and Pacman btw)


if you’re using arch just follow this:

it’s what essentially every decent guide for every distro on the internet is based on anyway


Fedora @virtualization pulls in qemu, libvirt, virt-manager, ovmf and a couple other packages, but those are the important ones.


i found that # lcpci -nn did not work i had to do # lspci -nn to get the hardware details. maybe because im useing Fedora 28? just checking cus might be a typo.


I made ansible role for this process, It works great on Fedora 28.


Hi y’all,
after a windows update as well as a fedora 28 update I’ve been stuck in a bootloop at the vm startscreen (the tianocore thing).

Has anyone experience with that ?

Here’s my kvm.xml:

<domain type='kvm' xmlns:qemu=''>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <vcpu placement='static'>8</vcpu>
    <vcpupin vcpu='0' cpuset='0'/>
    <vcpupin vcpu='1' cpuset='1'/>
    <vcpupin vcpu='2' cpuset='2'/>
    <vcpupin vcpu='3' cpuset='3'/>
    <vcpupin vcpu='4' cpuset='4'/>
    <vcpupin vcpu='5' cpuset='5'/>
    <vcpupin vcpu='6' cpuset='6'/>
    <vcpupin vcpu='7' cpuset='7'/>
    <iothreadpin iothread='1' cpuset='0-1'/>
    <iothreadpin iothread='2' cpuset='2-3'/>
    <iothreadpin iothread='3' cpuset='4-5'/>
    <iothreadpin iothread='4' cpuset='6-7'/>
    <type arch='x86_64' machine='pc-i440fx-2.10'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/edk2/ovmf/OVMF_CODE.fd</loader>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <hidden state='on'/>
    <vmport state='off'/>
  <cpu mode='custom' match='exact' check='partial'>
    <model fallback='allow'>qemu64</model>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
    <timer name='hypervclock' present='yes'/>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/>
    <controller type='pci' index='0' model='pci-root'/>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    <interface type='network'>
      <mac address='52:54:00:4e:11:4b'/>
      <source network='default'/>
      <model type='rtl8139'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <hostdev mode='subsystem' type='pci' managed='yes'>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
      <boot order='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    <hostdev mode='subsystem' type='pci' managed='yes'>
        <address domain='0x0000' bus='0x0b' slot='0x00' function='0x0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    <hostdev mode='subsystem' type='pci' managed='yes'>
        <address domain='0x0000' bus='0x0b' slot='0x00' function='0x1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    <hostdev mode='subsystem' type='pci' managed='yes'>
        <address domain='0x0000' bus='0x0d' slot='0x00' function='0x2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='1'/>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='2'/>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    <qemu:arg value='-cpu'/>
    <qemu:arg value='host,hv_time,kvm=off,hv_vendor_id=null'/>

EDIT: reinstalling did the trick … but only for now. Any ideas what to do about upcomming updates ?

regards Warui



I just found something interesting: I was passing though a 4 port nic but only 1 port would show up in the vm. When I went looking for what could cause this behavior I found the answer in the .XML file for the VM:

The 1 card was split in to 4 diffrent ‘slots’ as in the exaple below:

And putting it in the same ‘slot’ fixed the issue:


Quick question, So when you Passthrough a dedicated GPU, you run monitors to the host GPU right? and the VM just utilizes the passthrough GPU processing for the VM.

Now I have a specific setup because I have many monitors for example if I have 5 Monitors plugged into my host GPU I cannot plug my 6th monitor into the passthrough GPU for windows since it prob wont display anything right?

Trying to figure this out, as I might have to buy a diff card with enough ports for host if this is the case, since I utilize a shit cheap card for the 6th monitor atm.


Watch some of our vids. When you pass through the GPU the VM treats the GPU like a real GPU so the outputs work only for the vm, but the outputs on the VM GPU do work.


Right, Just was thinking out loud i suppose. rewatched the video kinda figured it out.

Just thinking of a good cheap alternative workstation card with x6 ports instead of using 3 GPU’s, 2 for host and 1 for vm dedication.




Yeah, I got an MST hub but linux hates it won’t recognize in Ubuntu just more hassle than its worth, could also daisy chain monitors but my monitors are not dp native. So I’ll prob just end up getting a used amd w600 or vision tek 7780 x6 mdp. Plus active adapters.