Gigabyte X870E (AGESA 1.2.2.*) – GPU Passthrough Fails with “Firmware has requested this device have a 1:1 IOMMU mapping” (vfio-pci)

Hi all — I’m trying to determine whether GPU passthrough is currently possible on the Gigabyte X870E platform, or whether this is a firmware/AGESA limitation that needs vendor fixes.

I have spent several days troubleshooting, made all standard VFIO changes, and even attempted both NVIDIA and older Quadro cards. Both fail identically, and I am hoping someone with X870/X870E experience can confirm whether anyone has passthrough working yet, or whether AMD’s identity-mapping requirement is still blocking this.


Hardware

  • Motherboard: Gigabyte X870E Eagle WiFi7
    • BIOS: F8d, Release Date: 2025-09-18
    • AGESA version appears to be 1.2.2.x (Gigabyte does not list explicitly)
  • CPU: AMD Ryzen (Raphael platform)
  • Host OS: Proxmox VE 9 (kernel 6.14.11-4-pve)
  • GPUs tried:
    • NVIDIA GeForce RTX 4070 Ti SUPER (10de:2705)
    • NVIDIA Quadro K2000 (GK107GL) (10de:0ffe)

Both GPUs successfully bind to vfio-pci at boot.


Symptoms

The VM attempts to start, resets the GPU, and then immediately fails.
QEMU exits with code 1.

Key dmesg output during VM launch:

vfio-pci 0000:01:00.0: resetting
vfio-pci 0000:01:00.0: reset done
vfio-pci 0000:01:00.0: Firmware has requested this device have a 1:1 IOMMU mapping, 
rejecting configuring the device without a 1:1 mapping. Contact your platform vendor.

This repeats in a loop for any attached GPU.


IOMMU Status & Kernel Parameters

Current kernel cmdline (confirmed applied):

quiet amd_iommu=on iommu=pt iommu=1 iommu.passthrough=1 iommufd=on iommu.strict=0 \
kvm.allow_unsafe_assigned_interrupts=1 reboot=efi video=efifb:off

IOMMU reports proper grouping, including GPU and audio functions:

pci 0000:01:00.0: Adding to iommu group 14
pci 0000:01:00.1: Adding to iommu group 14

IOMMU mode shows passthrough domain active:

iommu: Default domain type: Passthrough (set via kernel command line)

VFIO modules loaded correctly:

vfio_pci
vfio
vfio_iommu_type1
iommufd

VM Settings

Using OVMF UEFI, machine type q35, and the following CPU option:

cpu: host,hidden=1,flags=+pcid

Tried both “Raw PCI device” and “Mapped PCI device” in Proxmox.
Both fail with the same 1:1 mapping error.

VM works normally when GPU passthrough is removed.


What I Have Already Tried

  • Turning off efifb (video=efifb:off)
  • Ensuring GPU is not grabbed by amdgpu/nvidia/nouveau
  • Verified GPU bound to vfio-pci from boot
  • Using iommu.strict=0
  • Using iommu=pt + identity map attempts
  • Rebuilding initramfs and updating GRUB multiple times
  • Passing through only one GPU or the other (same failure)
  • Checking 100.conf formatting and passthrough flags
  • Disabling all virtualization security/CSM in BIOS
  • Multiple Proxmox kernel versions

All attempts fail identically with:
“Firmware has requested this device have a 1:1 IOMMU mapping.”


The Key Question

Has anyone successfully passed through a GPU on an X870 or X870E motherboard (any vendor, any BIOS/AGESA version)?

The vfio-pci error strongly suggests that AMD’s firmware expects an IOMMU identity-map mode that the Linux kernel does not currently (or cannot safely) provide.

I cannot find any confirmed success reports for this chipset, only group listings.

I’m trying to determine whether:

  1. This platform is currently incapable of PCIe GPU passthrough due to firmware/AGESA bugs,
  2. A BIOS update is expected to resolve this,
  3. A kernel-side workaround exists or is being developed,
  4. Or whether I’ve missed something obvious.

If helpful, here is the exact boot dmesg block

vfio-pci 0000:01:00.0: Firmware has requested this device have a 1:1 IOMMU mapping, 
rejecting configuring the device without a 1:1 mapping. Contact your platform vendor.

This message repeats continuously whenever QEMU tries to attach the device.


What I’m Looking For

  • A report of any successful GPU passthrough on X870/X870E
  • Knowledge about firmware/AGESA plans for identity mapping support
  • Confirmation from anyone following AMD IOMMU kernel patches
  • Any known workarounds (ACPI IVRS overrides, kernel patching, etc.)

Happy to provide full logs or test configurations if useful.

Thanks in advance — just trying to determine whether this chipset is ready for VFIO use or if we need to wait for AMD/Gigabyte to update their firmware.

run the ls iommu script and show us your groups.

the error usually means something kike everything in the group should be passed

possibly you could use acs override but … maybe not needed

if it’s the only thing in group 14 you passing through .0 and .1 ? have to pass both

1 Like

Thanks - the group in question is first and everything is below. I am passing both as such but have tried all parameter on and off. I just tried passing only audio (01:00.1) and got the exact same error (on 01:00.0) which I understand is expected. I understand there may be a lack of functionality in the firmware - which would suck…

hostpci0: 0000:01:00.0,pcie=1,rombar=0
hostpci1: 0000:01:00.1,pcie=1,rombar=0
IOMMU Group 14:
        01:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD103 [GeForce RTX 4070 Ti SUPER] [10de:2705] (rev a1)
        01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:22bb] (rev a1)

IOMMU Group 0:
        00:00.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Root Complex [1022:14d8]

IOMMU Group 1:
        00:01.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Dummy Host Bridge [1022:14da]

IOMMU Group 10:
        00:08.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Internal GPP Bridge to Bus [C:A] [1022:14dd]

IOMMU Group 11:
        00:08.3 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Internal GPP Bridge to Bus [C:A] [1022:14dd]

IOMMU Group 12:
        00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:790b] (rev 71)
        00:14.3 ISA bridge [0601]: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge [1022:790e] (rev 51)

IOMMU Group 13:
        00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 0 [1022:14e0]
        00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 1 [1022:14e1]
        00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 2 [1022:14e2]
        00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 3 [1022:14e3]
        00:18.4 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 4 [1022:14e4]
        00:18.5 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 5 [1022:14e5]
        00:18.6 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 6 [1022:14e6]
        00:18.7 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Data Fabric; Function 7 [1022:14e7]

IOMMU Group 14:
        01:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD103 [GeForce RTX 4070 Ti SUPER] [10de:2705] (rev a1)
        01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:22bb] (rev a1)

IOMMU Group 15:
        02:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD 9100 PRO [PM9E1] [144d:a810]

IOMMU Group 16:
        03:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Upstream Port [1022:43f4] (rev 01)

IOMMU Group 17:
        04:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01)
        05:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107GL [Quadro K2000] [10de:0ffe] (rev a1)
        05:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1)

IOMMU Group 18:
        04:01.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01)

IOMMU Group 19:
        04:02.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01)
        07:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller [10ec:8125] (rev 0c)

IOMMU Group 2:
        00:01.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge GPP Bridge [1022:14db]

IOMMU Group 20:
        04:03.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01)
        08:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8922AE 802.11be PCIe Wireless Network Adapter [10ec:8922] (rev 01)

IOMMU Group 21:
        04:04.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01)

IOMMU Group 22:
        04:05.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01)

IOMMU Group 23:
        04:06.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01)

IOMMU Group 24:
        04:07.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01)

IOMMU Group 25:
        04:08.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01)
        0d:00.0 Non-Volatile memory controller [0108]: Silicon Motion, Inc. SM2268XT (DRAM-less) NVMe SSD Controller [126f:2268] (rev 03)

IOMMU Group 26:
        04:0a.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01)
        0e:00.0 Non-Volatile memory controller [0108]: Silicon Motion, Inc. SM2268XT (DRAM-less) NVMe SSD Controller [126f:2268] (rev 03)

IOMMU Group 27:
        04:0c.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01)
        0f:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 800 Series Chipset USB 3.x XHCI Controller [1022:43fc] (rev 01)

IOMMU Group 28:
        04:0d.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset PCIe Switch Downstream Port [1022:43f5] (rev 01)
        10:00.0 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] 600 Series Chipset SATA Controller [1022:43f6] (rev 01)

IOMMU Group 29:
        11:00.0 PCI bridge [0604]: ASMedia Technology Inc. ASM4242 PCIe Switch Upstream Port [1b21:2421] (rev 01)

IOMMU Group 3:
        00:01.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge GPP Bridge [1022:14db]

IOMMU Group 30:
        12:00.0 PCI bridge [0604]: ASMedia Technology Inc. ASM4242 PCIe Switch Downstream Port [1b21:2423] (rev 01)

IOMMU Group 31:
        12:01.0 PCI bridge [0604]: ASMedia Technology Inc. ASM4242 PCIe Switch Downstream Port [1b21:2423] (rev 01)

IOMMU Group 32:
        12:02.0 PCI bridge [0604]: ASMedia Technology Inc. ASM4242 PCIe Switch Downstream Port [1b21:2423] (rev 01)
        73:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM4242 USB 3.2 xHCI Controller [1b21:2426] (rev 01)

IOMMU Group 33:
        12:03.0 PCI bridge [0604]: ASMedia Technology Inc. ASM4242 PCIe Switch Downstream Port [1b21:2423] (rev 01)
        74:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM4242 USB 4 / Thunderbolt 3 Host Router [1b21:2425] (rev 01)

IOMMU Group 34:
        75:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Raphael [1002:164e] (rev c2)

IOMMU Group 35:
        75:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Radeon High Definition Audio Controller [Rembrandt/Strix] [1002:1640]

IOMMU Group 36:
        75:00.2 Encryption controller [1080]: Advanced Micro Devices, Inc. [AMD] Family 19h PSP/CCP [1022:1649]

IOMMU Group 37:
        75:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge USB 3.1 xHCI [1022:15b6]

IOMMU Group 38:
        75:00.4 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge USB 3.1 xHCI [1022:15b7]

IOMMU Group 39:
        75:00.6 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Family 17h/19h/1ah HD Audio Controller [1022:15e3]

IOMMU Group 4:
        00:02.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Dummy Host Bridge [1022:14da]

IOMMU Group 40:
        76:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge USB 2.0 xHCI [1022:15b8]

IOMMU Group 5:
        00:02.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge GPP Bridge [1022:14db]

IOMMU Group 6:
        00:02.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge GPP Bridge [1022:14db]

IOMMU Group 7:
        00:03.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Dummy Host Bridge [1022:14da]

IOMMU Group 8:
        00:04.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Dummy Host Bridge [1022:14da]

IOMMU Group 9:
        00:08.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raphael/Granite Ridge Dummy Host Bridge [1022:14da]

have you tried passing through both in your virsh vm config?

1 Like

I am using proxmox but I have done both and each separately and I think there is a checkbox for ‘All Functions’ that will group attach the audio to the GPU (or vice versa) - I tried all those combos with the same result

I am using AM5 with the latest AGESA and my 5090 wants a bios copy to work as passtrough device, but otherwise everything works.

quiet amd_iommu=on iommu=pt iommu=1 iommu.passthrough=1 iommufd=on iommu.strict=0 \
kvm.allow_unsafe_assigned_interrupts=1 reboot=efi video=efifb:off

That’s a lot, sometimes less is more.

I only need “iommu=pt”, with my desktop system and my Proxmox/NAS where I use the iGPU as passtrough GPU for Libreelec, also with a Gigabyte AM5 board.

Gigabyte AM5 Proxmox with iGPU passtrough

GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=pt preempt=full nohz_full=all pcie_aspm=off"

16.4.1. Graphics Problems?

“If you encounter issues with integrated graphics devices, you can try adding option iommu=pt to the kernel command line use a 1:1 mapping for the IOMMU. If this fixes anything, please ensure you file a bug reporting the problem.”

Yeah - that was where I have ended after trying everything. I went back and tried simple (just amd_iommu=on iommu=pt video=efifb:off) to no avail. I think iommu=pt helps for the host’s default domain. My failure is about the guest domain that VFIO is trying to create. The firmware is saying this PCIe function must stay in a direct/identity domain. It will not allow remapped DMA, and the kernel therefore refuses to attach it to a VFIO domain.

Maybe try Ubuntu Server 25.10, or build a newer kernel for Proxmox.
I don’t believe it’s an AGESA problem.

1 Like

It seems like new AGESA behavior that the kernel isn’t supporting yet. Not so much a problem, but a missing feature. “I” checked recent AMD IOMMU and VFIO release notes through 6.12 and linux-next, and while AMD has added identity-mapping behavior to the host domain, there is currently no kernel support for VFIO to attach a passthrough device that must remain in a 1:1 domain. No kernel release notes or merge discussions indicate this feature is planned yet, so it appears the firmware is ahead of what VFIO currently supports. Hoping someone has seen something similar to “Allow VFIO to attach a device requiring identity DMA mappings” in the works.

The problem doesn’t seem to be that rare after all, there may be various causes with the same symptom.
My NAS is running on AGESA 1.2.0.3e und my desktop ComboAM5 PI 1.2.0.3g, I could upgrade to ComboAM5 PI 1.2.7.0, but I’ll wait a bit before doing that :wink:

Have you tried resetting your UEFI to factory defaults?

"Finally success here as well…
I messed up and needed to do a full reset of the bios.
With the recovery of the standard values and once more entering the few options it started working.

Don’t know what bios setting blocked the working, but it solved the"

[ 21.315157] vfio-pci 0000:01:00.0: Firmware has requested this device have a 1:1 IOMMU mapping, rejecting configuring the device without a 1:1 mapping. Contact your platform vendor.

To anyone who still has this problem and comes across this thread:

I was able to fix this by disabling the following BIOS option:
“Kernel DMA Protection Indicator” - set this to Disabled

You can find this option under Advanced >> Settings >> Miscellaneous

My hardware:
Gigabyte X870E Arous PRO
Ryzen 9 9950X3D

1 Like

“Kernel DMA Protection Indicator” effectively allows for OS-level DMA-remapping via IOMMU. Enabling this for Windows-based systems provides for “Memory Access Protection.”

It is important to note that not all device drivers support DMA-remapping.

Unless you specifically require security hardening due to physical access concerns to your machine, I recommend disabling this feature along with Pre-boot DMA Protection.

More from MS:
Kernel DMA Protection | Microsoft Learn

That could be the reason.

Click bait

If you mean that it’s not a realistic danger, then yes, but that’s not my point.
it’s only about whether it’s the reason for changes in the functions that are the cause of @flysher’s problem.

Thank you sir! O7

I wish I had seen this about 4 hours ago, but you do indeed have the fix.

Shifty