Technical guide
IOMMU Explained: DMA Remapping, VT-d, AMD-Vi, and PCIe Passthrough
Understand how an IOMMU remaps device DMA, how Intel VT-d and AMD-Vi relate, why IOMMU groups matter for passthrough, and what IOMMU support does not guarantee.
On this page
- An IOMMU translates memory accesses made by devices
- IOMMU translation is separate from CPU virtual memory
- Intel VT-d and AMD-Vi are implementations of the same broad idea
- PCIe passthrough uses IOMMU isolation, but IOMMU support is not enough by itself
- IOMMU groups describe a practical device-isolation boundary on Linux
- SR-IOV and ACS are related capabilities, not substitutes for an IOMMU
- Windows can use IOMMU hardware for DMA protection too
- Firmware enablement and operating-system use are separate checks
- The durable model is device DMA → IOMMU → permitted physical memory
An IOMMU translates memory accesses made by devices
Direct Memory Access lets capable devices transfer data to and from system memory without making the CPU copy every byte. An Input-Output Memory Management Unit, or IOMMU, adds address translation and access control to that device-facing path. AMD describes the IOMMU as providing memory remapping services for I/O devices, including address translation and protection for DMA transfers. Intel describes VT-d DMA remapping as independent address translation for DMA from devices.
The useful mental model is that a DMA-capable device can issue an address in an I/O address space, while the IOMMU translates that request before it reaches physical memory. Software controls mappings that define which memory a device is allowed to reach. An access outside the permitted mapping can therefore be blocked or faulted instead of becoming an unrestricted DMA access to host memory.
| Term | Primary role | Not the same as |
|---|---|---|
| IOMMU / DMA remapping | Translates and constrains memory accesses initiated by I/O devices | CPU virtual-memory translation or CPU virtualization extensions |
| Intel VT-d | Intel architecture for directed I/O, including DMA remapping and related I/O-virtualization capabilities | Intel VT-x CPU virtualization |
| AMD IOMMU / AMD-Vi | AMD platform I/O memory-management and remapping capability | AMD-V CPU virtualization |
| IOMMU group | Software-visible isolation boundary used when reasoning about safe device assignment | A promise that every PCIe function can be assigned independently |
| VFIO / device assignment | Software framework or hypervisor mechanism that can expose a device to a guest | The IOMMU hardware itself |
| SR-IOV | Lets supporting hardware expose virtual functions | A replacement name for IOMMU or DMA remapping |
| ACS | PCIe access-control capability that can affect routing and isolation boundaries | A universal guarantee of a particular IOMMU group layout |
IOMMU translation is separate from CPU virtual memory
A CPU memory-management unit translates addresses used by processor execution. An IOMMU performs a related kind of translation for I/O transactions initiated by devices. The two mechanisms solve different address-translation problems even though both can use page-table-like structures and both ultimately control access to physical memory.
That distinction also separates IOMMU support from CPU virtualization instructions. Intel VT-x and AMD-V help virtualize processor execution; Intel VT-d and AMD IOMMU/AMD-Vi concern I/O memory management and device-facing isolation. A PC can therefore expose several firmware virtualization controls because enabling CPU virtualization and enabling I/O virtualization are not necessarily the same setting or capability.
Intel VT-d and AMD-Vi are implementations of the same broad idea
Intel VT-d provides domain-based I/O isolation and DMA remapping. Intel documents device-to-domain mapping in which PCIe bus, device, and function identity is associated with translation structures, allowing DMA requests from assigned devices to be translated into the appropriate host physical addresses. VT-d also defines related capabilities such as interrupt remapping, but interrupt remapping is a distinct function rather than another name for DMA address translation.
AMD documentation likewise describes an IOMMU that provides private I/O address spaces, system-memory access protection, and interrupt remapping. The terminology and architecture details differ between vendors and generations, so “VT-d” and “AMD-Vi” should not be treated as feature-for-feature labels for every implementation. At the practical PC level, both belong to the hardware foundation that an operating system or hypervisor can use to control device DMA.
PCIe passthrough uses IOMMU isolation, but IOMMU support is not enough by itself
Direct device assignment gives a guest much closer access to a physical PCIe device than ordinary emulated or paravirtualized I/O. The host must still prevent that assigned device from DMA-accessing memory belonging to the host or another guest. An IOMMU can create the required DMA translation domain so the device sees the addresses intended for its guest while accesses outside that domain remain controlled.
This does not mean that switching on an IOMMU automatically makes every GPU, NIC, storage controller, or other PCIe device suitable for passthrough. The processor and platform must expose the necessary I/O-virtualization capability; firmware must configure and report it correctly; the operating system or hypervisor must support device assignment; and the device and surrounding PCIe topology must provide a usable isolation boundary. Reset behavior, drivers, multifunction devices, bridges, and other platform details can still determine whether a particular assignment works reliably.
IOMMU groups describe a practical device-isolation boundary on Linux
Linux VFIO represents devices in IOMMU groups because isolation is not always available at the granularity of one PCIe function. The kernel documentation explains that devices can be affected by topology and by transactions that may not be distinguishable by the IOMMU. As a result, a group represents the set of devices that must be considered together for ownership and isolation.
Group layout is platform-specific. A device appearing in a large group does not prove that the IOMMU is absent, and there is no universal motherboard rule that every slot receives its own group. PCIe bridges and capabilities such as Access Control Services can affect isolation, but forcing a software split does not manufacture hardware isolation that the platform does not actually provide. For passthrough, inspect the real platform topology and groups rather than assuming a layout from the CPU or chipset name.
Windows can use IOMMU hardware for DMA protection too
IOMMUs are not only a virtual-machine passthrough feature. Microsoft’s Kernel DMA Protection requirements use an enabled IOMMU—identified as Intel VT-d or AMD-Vi—to block or allow DMA-capable devices according to policy and to perform DMA remapping for compatible drivers. This is an operating-system security use of the same underlying ability to constrain device access to memory.
That does not justify a blanket claim that merely enabling an IOMMU makes every PC secure against every DMA attack. Microsoft’s platform requirements include firmware behavior, PCIe native control, device placement behind the IOMMU, and compatible driver behavior. Security depends on the complete implementation and policy, not just the existence of an IOMMU setting in firmware.
Firmware enablement and operating-system use are separate checks
A CPU or chipset specification saying that VT-d or an AMD IOMMU is supported establishes capability, not necessarily active use. Firmware can expose controls for I/O virtualization, and the operating system still has to initialize and use the remapping hardware. Intel also notes that VT-d availability can vary by SKU, so a family name alone is not enough to prove support on every processor and platform combination.
For a passthrough build, verify the exact CPU, motherboard or system firmware, operating system or hypervisor, PCIe topology, target device, and required driver path. For ordinary desktop use, there is usually no reason to infer a universal performance penalty or gain from the IOMMU label alone. Translation modes, workloads, device drivers, platform generation, and software configuration differ too much for a single percentage to be meaningful.
The durable model is device DMA → IOMMU → permitted physical memory
Think of the IOMMU as a policy and translation point on the device side of the memory system. A DMA request originates from an I/O device, the platform associates that request with the relevant translation domain, and the IOMMU either translates it to permitted host physical memory or rejects an invalid access. Virtual machines, device assignment, and DMA-protection features build on that primitive in different ways.
Keeping the layers separate avoids the most common confusion: CPU virtualization does not automatically imply device passthrough; an IOMMU does not imply SR-IOV; ACS does not define the IOMMU; interrupt remapping is related but distinct; and a firmware toggle does not guarantee that an arbitrary PCIe device has a clean assignment boundary. The complete platform and software path determines what can actually be isolated and assigned.
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.
01 Intel
Intel Virtualization Technology for Directed I/O (VT-d)02 Intel
Intel Virtualization Technology for Directed I/O Architecture Specification03 AMD
Input-Output Memory Management Unit (IOMMU)04 Linux kernel documentation
VFIO — Virtual Function I/O05 Microsoft Learn
Kernel DMA Protection (Memory Access Protection) for OEMs
Related
Continue from here
Useful next steps selected from the same technical reference and publication system.
Tool
PCIe Link Bandwidth Calculator
Calculate theoretical one-direction PCIe link bandwidth by generation and lane width.
Technical guide
PCIe Retimers vs Redrivers: What They Do in Modern PCs
Learn how PCIe retimers recover and retransmit data while redrivers condition an analog signal, and why neither device is a generic performance booster.
Technical guide
PCIe AER Explained: Correctable, Uncorrectable, Fatal, and Non-Fatal Errors
Understand PCIe Advanced Error Reporting, correctable and uncorrectable errors, fatal versus non-fatal severity, root-port reporting, WHEA, Linux AER, and what an error log can actually prove.
Technical guide
PCIe ASPM Explained: L0s, L1, Power Saving, and Latency
Understand PCIe Active State Power Management, L0s, L1 and L1 substates, exit latency, Windows and Linux policy, and why ASPM is not a universal performance tweak.