[SOLVED] RTX 4080 passthrough to Windows guest on Asus ProArt X870E Creator WiFi

a5cent

New Member
Sep 10, 2025
10
2
3
The only issue I had was the nVidia Windows driver throwing up Code 43. This was my approach to fixing it:

Standard BIOS settings required for PCIe passthrough:

« Advanced « CPU Configuration « SVM ModeEnabled
« Advanced « AMD CBS « IOMMUEnabled
« Advanced « PCI Subsystem Settings « SR-IOV SupportEnabled
« Advanced « PCI Subsystem Settings « Resize BAR SupportEnabled

On the Asus ProArt X670E, passthrough only worked with Resize BAR disabled. On the X870E, it works with Resize BAR enabled.

Initial Problem

My problem was this:
Bash:
lspci -nnk -d 10de:22bb
[    4.481006] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.1/0000:01:00.1/sound/card1/input12
[    4.481170] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.1/0000:01:00.1/sound/card1/input13
[    4.481288] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.1/0000:01:00.1/sound/card1/input14
[    4.481473] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:01.1/0000:01:00.1/sound/card1/input15

While the Proxmox host didn't touch the GPU, it was binding to the GPU's integrated audio interface. While the guest could output video using the GPU, Windows Device Manager reported that the driver was stopped with Code 43.

1)
I tried to force VFIO to reserve the GPU and the integrated audio device early by adding vfio-pci.ids=10de:2704,10de:22bb to grub:

/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=pt vfio-pci.ids=10de:2704,10de:22bb"

This did not change anything. I also suspect this is unnecessary. but I'm mentioning it here to document my thought process.

2)
Similar to how nVidia drivers are blacklsited, I then blacklisted the audio drivers:

/etc/modprobe.d/blacklist-hda.conf
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
update-initramfs -u -k all

After a reboot lspci now gave me this:
Bash:
lspci -nnk -d 10de:22bb
03:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:22bb] (rev a1)
    Subsystem: ASUSTeK Computer Inc. Device [1043:8900]
    Kernel driver in use: vfio-pci
    Kernel modules: snd_hda_intel

The Proxmox host was no longer initializing the GPUs integrated audio device, but it still didn't work.

3)
The last step was to explicitly pass through BOTH the GPU and its integrated audio device to the guest. Up until this point I was only passing through the GPU, which had worked on the Asus ProArt X670E. I was not able to specify the full PCIe address for both devices using the Proxmox web UI, so I edited the guest's conf file:

/etc/pve/qemu-server/{vmid}.conf
hostpci0: 0000:03:00.0,pcie=1,x-vga=1
hostpci1: 0000:03:00.1,pcie=1
Note it's using the full PCIe address (includes the .0 and .1). Including pcie=1 is also important, as that passes the card through as a PCIe device rather than a legacy PCI device.

A reboot later and this worked correctly. No ROM files required.
 
Last edited:
The Asus ProArt X870E Creator WiFi is a fine board for Proxmox and PCIe passthrough. For those interested:

IOMMU groups (with two PCIe GPUs installed):

Bash:
 ./list-iommu.sh
Group 0:        [1022:14d8]     00:00.0  Host bridge                              Raphael/Granite Ridge Root Complex
Group 1:        [1022:14da]     00:01.0  Host bridge                              Raphael/Granite Ridge Dummy Host Bridge
Group 2:        [1022:14db] [R] 00:01.1  PCI bridge                               Raphael/Granite Ridge GPP Bridge
Group 3:        [1022:14db] [R] 00:01.2  PCI bridge                               Raphael/Granite Ridge GPP Bridge
Group 4:        [1022:14db] [R] 00:01.3  PCI bridge                               Raphael/Granite Ridge GPP Bridge
Group 5:        [1022:14da]     00:02.0  Host bridge                              Raphael/Granite Ridge Dummy Host Bridge
Group 6:        [1022:14db] [R] 00:02.1  PCI bridge                               Raphael/Granite Ridge GPP Bridge
Group 7:        [1022:14db] [R] 00:02.2  PCI bridge                               Raphael/Granite Ridge GPP Bridge
Group 8:        [1022:14da]     00:03.0  Host bridge                              Raphael/Granite Ridge Dummy Host Bridge
Group 9:        [1022:14da]     00:04.0  Host bridge                              Raphael/Granite Ridge Dummy Host Bridge
Group 10:       [1022:14da]     00:08.0  Host bridge                              Raphael/Granite Ridge Dummy Host Bridge
Group 11:       [1022:14dd] [R] 00:08.1  PCI bridge                               Raphael/Granite Ridge Internal GPP Bridge to Bus [C:A]
Group 12:       [1022:14dd] [R] 00:08.3  PCI bridge                               Raphael/Granite Ridge Internal GPP Bridge to Bus [C:A]
Group 13:       [1022:790b]     00:14.0  SMBus                                    FCH SMBus Controller
                [1022:790e]     00:14.3  ISA bridge                               FCH LPC Bridge
Group 14:       [1022:14e0]     00:18.0  Host bridge                              Raphael/Granite Ridge Data Fabric; Function 0
                [1022:14e1]     00:18.1  Host bridge                              Raphael/Granite Ridge Data Fabric; Function 1
                [1022:14e2]     00:18.2  Host bridge                              Raphael/Granite Ridge Data Fabric; Function 2
                [1022:14e3]     00:18.3  Host bridge                              Raphael/Granite Ridge Data Fabric; Function 3
                [1022:14e4]     00:18.4  Host bridge                              Raphael/Granite Ridge Data Fabric; Function 4
                [1022:14e5]     00:18.5  Host bridge                              Raphael/Granite Ridge Data Fabric; Function 5
                [1022:14e6]     00:18.6  Host bridge                              Raphael/Granite Ridge Data Fabric; Function 6
                [1022:14e7]     00:18.7  Host bridge                              Raphael/Granite Ridge Data Fabric; Function 7
Group 15:       [10de:2571] [R] 01:00.0  VGA compatible controller                GA106 [RTX A2000 12GB]
                [10de:228e]     01:00.1  Audio device                             GA106 High Definition Audio Controller
Group 16:       [144d:a80c] [R] 02:00.0  Non-Volatile memory controller           NVMe SSD Controller S4LV008[Pascal]
Group 17:       [10de:2704] [R] 03:00.0  VGA compatible controller                AD103 [GeForce RTX 4080]
                [10de:22bb]     03:00.1  Audio device                             Device 22bb
Group 18:       [1022:43f4] [R] 04:00.0  PCI bridge                               600 Series Chipset PCIe Switch Upstream Port
Group 19:       [1022:43f5] [R] 05:00.0  PCI bridge                               600 Series Chipset PCIe Switch Downstream Port
Group 20:       [1022:43f5] [R] 05:08.0  PCI bridge                               600 Series Chipset PCIe Switch Downstream Port
                [1022:43f4] [R] 07:00.0  PCI bridge                               600 Series Chipset PCIe Switch Upstream Port
                [1022:43f5] [R] 08:00.0  PCI bridge                               600 Series Chipset PCIe Switch Downstream Port
                [1022:43f5] [R] 08:05.0  PCI bridge                               600 Series Chipset PCIe Switch Downstream Port
                [1022:43f5] [R] 08:08.0  PCI bridge                               600 Series Chipset PCIe Switch Downstream Port
                [1022:43f5]     08:0c.0  PCI bridge                               600 Series Chipset PCIe Switch Downstream Port
                [1022:43f5]     08:0d.0  PCI bridge                               600 Series Chipset PCIe Switch Downstream Port
                [8086:125c] [R] 0a:00.0  Ethernet controller                      Ethernet Controller I226-V
                [144d:a80c] [R] 0b:00.0  Non-Volatile memory controller           NVMe SSD Controller S4LV008[Pascal]
                [1022:43fd] [R] 0c:00.0  USB controller                           800 Series Chipset USB 3.x XHCI Controller
USB:            [1d6b:0002]              Bus 001 Device 001                       Linux Foundation 2.0 root hub
USB:            [0bda:5411]              Bus 001 Device 002                       Realtek Semiconductor Corp. RTS5411 Hub
USB:            [0b05:19af]              Bus 001 Device 003                       ASUSTek Computer, Inc. AURA LED Controller
USB:            [04f2:2219]              Bus 001 Device 004                       Chicony Electronics Co., Ltd Perixx Ergo PB-835
USB:            [1532:00b2]              Bus 001 Device 005                       Razer USA, Ltd Razer DeathAdder V3
USB:            [1d6b:0003]              Bus 002 Device 001                       Linux Foundation 3.0 root hub
USB:            [0bda:0411]              Bus 002 Device 002                       Realtek Semiconductor Corp. Hub
                [1022:43f6] [R] 0d:00.0  SATA controller                          600 Series Chipset SATA Controller
Group 21:       [1022:43f5]     05:0c.0  PCI bridge                               600 Series Chipset PCIe Switch Downstream Port
                [1022:43fd] [R] 0e:00.0  USB controller                           800 Series Chipset USB 3.x XHCI Controller
Group 22:       [1022:43f5]     05:0d.0  PCI bridge                               600 Series Chipset PCIe Switch Downstream Port
                [1022:43f6] [R] 0f:00.0  SATA controller                          600 Series Chipset SATA Controller
Group 23:       [1b21:2421] [R] 10:00.0  PCI bridge                               ASM4242 PCIe Switch Upstream Port
Group 24:       [1b21:2423] [R] 11:00.0  PCI bridge                               ASM4242 PCIe Switch Downstream Port
Group 25:       [1b21:2423] [R] 11:01.0  PCI bridge                               ASM4242 PCIe Switch Downstream Port
Group 26:       [1b21:2423] [R] 11:02.0  PCI bridge                               ASM4242 PCIe Switch Downstream Port
                [1b21:2426] [R] 76:00.0  USB controller                           ASM4242 USB 3.2 xHCI Controller
USB:            [1d6b:0002]              Bus 005 Device 001                       Linux Foundation 2.0 root hub
USB:            [1d6b:0003]              Bus 006 Device 001                       Linux Foundation 3.0 root hub
Group 27:       [1b21:2423] [R] 11:03.0  PCI bridge                               ASM4242 PCIe Switch Downstream Port
                [1b21:2425] [R] 77:00.0  USB controller                           ASM4242 USB 4 / Thunderbolt 3 Host Router
Group 28:       [1002:164e] [R] 78:00.0  VGA compatible controller                Raphael
Group 29:       [1002:1640] [R] 78:00.1  Audio device                             Radeon High Definition Audio Controller [Rembrandt/Strix]
Group 30:       [1022:1649]     78:00.2  Encryption controller                    Family 19h PSP/CCP
Group 31:       [1022:15b6] [R] 78:00.3  USB controller                           Raphael/Granite Ridge USB 3.1 xHCI
USB:            [1d6b:0002]              Bus 007 Device 001                       Linux Foundation 2.0 root hub
USB:            [1d6b:0003]              Bus 008 Device 001                       Linux Foundation 3.0 root hub
Group 32:       [1022:15b7] [R] 78:00.4  USB controller                           Raphael/Granite Ridge USB 3.1 xHCI
USB:            [1d6b:0003]              Bus 010 Device 001                       Linux Foundation 3.0 root hub
USB:            [1d6b:0002]              Bus 009 Device 001                       Linux Foundation 2.0 root hub
Group 33:       [1022:15e3]     78:00.6  Audio device                             Family 17h/19h/1ah HD Audio Controller
Group 34:       [1022:15b8] [R] 79:00.0  USB controller                           Raphael/Granite Ridge USB 2.0 xHCI
USB:            [1d6b:0002]              Bus 011 Device 001                       Linux Foundation 2.0 root hub
USB:            [1d6b:0003]              Bus 012 Device 001                       Linux Foundation 3.0 root hub

In addition to the two GPUs I'm also passing through the USB controller in IOMMU group 21.

MMIO address space.

The Asus ProArt X870 offers over 960 GB of MMIO address space. The precursor didn't even manage 1 GB, which made it impossible to passthrough more then a single nVidia GPU. This is the main reason I upgraded:

Bash:
cat /proc/iomem | grep -i 'PCI Bus'
  000a0000-000dffff : PCI Bus 0000:00
80000000-dfffffff : PCI Bus 0000:00
  80000000-806fffff : PCI Bus 0000:04
    80000000-806fffff : PCI Bus 0000:05
      80000000-804fffff : PCI Bus 0000:07
        80000000-804fffff : PCI Bus 0000:08
          80000000-801fffff : PCI Bus 0000:0a
          80200000-802fffff : PCI Bus 0000:0b
          80300000-803fffff : PCI Bus 0000:0c
          80400000-804fffff : PCI Bus 0000:0d
      80500000-805fffff : PCI Bus 0000:0e
      80600000-806fffff : PCI Bus 0000:0f
  a8000000-d87fffff : PCI Bus 0000:10
    a8000000-d87fffff : PCI Bus 0000:11
      a8000000-bfffffff : PCI Bus 0000:16
      c0000000-d7ffffff : PCI Bus 0000:46
      d8000000-d83fffff : PCI Bus 0000:76
      d8400000-d87fffff : PCI Bus 0000:77
  d9000000-da0fffff : PCI Bus 0000:03
  db000000-dc0fffff : PCI Bus 0000:01
  dc900000-dccfffff : PCI Bus 0000:78
  dcd00000-dcdfffff : PCI Bus 0000:79
  dce00000-dcefffff : PCI Bus 0000:02
1080000000-ffffffffff : PCI Bus 0000:00
  b000000000-efffffffff : PCI Bus 0000:10
    b000000000-efffffffff : PCI Bus 0000:11
      b000000000-cfffffffff : PCI Bus 0000:16
      d000000000-efffffffff : PCI Bus 0000:46
  f000000000-f401ffffff : PCI Bus 0000:03
  f600000000-f801ffffff : PCI Bus 0000:01
  f810000000-f8201fffff : PCI Bus 0000:78
 
Last edited: