Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Help with 7900XTX passthrough to Windows 11 VM

Featured Replies

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).

  • 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?

  • 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.

  • 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... 

  • 4 months later...

Did you manage to solve this issue? If yes, how?

  • 11 months later...

I'm also having this same issue.

 

  • 10 months later...

I have successfuly passed my card ... but only once ...

I have this config:
Video: AMD Radeon RX 7900 XTX
MB: 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 bug

I have to close the whole computer close power for 30 seconds so there is no current in the PC and then restart it :) very complicated

But anyway I have done it ... it is very easy with NobaraLinux witch I have tried also and works fine )

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 below
2. 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 up

4. Start the Unraid VM with the card attached and you should be all good

The AMD Vendor Reset plugin does not help RX 7900 XTX in any way/form so do not even try

Hope that helps anyone

PS: I'm using the latest Unraid 7.2.2

Edited by alexandru360

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.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.