September 10, 20232 yr Hello, I’m facing some issues when passing through my 7900 XTX to windows VM. (Error code 43) My build: AMD Ryzen R9 7950 Gigabyte B650m elite (with latest 1.0.0.7c bios) 4x32GB RAM PowerColor hellhound 7900xtx Nvidia Tesla P40 Tried following setting combination(not all combination tested, but most possible ones all tested and no luck. E.g. if some basic configuration doesn’t work, I might enable unsafe interrupts and test again but not regression test all previous combinations): Bios: 1. Resize bar on or off 2. CSM on or off Unraid: 1. PCIe ACS override set to No or Both 2. VFIO allow unsafe interrupts: No or Yes 3. Append video=efifb:off,vesafb:off for boot entry 4. Switch between UEFI and legacy boot mode 5. VFIO bound GPU and corresponding sound card part 6. Install Radeon reset bug plugin or not VM(I will paste my configuration here): 1. VM and CPU part: <memoryBacking> <source type='memfd'/> <access mode='shared'/> </memoryBacking> <vcpu placement='static'>16</vcpu> <os> <type arch='x86_64' machine='pc-q35-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/7cf78376-63b6-b8c6-5499-5421719f1fd7_VARS-pure-efi-tpm.fd</nvram> </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='1234567890ab'/> </hyperv> <kvm> <hidden state='on'/> </kvm> </features> <cpu mode='host-passthrough' check='none' migratable='off'> <topology sockets='1' dies='1' cores='16' threads='1'/> <cache mode='passthrough'/> <feature policy='require' name='topoext'/> </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> 2. GPU part: <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/isos/vbios/7900xtx.rom'/> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' 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='0x05' slot='0x00' function='0x1'/> </hostdev> Couple combinations I tried for VM configuration: 1. With or without vBios. 2. vBios dump from GPUz(on other bare metal Windows), from Unraid dump vBios script and download from TechPowerup(I use red devil one) 3. Vendor id none or a random one. 4. KVM hidden state on or not specify at all. I tested above combination for about 3 days, followed many guides in other thread, and still no luck. It always report error code 43 in windows device manager. e.g.: 1. A thread talk about 7900xt passthrough 2. Previous AMD 5700xt passthrough Any one can still give me a hint? PS: Not sure if it’s relevant, but in another 7900xt passthrough thread, it’s mentioned to passthrough all 4 devices related to the GPU. However in my case, there is only 2. Let’s say in Unraid System devices section, my GPU is located in 03:00:xx. I can only see a VGA compatible controller and one Audio device in 03:00:xx. I guess is it might related to usbc ports from reference card(which my model doesn’t have).
September 10, 20232 yr Community Expert 15 minutes ago, Javen said: Hello, I’m facing some issues when passing through my 7900 XTX to windows VM. (Error code 43) My build: AMD Ryzen R9 7950 Gigabyte B650m elite (with latest 1.0.0.7c bios) 4x32GB RAM PowerColor hellhound 7900xtx Nvidia Tesla P40 Tried following setting combination(not all combination tested, but most possible ones all tested and no luck. E.g. if some basic configuration doesn’t work, I might enable unsafe interrupts and test again but not regression test all previous combinations): Bios: 1. Resize bar on or off 2. CSM on or off Unraid: 1. PCIe ACS override set to No or Both 2. VFIO allow unsafe interrupts: No or Yes 3. Append video=efifb:off,vesafb:off for boot entry 4. Switch between UEFI and legacy boot mode 5. VFIO bound GPU and corresponding sound card part 6. Install Radeon reset bug plugin or not VM(I will paste my configuration here): 1. VM and CPU part: <memoryBacking> <source type='memfd'/> <access mode='shared'/> </memoryBacking> <vcpu placement='static'>16</vcpu> <os> <type arch='x86_64' machine='pc-q35-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/7cf78376-63b6-b8c6-5499-5421719f1fd7_VARS-pure-efi-tpm.fd</nvram> </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='1234567890ab'/> </hyperv> <kvm> <hidden state='on'/> </kvm> </features> <cpu mode='host-passthrough' check='none' migratable='off'> <topology sockets='1' dies='1' cores='16' threads='1'/> <cache mode='passthrough'/> <feature policy='require' name='topoext'/> </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> 2. GPU part: <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/isos/vbios/7900xtx.rom'/> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' 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='0x05' slot='0x00' function='0x1'/> </hostdev> Couple combinations I tried for VM configuration: 1. With or without vBios. 2. vBios dump from GPUz(on other bare metal Windows), from Unraid dump vBios script and download from TechPowerup(I use red devil one) 3. Vendor id none or a random one. 4. KVM hidden state on or not specify at all. I tested above combination for about 3 days, followed many guides in other thread, and still no luck. It always report error code 43 in windows device manager. e.g.: 1. A thread talk about 7900xt passthrough 2. Previous AMD 5700xt passthrough Any one can still give me a hint? PS: Not sure if it’s relevant, but in another 7900xt passthrough thread, it’s mentioned to passthrough all 4 devices related to the GPU. However in my case, there is only 2. Let’s say in Unraid System devices section, my GPU is located in 03:00:xx. I can only see a VGA compatible controller and one Audio device in 03:00:xx. I guess is it might related to usbc ports from reference card(which my model doesn’t have). Have you tried without setting multifunction in the XML?
September 10, 20232 yr Author 2 hours ago, SimonF said: Have you tried without setting multifunction in the XML? Do you mean just leave GPU part as it is in first creation? Will try that. Maybe I tried that before days ago when I just came back from a Windows Server and almost forgot how to passthrough GPU in Unraid.
September 15, 20232 yr Author On 9/10/2023 at 5:52 PM, SimonF said: Have you tried without setting multifunction in the XML? Tried this one, still got error code 43...
November 26, 2025Nov 26 I have successfuly passed my card ... but only once ... I have this config:Video: AMD Radeon RX 7900 XTXMB: ASUS PRIME X870-P (AM5)My problem is if I pass the whole m.2 with windows inside the machine I have video but the system enters in a cyclical reboot because of the security features windows is designed with :( and also ... the video works only once if I do a reboot or something it is a freeze ! because of nvidia reset bugI have to close the whole computer close power for 30 seconds so there is no current in the PC and then restart it :) very complicatedBut anyway I have done it ... it is very easy with NobaraLinux witch I have tried also and works fine
November 26, 2025Nov 26 Ok ... I have made the final test :) and currently I am on Bazzite in an Unraid VM !So ... What I did exactly is the following:1. When you start the PC in my case the main-board I have ( MB: ASUS PRIME X870-P (AM5) ) you need to find and put Igfx (instead of PCI) -> Onboard Force! the immediate option below2. I have removed all HDMI / DP cables from the AMD Radeon RX 7900 XTX - the card during the boot time must not get any video output!3. Once the Unraid OS isolates the video card above and finishes booting up4. Start the Unraid VM with the card attached and you should be all goodThe AMD Vendor Reset plugin does not help RX 7900 XTX in any way/form so do not even tryHope that helps anyonePS: I'm using the latest Unraid 7.2.2 Edited November 28, 2025Nov 28 by alexandru360
November 26, 2025Nov 26 My VM XML<?xml version='1.0' encoding='UTF-8'?><domain type='kvm' id='1'> <name>Bazzite</name> <uuid>759af212-db93-44d7-9956-d67ddfe727c7</uuid> <metadata> <vmtemplate xmlns="http://unraid" name="Arch" iconold="default.png" icon="default.png" os="arch" webui="" storage="default"/> </metadata> <memory unit='KiB'>33554432</memory> <currentMemory unit='KiB'>33554432</currentMemory> <memoryBacking> <nosharepages/> </memoryBacking> <vcpu placement='static'>12</vcpu> <cputune> <vcpupin vcpu='0' cpuset='6'/> <vcpupin vcpu='1' cpuset='18'/> <vcpupin vcpu='2' cpuset='7'/> <vcpupin vcpu='3' cpuset='19'/> <vcpupin vcpu='4' cpuset='8'/> <vcpupin vcpu='5' cpuset='20'/> <vcpupin vcpu='6' cpuset='9'/> <vcpupin vcpu='7' cpuset='21'/> <vcpupin vcpu='8' cpuset='10'/> <vcpupin vcpu='9' cpuset='22'/> <vcpupin vcpu='10' cpuset='11'/> <vcpupin vcpu='11' cpuset='23'/> </cputune> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-q35-9.2'>hvm</type> <loader readonly='yes' type='pflash' format='raw'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader> <nvram format='raw'>/etc/libvirt/qemu/nvram/759af212-db93-44d7-9956-d67ddfe727c7_VARS-pure-efi.fd</nvram> </os> <features> <acpi/> <apic/> </features> <cpu mode='host-passthrough' check='none' migratable='on'> <topology sockets='1' dies='1' clusters='1' cores='6' threads='2'/> <cache mode='passthrough'/> <feature policy='require' name='topoext'/> </cpu> <clock offset='utc'> <timer name='hpet' present='no'/> <timer name='hypervclock' present='no'/> <timer name='pit' tickpolicy='delay'/> <timer name='rtc' tickpolicy='catchup'/> </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='block' device='disk'> <driver name='qemu' type='raw' cache='writeback' discard='unmap'/> <source dev='/dev/disk/by-id/nvme-SAMSUNG_MZ9LQ512HBLU-00BVL_S73XNX0T776080' index='1'/> <backingStore/> <target dev='hdc' bus='sata' rotation_rate='1'/> <serial>S73XNX0T776080</serial> <boot order='1'/> <alias name='sata0-0-2'/> <address type='drive' controller='0' bus='0' target='0' unit='2'/> </disk> <controller type='usb' index='0' model='ich9-ehci1'> <alias name='usb'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> <alias name='usb'/> <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'> <alias name='usb'/> <master startport='2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/> </controller> <controller type='usb' index='0' model='ich9-uhci3'> <alias name='usb'/> <master startport='4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/> </controller> <controller type='pci' index='0' model='pcie-root'> <alias name='pcie.0'/> </controller> <controller type='pci' index='1' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='1' port='0x8'/> <alias name='pci.1'/> <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'/> <alias name='pci.2'/> <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'/> <alias name='pci.3'/> <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'/> <alias name='pci.4'/> <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'/> <alias name='pci.5'/> <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'/> <alias name='pci.6'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x5'/> </controller> <controller type='virtio-serial' index='0'> <alias name='virtio-serial0'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> </controller> <controller type='sata' index='0'> <alias name='ide'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> </controller> <interface type='bridge'> <mac address='52:54:00:95:aa:e9'/> <source bridge='br0'/> <target dev='vnet0'/> <model type='virtio-net'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </interface> <serial type='pty'> <source path='/dev/pts/0'/> <target type='isa-serial' port='0'> <model name='isa-serial'/> </target> <alias name='serial0'/> </serial> <console type='pty' tty='/dev/pts/0'> <source path='/dev/pts/0'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> <channel type='unix'> <source mode='bind' path='/run/libvirt/qemu/channel/1-Bazzite/org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/> <alias name='channel0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <input type='mouse' bus='ps2'> <alias name='input0'/> </input> <input type='keyboard' bus='ps2'> <alias name='input1'/> </input> <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> <alias name='hostdev0'/> <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='0x03' slot='0x00' function='0x1'/> </source> <alias name='hostdev1'/> <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x0b' slot='0x00' function='0x0'/> </source> <alias name='hostdev2'/> <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/> </hostdev> <watchdog model='itco' action='reset'> <alias name='watchdog0'/> </watchdog> <memballoon model='none'/> </devices> <seclabel type='dynamic' model='dac' relabel='yes'> <label>+0:+100</label> <imagelabel>+0:+100</imagelabel> </seclabel></domain>
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.