Let me just start with I am sorry to join the other 1000 posts about GPU passthrough, but it seems as though any fix I try will not cooperate.
So, I have a server that runs as a media server (plex, sonarr, radarr etc.) which uses a GTX1660 Super for transcoding, all works as intended. My house mate handed me his old GTX650ti so I thought I would have a crack at GPU passthrough for remote gaming (retro games, nothing too serious). So I have been searching and following guides for about a month now trying to get it to work, I am currently at the point where my VM will see the GPU, but refuse to use it (the infamous error 43).
I have been following the guide below to try and get my remote gaming machine working:
https://forums.serverbuilds.net/t/guide-remote-gaming-on-unraid/4248/9
I have watched and configured my GPU passthrough as shown in all of spaceinvader ones videos.
What I can remember I have tried so far:
- IOMMU is enabled in BIOS
- ensured no issues with old gpu (tested on another pc)
- vbios dump edited with hex editor and configured for VM
- enabled and disabled hyper-v
- edited the xml, here's the entire file as it stands (I have chopped and changed the xml A LOT, so any fixes are very much appreciated):
<?xml version='1.0' encoding='UTF-8'?>
<domain type='kvm'>
<name>i440parsec</name>
<uuid>a8735db1-7631-acd0-24fd-af4a2b6b703f</uuid>
<description>Remote Gaming Machine</description>
<metadata>
<vmtemplate xmlns="unraid" name="Windows 11" icon="windows11.png" os="windowstpm"/>
</metadata>
<memory unit='KiB'>8388608</memory>
<currentMemory unit='KiB'>8388608</currentMemory>
<memoryBacking>
<nosharepages/>
</memoryBacking>
<vcpu placement='static'>8</vcpu>
<cputune>
<vcpupin vcpu='0' cpuset='2'/>
<vcpupin vcpu='1' cpuset='12'/>
<vcpupin vcpu='2' cpuset='3'/>
<vcpupin vcpu='3' cpuset='13'/>
<vcpupin vcpu='4' cpuset='4'/>
<vcpupin vcpu='5' cpuset='14'/>
<vcpupin vcpu='6' cpuset='5'/>
<vcpupin vcpu='7' cpuset='15'/>
<emulatorpin cpuset='9'/>
</cputune>
<os>
<type arch='x86_64' machine='pc-i440fx-7.1'>hvm</type>
<loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi-tpm.fd</loader>
<nvram>/etc/libvirt/qemu/nvram/a8735db1-7631-acd0-24fd-af4a2b6b703f_VARS-pure-efi-tpm.fd</nvram>
</os>
<features>
<acpi/>
<apic/>
<hyperv mode='custom'>
<relaxed state='on'/>
<vapic state='on'/>
<spinlocks state='on' retries='8191'/>
<vendor_id state='on' value='none'/>
</hyperv>
<kvm>
<hidden state='on'/>
</kvm>
<vmport state='off'/>
<ioapic driver='kvm'/>
</features>
<cpu mode='host-passthrough' check='none' migratable='on'>
<topology sockets='1' dies='1' cores='4' threads='2'/>
<cache mode='passthrough'/>
</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/i440parsec/vdisk1.img'/>
<target dev='hdc' bus='virtio'/>
<serial>vdisk1</serial>
<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/virtio-win-0.1.229-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='pci' index='1' model='pci-bridge'>
<model name='pci-bridge'/>
<target chassisNr='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</controller>
<controller type='pci' index='2' model='pci-bridge'>
<model name='pci-bridge'/>
<target chassisNr='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</controller>
<controller type='pci' index='3' model='pci-bridge'>
<model name='pci-bridge'/>
<target chassisNr='3'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</controller>
<controller type='sata' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</controller>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='usb' index='0' model='qemu-xhci' ports='15'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:f4:cc:76'/>
<source bridge='br0'/>
<model type='virtio-net'/>
<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'/>
<tpm model='tpm-tis'>
<backend type='emulator' version='2.0' persistent_state='yes'/>
</tpm>
<audio id='1' type='none'/>
<hostdev mode='subsystem' type='pci' managed='yes'>
<driver name='vfio'/>
<source>
<address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
</source>
<rom file='/mnt/user/domains/vbios/gtx650ti.rom'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0' multifunction='on'/>
</hostdev>
<hostdev mode='subsystem' type='pci' managed='yes'>
<driver name='vfio'/>
<source>
<address domain='0x0000' bus='0x03' slot='0x00' function='0x1'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x1'/>
</hostdev>
<memballoon model='none'/>
</devices>
</domain>
If anyone is able to get my passthrough working, I would finally be able to get a good nights sleep, hugely appreciate the time and effort.
(LATEST DIAGNOSTICS ATTACHED)
mothership-diagnostics-20230819-1836.zip