Technical guide

IOMMU Groups and PCIe ACS Explained for VFIO Passthrough

Understand why PCIe devices share IOMMU groups, how ACS affects isolation, what VFIO treats as the ownership boundary, and why software overrides are not equivalent to hardware isolation.

On this page
  1. An IOMMU group is an isolation boundary, not just a list of nearby devices
  2. The IOMMU protects DMA only when transactions reach the translation boundary
  3. PCIe Access Control Services help enforce isolation through the fabric
  4. Why one graphics card can contribute several functions to a group
  5. Bridges and switches can make a group larger
  6. Different motherboard slots can produce different IOMMU groups
  7. An ACS override is not the same as native hardware isolation
  8. How to inspect the problem without guessing
  9. The useful mental model

An IOMMU group is an isolation boundary, not just a list of nearby devices

On Linux systems used for VFIO device passthrough, an IOMMU group is the smallest set of devices the platform can safely isolate from other groups. The IOMMU translates and restricts device DMA, but PCIe topology can limit how finely those devices can be separated. That is why two devices can appear in the same group even when they occupy different logical functions or connectors.

The practical rule is that VFIO treats the group as the unit of ownership. If one device in a group cannot be isolated from its peers, assigning only that device to an untrusted guest would not provide the DMA isolation that users usually expect from passthrough.

The layers that determine PCIe passthrough isolation
LayerWhat it doesWhy it affects grouping
IOMMUTranslates and restricts device DMA addressesIts requester-ID granularity sets a basic isolation limit
PCIe topologyConnects endpoints through root ports, bridges and switchesTransactions may share or bypass isolation points
PCIe ACSControls or redirects peer-to-peer traffic at supported PCIe componentsMissing ACS can force devices below that point into the same isolation group
VFIOExposes devices safely to user space or VMsUses IOMMU groups as the minimum ownership boundary

The IOMMU protects DMA only when transactions reach the translation boundary

A passed-through device can initiate DMA, so the host needs a way to prevent it from reading or writing arbitrary system memory. The IOMMU provides that address-translation and permission boundary by mapping device-visible I/O virtual addresses to permitted physical memory.

But the IOMMU cannot protect a transaction it never sees. PCIe peer-to-peer paths can allow traffic between devices below a bridge or switch. Red Hat's virtualization documentation explains that if an interconnect can redirect a transaction before it reaches the IOMMU, those devices cannot automatically be considered isolated merely because the IOMMU exists.

PCIe Access Control Services help enforce isolation through the fabric

PCI Express Access Control Services, usually abbreviated ACS, provide controls used to manage peer-to-peer transaction routing and isolation through PCIe components. In a passthrough topology, ACS capability at relevant root ports, switches, bridges and multifunction devices can determine whether downstream endpoints can be treated as separate isolation domains.

Red Hat documents ACS as the hardware mechanism used to maintain isolation within IOMMU grouping. If a point in the PCIe path lacks the required isolation capability, devices below that point may need to remain in one group because peer-to-peer DMA could bypass the IOMMU's intended boundary.

Why one graphics card can contribute several functions to a group

A discrete GPU often exposes more than one PCI function, such as the graphics function and an HDMI or DisplayPort audio function. Multifunction devices are part of the same physical endpoint and can have isolation relationships that differ from two completely separate add-in cards.

For VFIO, the important question is not whether the functions have different PCI addresses but whether the platform can isolate their DMA and peer traffic correctly. Linux kernel VFIO documentation therefore centers ownership on the IOMMU group rather than assuming every enumerated PCI function is independently assignable.

Bridges and switches can make a group larger

PCIe devices are arranged as a hierarchy. Endpoints may sit behind root ports, PCIe switches or legacy PCI bridges. Linux kernel documentation notes that topology can reduce isolation granularity; a PCIe-to-PCI bridge, for example, can hide distinctions among devices behind it from the IOMMU.

Red Hat also notes that a PCIe switch or bridge without appropriate ACS support can extend an IOMMU group. This is why moving a card to another motherboard slot can change grouping: the new slot may attach through a different root port or path with different isolation capabilities.

Different motherboard slots can produce different IOMMU groups

Desktop platforms commonly expose PCIe lanes from more than one place, including CPU root ports and chipset root ports. Those paths can have different ACS and IOMMU behavior. Two full-length slots that look similar on the board may therefore produce different passthrough isolation.

When a device is grouped with hardware you need to keep on the host, the least invasive diagnostic step is often to inspect the PCIe topology and, where practical, test another electrically suitable slot. That changes the hardware path rather than weakening the isolation policy.

An ACS override is not the same as native hardware isolation

Linux communities sometimes use kernel patches or parameters described as ACS overrides to split groups more aggressively. The crucial security distinction is that changing the kernel's grouping decision does not add missing transaction-control hardware to a root port, bridge, switch or endpoint.

If the physical topology still permits peer-to-peer traffic that bypasses the IOMMU, presenting smaller software groups can make the layout look more isolated than the hardware actually is. Do not treat an override as equivalent to vendor-documented native ACS when the threat model requires strong device isolation.

How to inspect the problem without guessing

Start by identifying the target PCI device and its IOMMU group, then inspect every device in that group and the bridges or root ports above it. Linux exposes group membership through sysfs, while tools such as lspci help identify the PCI hierarchy and capabilities. Distribution virtualization tools can expose the same grouping through their device-management interfaces.

If the group contains unrelated hardware, compare the motherboard manual and platform documentation, test a different suitable slot if available, and check whether the intervening root port or switch documents ACS support. A different group after moving the card is a topology change; it is stronger evidence than simply forcing the kernel to report a different grouping.

The useful mental model

Think of an IOMMU group as the smallest PCI device set that the system can hand to one ownership domain while preserving the isolation guarantees represented by the platform. The IOMMU controls DMA translation, PCIe ACS helps keep peer traffic on paths where those controls remain meaningful, and VFIO refuses to pretend that every PCI function is independently safe.

That model explains why passthrough guides care about CPU and firmware IOMMU support, root ports, switches, multifunction devices, ACS and slot choice at the same time. They are different pieces of one isolation problem, not interchangeable settings.

Sources

Primary and technical sources

Technical details can vary by exact model, firmware, and platform. These are the sources used for the factual claims in this article.

  1. 01 Linux Kernel documentation

    VFIO — Virtual Function I/O
  2. 02 Red Hat

    A deep-dive into IOMMU groups
  3. 03 Red Hat

    Hardware considerations for implementing SR-IOV — IOMMU groups and ACS
  4. 04 Red Hat

    IOMMU strategies and use cases

Related

Technical guide

PCIe x16 vs x8 for Graphics Cards

Compare PCIe x16 and x8 GPU links by electrical lane width, generation, theoretical bandwidth, motherboard routing, link negotiation, and workload limits.

Compatibility & upgrades

PCIe 5.0 vs PCIe 4.0: Bandwidth and Compatibility

Compare PCIe 5.0 and PCIe 4.0 at the link level: 32 vs 16 GT/s, lane bandwidth, x4/x8/x16 scaling, backward compatibility, link negotiation, and what the generation label does not guarantee.

Compatibility & upgrades

ATX vs Micro-ATX vs Mini-ITX Motherboard Sizes

Compare ATX, Micro-ATX, and Mini-ITX motherboard dimensions, mounting and case-fit implications without confusing board size with chipset features or performance.