Problem with GPU Passthrough (AMD RX 9060 XT)

m4tt.io

New Member
Dec 13, 2025
4
0
1
Hello all,

I'm having some problems while trying to passthrough the GPU to a VM, here is my IOMMU configuration and lspci, the GPU itself is the Reaper AMD Radeon™ RX 9060 XT 16GB:

IOMMU:
Code:
IOMMU Group 83:
        03:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Upstream Port of PCI Express Switch [1002:1478] (rev 25)
IOMMU Group 84:
        04:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch [1002:1479] (rev 25)

lspci -vv:
Code:
03:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Upstream Port of PCI Express Switch (rev 25) (prog-if 00 [Normal decode])
        Subsystem: Tul Corporation / PowerColor Device 1478
        Physical Slot: 6
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 29
        NUMA node: 0
        IOMMU group: 83
        Region 0: Memory at c7200000 (32-bit, non-prefetchable) [size=16K]
        Bus: primary=03, secondary=04, subordinate=05, sec-latency=0
        I/O behind bridge: 6000-6fff [size=4K] [16-bit]
        Memory behind bridge: c7100000-c71fffff [size=1M] [32-bit]
        Prefetchable memory behind bridge: 383400000000-38380fffffff [size=16640M] [32-bit]
        Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
        BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16+ MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
        Capabilities: [48] Vendor Specific Information: Len=08 <?>
        Capabilities: [50] Power Management version 3
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [58] Express (v2) Upstream Port, IntMsgNum 0
                DevCap: MaxPayload 512 bytes, PhantFunc 0
                        ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ SlotPowerLimit 26W TEE-IO-
                DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
                        RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop+
                        MaxPayload 256 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
                LnkCap: Port #0, Speed 32GT/s, Width x16, ASPM L1, Exit Latency L1 <64us
                        ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
                LnkCtl: ASPM Disabled; LnkDisable- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 8GT/s (downgraded), Width x16
                        TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
                         10BitTagComp+ 10BitTagReq+ OBFF Not Supported, ExtFmt+ EETLPPrefix+, MaxEETLPPrefixes 4
                         EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
                         FRS-
                         AtomicOpsCap: Routing+ 32bit- 64bit- 128bitCAS-
                DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
                         AtomicOpsCtl: EgressBlck-
--
04:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch (rev 25) (prog-if 00 [Normal decode])
        Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 35
        NUMA node: 0
        IOMMU group: 84
        Bus: primary=04, secondary=05, subordinate=05, sec-latency=0
        I/O behind bridge: 6000-6fff [size=4K] [16-bit]
        Memory behind bridge: c7100000-c71fffff [size=1M] [32-bit]
        Prefetchable memory behind bridge: 383400000000-38380fffffff [size=16640M] [32-bit]
        Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR-
        BridgeCtl: Parity- SERR+ NoISA- VGA- VGA16+ MAbort- >Reset- FastB2B-
                PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
        Capabilities: [50] Power Management version 3
                Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
                Status: D3 NoSoftRst+ PME-Enable+ DSel=0 DScale=0 PME-
        Capabilities: [58] Express (v2) Downstream Port (Slot-), IntMsgNum 0
                DevCap: MaxPayload 512 bytes, PhantFunc 0
                        ExtTag+ RBE+ TEE-IO-
                DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
                        RlxdOrd- ExtTag+ PhantFunc- AuxPwr- NoSnoop+
                        MaxPayload 256 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq+ AuxPwr- TransPend-
                LnkCap: Port #0, Speed 32GT/s, Width x16, ASPM L1, Exit Latency L1 <1us
                        ClockPM- Surprise- LLActRep+ BwNot+ ASPMOptComp+
                LnkCtl: ASPM Disabled; LnkDisable- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt+ AutBWInt+
                LnkSta: Speed 32GT/s, Width x16
                        TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Not Supported, TimeoutDis- NROPrPrP- LTR+
                         10BitTagComp+ 10BitTagReq+ OBFF Not Supported, ExtFmt+ EETLPPrefix+, MaxEETLPPrefixes 4
                         EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
                         FRS- ARIFwd-
                         AtomicOpsCap: Routing+
                DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- ARIFwd-
                         AtomicOpsCtl: EgressBlck-
                         IDOReq- IDOCompl- LTR- EmergencyPowerReductionReq-
                         10BitTagReq- OBFF Disabled, EETLPPrefixBlk-
                LnkCap2: Supported Link Speeds: 2.5-32GT/s, Crosslink- Retimer+ 2Retimers+ DRS-
                LnkCtl2: Target Link Speed: 32GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -3.5dB
--
        Capabilities: [c0] Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch
        Capabilities: [100 v1] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
        Capabilities: [150 v2] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
                        ECRC- UnsupReq- ACSViol- UncorrIntErr- BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
                        PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
                        ECRC- UnsupReq- ACSViol- UncorrIntErr- BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
                        PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
                UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+
                        ECRC- UnsupReq- ACSViol- UncorrIntErr+ BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
                        PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
                CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ CorrIntErr- HeaderOF-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ CorrIntErr- HeaderOF-
                AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
                        MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
                HeaderLog: 00000000 00000000 00000000 00000000
        Capabilities: [270 v1] Secondary PCI Express
                LnkCtl3: LnkEquIntrruptEn- PerformEqu+
                LaneErrStat: 0
        Capabilities: [2a0 v1] Access Control Services
                ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans+
                ACSCtl: SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl- DirectTrans-
        Capabilities: [400 v1] Data Link Feature <?>
        Capabilities: [410 v1] Physical Layer 16.0 GT/s <?>
        Capabilities: [450 v1] Lane Margining at the Receiver
                PortCap: Uses Driver-
                PortSta: MargReady+ MargSoftReady-
        Capabilities: [500 v1] Physical Layer 32.0 GT/s <?>
        Kernel driver in use: pcieport

The GPU is splitted between two IOMMU groups: 83 and 84, no idea why, I tried to change the PCI slot, but still the device remains splitted, I also try to setup a VFIO for this device but without success, that's the configuration that I'm currently using, btw, my system supports ACS and it's enable in the BIOS:

I just followed this tutorial: https://syncbricks.com/gpu-passthrough-in-proxmox-ve/

/etc/default/grub:
Code:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:off,efifb:off"

/etc/modules:
Code:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

/etc/modprobe.d/vfio.conf:
Code:
options vfio-pci ids=1002:1478,1002:1479 disable_vga=1

/etc/modprobe.d/blacklist.conf:
Code:
blacklist amdgpu
blacklist radeon

No vfio device is showing up on lspci after rebooting, and also no AMD device is listed to add on the VM.
I also tried to map the devices into a single one on the web ui and add it to the VM without success.

Captura de ecrã 2025-12-13 201131.png

Anyone having this issue with this GPU? What I'm missing?
 
The GPU is splitted between two IOMMU groups: 83 and 84, no idea why, I tried to change the PCI slot, but still the device remains splitted, I also try to setup a VFIO for this device but without success, that's the configuration that I'm currently using, btw, my system supports ACS and it's enable in the BIOS:
That's normal and not a problem. Apparently, there is IOMMU isolation between the different parts of the GPU and that is fine. This is not the cause of any problems that you have with passthrough.
Why not follow the Proxmox manual, Wiki or forum threads?
/etc/default/grub:
Code:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:off,efifb:off"
intel_iommu=on is not necessary for some time. video=vesafb:off,efifb:off is wrong and therefore does nothing. Even if you change it to be correct, it does noting on Proxmox.
pcie_acs_override=downstream,multifunction makes the passthrough insecure. Do you really need it?
nofb nomodeset makes me think that this is the only GPU in the system and it is used during boot? If so, and the GPU does not reset properly, then you need a different work-around.
/etc/modules:
Code:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
vfio_virqfd no longer exists. You appear to be using a guide that is, at least, out of date.
No vfio device is showing up on lspci after rebooting, and also no AMD device is listed to add on the VM.
I also tried to map the devices into a single one on the web ui and add it to the VM without success.

View attachment 93979

Anyone having this issue with this GPU? What I'm missing?
Don't select two devices in the same PCI mapping. It does not do what you expect it to do. Maybe start with a Raw device selection in the VM configuration (and do the PCI mapping later). Please show the VM configuration (file) as there might be more issues. There is also no guarantee that passthrough will work for this GPU but there might be work-arounds.
 
Hello, thanks for the reply.
Why not follow the Proxmox manual, Wiki or forum threads?
I followed as well, I was taking a look on the official wiki first https://pve.proxmox.com/wiki/PCI_Passthrough but didn't find how to make it work :(
Don't select two devices in the same PCI mapping. It does not do what you expect it to do. Maybe start with a Raw device selection in the VM configuration (and do the PCI mapping later).
The device don't even show up on the RAW device selection, that's why I tried to map it, I thought that maybe the IOMMU stuff was interfering with something, no idea that is happening, here is my VM configuration file:

Code:
affinity: 0-7,16-23
agent: 1
balloon: 0
bios: ovmf
boot: order=scsi0
cores: 16
cpu: host
efidisk0: local-lvm:vm-100-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M
hostpci0: 0000:06:00,pcie=1,x-vga=1
hostpci1: 0000:00:1b.0
machine: q35
memory: 43008
meta: creation-qemu=10.0.2,ctime=1759589320
name: matt-vm
net0: virtio=BC:24:11:F8:52:6B,bridge=vmbr0,firewall=1
numa: 1
numa0: cpus=0-15,hostnodes=0,memory=43008,policy=bind
ostype: l26
sata0: cdrom,media=cdrom
scsi0: local-lvm:vm-100-disk-1,iothread=1,size=200G,ssd=1
scsihw: virtio-scsi-single
smbios1: uuid=a68119f3-38f3-4fcf-b817-6c10776fdbad
sockets: 1
tags: desktop
usb0: host=3-13
usb1: host=3-14
usb2: host=03f0:6941
usb3: host=145f:031f
usb4: host=0c45:6366
usb5: host=152d:a576
vga: none
vmgenid: e7e81b7b-3f55-493e-878a-8f9b237b8d20

captura.png

Only the first GPU is showing up, the second one (AMD is not even there), it only show up on lspci and on PCI mapping...

I also removed vfio_virqfd as you said and
Code:
video=vesafb:off,efifb:off
from the kernel arguments

pcie_acs_override=downstream,multifunction makes the passthrough insecure. Do you really need it?
Tbh, I just want it to work, its for my homelab, I'm just searching for a workaround... If there's no solution I'll have to return the GPU for the seller. :(
 
Last edited:
Tbh, I just want it to work, its for my homelab, I'm just searching for a workaround... If there's no solution I'll have to return the GPU for the seller. :(
That would be much easier for me than trying to help.. PCI(e) passthrough is never guaranteed, unfortunately.
hostpci0: 0000:06:00,pcie=1,x-vga=1
hostpci1: 0000:00:1b.0
Maybe try instead (x-vga=1/Primary GPU is for NVidia only):
Code:
hostpci0: 0000:03:00,pcie=1
hostpci1: 0000:04.00,pcie=1
Only the first GPU is showing up, the second one (AMD is not even there), it only show up on lspci and on PCI mapping...
That's probably because the description contains "PCI Express Switch" or something. Maybe the PCI ID database is old. It's not possible for me to see all your devices, so I cannot tell where the other parts of the GPU (if there are any) ended up. Screenshots are terrible for this and text (in CODE-tags) would be much better. It's not uncommon for modern GPUs to present themselves as multiple devices and also to be behind a PCIe multiplexer/switch (which is onboard of the GPU). pcie_acs_override might also interfere here, not sure..
 
Last edited:
Thank you, I think that I'm going to return it back to the seller, I was doing some tests and the system is not displaying anything when I remove the NVIDIA GPU, probably it's defective.. Or it's not compatible with my system at all.
 
The RX90XX won't work on older motherboards because they lack BIOS support.

I encountered the same issue with the X10SRM-TF in the past. I've seen similar reports on forums (involving cheap Chinese X99 motherboards) and have shared this information before.


In that case, only the PCIe bridge would be detected, and the GPU wouldn't appear—exactly the situation you described.

Note that this is not a GPU issue. The board functioned correctly in the new environment.

* Older socket products like AM4, LGA3647, LGA1200, and LGA1151 appear to be compatible, but even those require a BIOS update after the rx9070 release. The LGA2011-3 product reached its end-of-support date quite some time ago, so the manufacturer likely no longer provides a BIOS update.

It's not a problem; it's the motherboard's specification that cannot support the new GPU.
 
Last edited:
The RX90XX won't work on older motherboards because they lack BIOS support.

I encountered the same issue with the X10SRM-TF in the past. I've seen similar reports on forums (involving cheap Chinese X99 motherboards) and have shared this information before.


In that case, only the PCIe bridge would be detected, and the GPU wouldn't appear—exactly the situation you described.

Note that this is not a GPU issue. The board functioned correctly in the new environment.

* Older socket products like AM4, LGA3647, LGA1200, and LGA1151 appear to be compatible, but even those require a BIOS update after the rx9070 release. The LGA2011-3 product reached its end-of-support date quite some time ago, so the manufacturer likely no longer provides a BIOS update.

It's not a problem; it's the motherboard's specification that cannot support the new GPU.
That's exactly what's happening, lspci only shows the PCIe bridge:

Code:
03:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Upstream Port of PCI Express Switch (rev 25)
04:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch (rev 25)

Not the GPU itself with the audio component, my platform is a X99 with dual Xeon, the GPU is not recognized by the BIOS during the boot process, that's why there's no video output, btw I have resizable bar enable and 4G Decode as well.

Even though it's not working as a host video card, is there any way to get it passthrough to some VM?
 
Last edited:
If you can request a BIOS update from the vendor and obtain one that supports the new components, that should work.

Since new BIOS updates to support new hardware on end-of-support products are unlikely to be provided, purchasing a new CPU/RAM/motherboard is the solution.
 
  • Like
Reactions: m4tt.io