-
GPU Passthrough for GTX 560 Ti → Started with Code 43, now stuck at Code 12 — need help on Unraid VM
Hello everyone, I’m running into major issues trying to passthrough my GPU to a Windows 11 VM, and I’d really appreciate assistance from the community. I’ll walk through everything I’ve tried so far (error 43 → error 12) and include my VM XML excerpt so you can spot what I might be missing. My Setup: Host OS: Unraid (7.1.4) CPU: AMD Ryzen 5 8600G GPU to passthrough: NVIDIA GTX 560 Ti VM Guest: Windows 11 VM Config: machine type pc-q35-8.2/i440fx-5.1 (tried both), firmware currently Legacy (SeaBIOS) IOMMU/AMD-Vi enabled in BIOS, have toggled “Above 4G Decoding” ON and OFF I have isolated the GPU, bound it to vfio Issue Cronology Initial problem → Error 43 After installing the NVIDIA driver in Windows VM, Device Manager shows Code 43: “This device cannot start. (Code 43)”. This is the classic issue where the NVIDIA driver detects the VM environment and refuses to load I tried hiding the VM hypervisor, setting vendor_id, hiding KVM, etc. Troubleshooting leads to Error 12 After making changes (including using a dumped vBIOS ROM and adjusting XML), the error 43 went away for a moment, but I then received Error 12: “This device cannot find enough free resources that it can use.” Most likely because I switched to q35. Error 12 typically points to insufficient MMIO/PCIe resource allocation for the passthrough device. Here is my VM configuration (xml) <?xml version='1.0' encoding='UTF-8'?> <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> <name>Windows 11</name> <uuid>14b70a5c-2796-21a3-82f1-eee9aa2d0454</uuid> <metadata> <vmtemplate xmlns="unraid" name="Windows 11" iconold="windows11.png" icon="windows11.png" os="windowstpm" webui="" storage="default"/> </metadata> <memory unit='KiB'>16777216</memory> <currentMemory unit='KiB'>16777216</currentMemory> <memoryBacking> <nosharepages/> </memoryBacking> <vcpu placement='static'>6</vcpu> <cputune> <vcpupin vcpu='0' cpuset='0'/> <vcpupin vcpu='1' cpuset='6'/> <vcpupin vcpu='2' cpuset='1'/> <vcpupin vcpu='3' cpuset='7'/> <vcpupin vcpu='4' cpuset='2'/> <vcpupin vcpu='5' cpuset='8'/> </cputune> <os> <type arch='x86_64' machine='pc-q35-8.2'>hvm</type> </os> <features> <acpi/> <apic/> <hyperv mode='custom'> <relaxed state='on'/> <vapic state='on'/> <spinlocks state='on' retries='8191'/> <vpindex state='on'/> <synic state='on'/> <stimer state='on'/> <vendor_id state='on' value='none'/> </hyperv> <kvm> <hidden state='on'/> </kvm> <ioapic driver='kvm'/> </features> <cpu mode='host-passthrough' check='none' migratable='on'> <topology sockets='1' dies='1' clusters='1' cores='3' threads='2'/> <cache mode='passthrough'/> <feature policy='require' name='topoext'/> </cpu> <clock offset='localtime'> <timer name='hpet' present='no'/> <timer name='hypervclock' present='yes'/> </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='cdrom'> <driver name='qemu' type='raw'/> <source file='/mnt/user/isos/Win11_24H2_German_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.285-1.iso'/> <target dev='hdb' bus='sata'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='1'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='writeback' discard='unmap'/> <source file='/mnt/user/domains/Windows 11/vdisk1.img'/> <target dev='hdc' bus='sata'/> <serial>vdisk1</serial> <boot order='1'/> <address type='drive' controller='0' bus='0' target='0' unit='2'/> </disk> <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> <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='0xa'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='pci' index='4' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='4' port='0xb'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x3'/> </controller> <controller type='pci' index='5' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='5' port='0xc'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x4'/> </controller> <controller type='pci' index='6' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='6' port='0xd'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x5'/> </controller> <controller type='pci' index='7' model='pcie-to-pci-bridge'> <model name='pcie-pci-bridge'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </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> <interface type='bridge'> <mac address='52:54:00:74:ea:ce'/> <source bridge='br0'/> <model type='rtl8139'/> <address type='pci' domain='0x0000' bus='0x07' slot='0x01' 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'/> <graphics type='vnc' port='-1' autoport='yes' websocket='-1' listen='0.0.0.0' sharePolicy='ignore'> <listen type='address' address='0.0.0.0'/> </graphics> <audio id='1' type='none'/> <video> <model type='qxl' ram='65536' vram='16384' vgamem='16384' heads='1' primary='yes'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x1e' function='0x0'/> </video> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </source> <rom file='/mnt/disk1/isos/560tibios-unfixed.rom'/> <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> </hostdev> <watchdog model='itco' action='reset'/> <memballoon model='none'/> </devices> <qemu:commandline> <qemu:arg value='-global'/> <qemu:arg value='q35-pcihost.pci-hole64-size=2048G'/> </qemu:commandline>What I´ve tried so far: Verified IOMMU grouping and that the GPU is fully bound to vfio. Tested both “Above 4G Decoding” ON and OFF in the BIOS. Ensured the GPU is not the host’s primary display device. Tried different machine types (pc-i440fx vs pc-q35) and different BIOS types (SeaBIOS vs OVMF TMP). Used a dumped BIOS ROM for the GPU. Hidden the KVM hypervisor to avoid code 43 detection. Added QEMU args for pci-hole64-size (for large MMIO space)
-
iGPU passthrough → no display output, vGPU leads to UEFI Shell – need help
Hello everyone, I’m trying to set up a Windows 11 VM on Unraid with iGPU passthrough (Ryzen 8600G) but having two major issues: 🔹 Problem 1: iGPU passthrough (real GPU)I’ve bound both the iGPU (graphics + audio) in Tools → System Devices → “Bind to VFIO at Boot” I configured the VM to use the iGPU as GPU Result: The VM starts, Unraid GUI disappears or stays, but no video output on my monitor via HDMI/DP. Black screen. 🔹 Problem 2: vGPU mode (no passthrough)For testing I switched the VM to use vGPU (software emulated) Result: VM launches, but instead of installing or booting Windows, I’m dumped into the UEFI Interactive Shell. No boot disk is found. Even with virtIO disk set up, the VM won’t auto-boot from disk. ✅ What I’ve already doneBIOS: SVM + IOMMU enabled iGPU → Bind to VFIO at Boot tried booting with vGPU ❓ What I need help withiGPU passthrough mode – how to get real monitor output instead of a black screen vGPU mode – how to make VM boot properly from virtIO disk (still ending in UEFI shell) 📌 Configuration detailsUnraid version: 7.1.4 Motherboard: ASRock B650M Riptide (BIOS 3.30) CPU/APU/iGPU: Ryzen 8600G VM Machine: i440-9.2 BIOS for VM: OVMF / OVMF TPM (tried both ) VirtIO disk bus/type: VirtIO 👋 AskWhat am I missing to get real monitor output in iGPU passthrough? Do I need a special VBIOS or ROM? How can I set a persistent boot entry so the VM doesn’t drop into the UEFI shell in vGPU mode? Are there any known quirks with Riptide B650M + ASRock BIOS 3.30 + Ryzen 8600G?
WimWagner
Members
-
Joined
-
Last visited