kage1414 Posted May 13, 2020 Posted May 13, 2020 (edited) Hey all, I'm about at my wits end here with this issue. I've used unRaid for about 3 years now, but I've never attempted any sort of hardware passthrough. I just built a brand new server and have been able to get everything up and running correctly, except that I cannot for the life of me get GPU passthrough working. Ultimately I want to use the GPU for a gaming VM. Below is the hardware for my new server: MSI X570 Gaming Plus Max (current BIOS) Ryzen 7 3700x Sapphire Pulse RX 580 8GB G.SKILL Ripjaws V Series 32GB (2 x 16GB) DDR4 3200 EVGA 500 Watt PSU I've tried using multiple Spaceinvader One tutorials regarding Windows VM setup and GPU Passthrough. Spaceinvader One videos I've followed: The best way to install and setup a windows 10 vm as a daily driver or a Gaming VM Advanced GPU passthrough techniques on Unraid AMD RX 5700XT - Reviewing Passthrough to KVM Virtual Machines How to easily reset a passed through AMD Graphics card without rebooting Other things I've tried: Fully installing windows with Q35 and i440fx chipsets and installing AMD drivers through VNC Using VNC as primary graphics and passing through RX 580 as secondary Using RX 580 as primary sound card* Installing Ubuntu Desktop with Q35 Checked all USB ports/busses using lspci and lsusb to make sure I'm not passing through my unRaid usb disk The closest I get is the monitor switching from the terminal login to a black screen. It seems like it wants to passthrough, but I'm not getting any signal from the graphics card to the monitor. Once it gets to a black screen it doesn't do anything else unless I reboot the host. I've attached my diagnostics file. Under QEMU, "Windows 10" and "Ubuntu Desktop" are fresh installs using Q35. I also attempted to run "Ubuntu - Desktop," an old install of Ubuntu, but was also unsuccessful. *One thing that I did figure out was that my server did not want to passthrough the onboard sound card (29.00.4). Any time I would try that it would completely freeze the server. The syslogs said "vfio-pci 0000:29:00.4: not ready" so I removed it from the VM. I suspected this was because the flash drive was on the same bus, but I just switched the flash bus and tried it again and got the same error. For most of these attempts the only sound card passed through was from the RX 580. tower-diagnostics-20200513-1130.zip And below is my Windows VM XML <?xml version='1.0' encoding='UTF-8'?> <domain type='kvm'> <name>Windows 10</name> <uuid>65e1c3af-c034-d392-6088-754a83fecc4e</uuid> <metadata> <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/> </metadata> <memory unit='KiB'>8388608</memory> <currentMemory unit='KiB'>8388608</currentMemory> <memoryBacking> <nosharepages/> </memoryBacking> <vcpu placement='static'>8</vcpu> <cputune> <vcpupin vcpu='0' cpuset='4'/> <vcpupin vcpu='1' cpuset='12'/> <vcpupin vcpu='2' cpuset='5'/> <vcpupin vcpu='3' cpuset='13'/> <vcpupin vcpu='4' cpuset='6'/> <vcpupin vcpu='5' cpuset='14'/> <vcpupin vcpu='6' cpuset='7'/> <vcpupin vcpu='7' cpuset='15'/> </cputune> <os> <type arch='x86_64' machine='pc-q35-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/65e1c3af-c034-d392-6088-754a83fecc4e_VARS-pure-efi.fd</nvram> </os> <features> <acpi/> <apic/> </features> <cpu mode='host-passthrough' check='none'> <topology sockets='1' cores='4' threads='2'/> <cache mode='passthrough'/> <feature policy='require' name='topoext'/> </cpu> <clock offset='localtime'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <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='0x03' slot='0x00' function='0x0'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/mnt/user/isos/Win10_1809Oct_English_x64.iso'/> <target dev='hda' bus='sata'/> <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.173-2.iso'/> <target dev='hdb' bus='sata'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='1'/> </disk> <controller type='pci' index='0' model='pcie-root'/> <controller type='pci' index='1' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='1' port='0x8'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/> </controller> <controller type='pci' index='2' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='2' port='0x9'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='pci' index='3' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='3' port='0x12'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/> </controller> <controller type='pci' index='4' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='4' port='0x13'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/> </controller> <controller type='pci' index='5' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='5' port='0x14'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/> </controller> <controller type='pci' index='6' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='6' port='0xa'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='virtio-serial' index='0'> <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> </controller> <controller type='sata' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> </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:43:1e:08'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' 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'/> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x27' slot='0x00' function='0x0'/> </source> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0' multifunction='on'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x27' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x1'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x29' slot='0x00' function='0x4'/> </source> <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='usb' managed='no'> <source> <vendor id='0x046d'/> <product id='0xc077'/> </source> <address type='usb' bus='0' port='2'/> </hostdev> <hostdev mode='subsystem' type='usb' managed='no'> <source> <vendor id='0x046d'/> <product id='0xc31c'/> </source> <address type='usb' bus='0' port='3'/> </hostdev> <hostdev mode='subsystem' type='usb' managed='no'> <source> <vendor id='0x2516'/> <product id='0x0051'/> </source> <address type='usb' bus='0' port='4'/> </hostdev> <memballoon model='none'/> </devices> </domain> The last thing I noticed is that KVM seems to be assigning my GPU and GPU sound to Bus 0x04 & 0x05 (reassigned back to 0x04) with slots at 0x00, whereas on Spaceinvader's tutorial his GPU busses were at 0x00 and his slots were populated. Edited May 13, 2020 by kage1414 Quote
scorcho99 Posted May 13, 2020 Posted May 13, 2020 Are you doing primary GPU passthrough? (You only have one GPU) If so have you tried adding video=efifb:off,video=vesafb:off to your syslinux.cfg? I had to do that to get primary working with my nvidia gpus. Note you will lose unraid console video out early in the process. Quote
kage1414 Posted May 13, 2020 Author Posted May 13, 2020 1 minute ago, scorcho99 said: Are you doing primary GPU passthrough? (You only have one GPU) If so have you tried adding video=efifb:off,video=vesafb:off to your syslinux.cfg? I had to do that to get primary working with my nvidia gpus. Note you will lose unraid console video out early in the process. I had added one of those parameters at one point (don't remember which one) and it didn't help. Should I add it under Global Configuration or unRaid OS? Quote
1812 Posted May 13, 2020 Posted May 13, 2020 try this before booting the vm. I run two 580's in one server on separate vm's and 2 in another in the same vm and this seems to sort things out. Quote
kage1414 Posted May 13, 2020 Author Posted May 13, 2020 I've tried it, didn't fix. Stumbled across this post. I booted the VM, remoted in with teamviewer, and installed the drivers and now I've got it working! Quote
Recommended Posts
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.