3700X with B450 MB Cant Win 10 or OSX passthrough with RX 570


Recommended Posts

Hi All,

I am finding my feet with Unraid and loving the flexibility with it.

I have messed around with plex and a few other dockers apps and everything seems fine.

 

My build is;

 

AsusTek TUF B450-Gaming Plus MB with latest BIOS update in mid December 2019

AMD 3700X Processor

ASUS Strix RX 570 4GB Graphics card

2x 8GB Crosair 2666Mhz RAM

2x Sata 512GB SSD

3x 3TB Spinny 3.5 hard drives

 

I am running Unraid 6.8.1

 

However when it comes to VM's like Windows 10 and OSX, I cannot get my AMD ASUS RX570 to passthrough to the VM. I have tried the list of things below but no matter I do I get the spinning red arrows when I start either VM and then the whole of UNRAID crashes and I have to hard reboot the whole server. Can anyone help in what I can do.

 

1. Downloaded the TechPowerup VBIOS for the GPU here and then dropped in in the XML as per spaceinvader One with a Nvidia card but this is a AMD card https://www.techpowerup.com/vgabios/197590/asus-rx570-4096-170406

 

2. Turned on ACS on VM settings to 'Downstream'

 

3. Updated Syslinux configuration with - rcu_nocbs=0-15 (my CPU has 8 cores and 16 threads)

 

 

Example XML from my Windows 10 VM;

 

<?xml version='1.0' encoding='UTF-8'?>
<domain type='kvm'>
  <name>Windows 10</name>
  <uuid>ac19db3c-f237-5f0a-3ea8-a25d95c82db5</uuid>
  <description>Main Windows 10 with RX Graphics</description>
  <metadata>
    <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/>
  </metadata>
  <memory unit='KiB'>6291456</memory>
  <currentMemory unit='KiB'>6291456</currentMemory>
  <memoryBacking>
    <nosharepages/>
  </memoryBacking>
  <vcpu placement='static'>4</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='2'/>
    <vcpupin vcpu='1' cpuset='10'/>
    <vcpupin vcpu='2' cpuset='3'/>
    <vcpupin vcpu='3' cpuset='11'/>
  </cputune>
  <os>
    <type arch='x86_64' machine='pc-i440fx-4.2'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
    <nvram>/etc/libvirt/qemu/nvram/ac19db3c-f237-5f0a-3ea8-a25d95c82db5_VARS-pure-efi.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vendor_id state='on' value='none'/>
    </hyperv>
  </features>
  <cpu mode='host-passthrough' check='none'>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='hypervclock' present='yes'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/local/sbin/qemu</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source file='/mnt/user/domains/Windows 10/vdisk1.img'/>
      <target dev='hdc' bus='virtio'/>
      <boot order='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/isos/Win10_1909_English_x64.iso'/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <boot order='2'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/isos/virtio-win-0.1.160-1.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='pci' index='0' model='pci-root'/>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </controller>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:5f:16:47'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <channel type='unix'>
      <target type='virtio' name='org.qemu.guest_agent.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <sound model='ich9'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </sound>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>
      </source>
      <rom file='/mnt/disk1/isos/Asus.RX570.4096.170406.rom'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x08' slot='0x00' function='0x1'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x0a' slot='0x00' function='0x4'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    </hostdev>
    <memballoon model='none'/>
  </devices>
</domain>
 

 

Anybody know what I am doing wrong? Many thanks

Link to comment

I'm running an RX 480 on a Ryzen 5 2600 processor.

 

I don't need a vBIOS at all with mine - are you sure you need one? I do use - rcu_nocbs and at the moment have disabled C States (although this may not be necessary).

 

ACS isn't necessary for me (using a Tomahawk B350 BIOS). Have you made sure your BIOS is up to date? Check to see if your video card already has it's own IOMMU group in the unRAID diagnostics prior to enabling this.

 

Also I need to use the Q35 machine type with OVMF for things to work.

Edited by Ross Cannizzaro
Link to comment
22 minutes ago, Ross Cannizzaro said:

I'm running an RX 480 on a Ryzen 5 2600 processor.

 

I don't need a vBIOS at all with mine - are you sure you need one? I do use - rcu_nocbs and at the moment have disabled C States (although this may not be necessary).

 

ACS isn't necessary for me (using a Tomahawk B350 BIOS). Have you made sure your BIOS is up to date? Check to see if your video card already has it's own IOMMU group in the unRAID diagnostics prior to enabling this.

 

Also I need to use the Q35 machine type with OVMF for things to work.

Thanks for this. I tried what you said but it didnt work I am afraid. I adjusted my VM to be Q35 4.2 with OVMF but no luck.

Yeah, the BIOS is up to date on my B450 and yup GPU has slot 16 for OOMMU for both Graphics and the HDMI sound on the card.

I also tried your Q35 idea with the vBIOS  and also no vBIOS but no luck still.... 😞

Link to comment

When you are not using a vBIOS and are using QF35 is unRAID still freezing for you?

Just wondering if you can grab the VM log file and post it here.

 

Also - does your GPU have it's own slot when ACS is disabled? I wasn't sure if you tested with this off.

Edited by Ross Cannizzaro
Link to comment

By total miracle it has started working!!! A big thank you.

 

My options I have setup if anyone else has a 3600 or a 3700x or a 3800x with a B450 Motherboard with a AMD RX 560, 570 or 580 graphics is to set your VM has these applied like this;

 

Machine; Q35 -4,1

Do not add any additional Sound or graphics only the RX 570 graphics and HDMI sound

Get the correct vBios from TechPowerup for your Graphics ROM BIOS

 

In VM settings have PCIE ACS overide set to Disabled

Add 'rcu_nocbs=0-*' . (* being your total threads on your CPU) to your SysLinux Configuration on your USB stick

 

In theory this then should work as it has for me.... 

 

 

Link to comment
  • 2 weeks later...
  • 3 years later...

@mattyd87 , I have a similar motherboard , Asus TUF B450 gaming plus with AMD R5 3600 and MSI TRX 2060 Super. I can't boot into any linux flavor(I tested Mageia,Ubuntu,Fedora etc) with IOMMU=On in grub. It works only with IOMMU=off but this time I can not run my virtual machines in QEMU-KVM. So, I wonder how you have succeeded to boot with IOMMU=on , which bios version you are using ? Any info is appreciated.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.