Fact-checked by Grok 2 weeks ago

Input–output memory management unit

The Input–output memory management unit (IOMMU) is a component in computer systems that serves as a specifically for (I/O) devices, enabling the translation of device-visible virtual addresses to physical memory addresses and providing protection mechanisms for (DMA) operations. Unlike a () (), which handles address translation for processor instructions and data, the IOMMU focuses on I/O bus traffic, remapping scattered physical memory buffers to appear contiguous to peripherals and preventing unauthorized or malicious DMA accesses that could compromise system . Introduced in mainstream architectures during the mid-2000s, the IOMMU evolved from earlier technologies like the Graphics Address Remapping (GART) used in systems for handling graphics , generalizing these concepts to broader and protection needs. Key implementations include Intel's Virtualization Technology for Directed I/O (VT-d), which integrates IOMMU functionality into processors to support secure device assignment in virtualized environments, and AMD's I/O Virtualization Technology (AMD-Vi), which provides similar address translation and isolation for AMD64 systems. In architectures, the System Memory Management Unit (SMMU) functions as an IOMMU equivalent, allowing peripherals to share CPU page tables for efficient address translation and memory attribute enforcement in embedded and server systems. The primary functions of an IOMMU include enabling scatter-gather DMA, where non-contiguous memory regions are mapped into a single contiguous block visible to the device, thereby optimizing data transfers and supporting operations in networking and storage. It also facilitates by assigning I/O devices directly to virtual machines (VMs) while isolating their memory access, reducing hypervisor overhead and enhancing performance in and environments. Additional features encompass remapping for multi-queue devices, protection against DMA attacks during system boot (e.g., via integration), and support for peer-to-peer DMA between devices without CPU intervention, as seen in modern AMD Zen and processors. In operating systems like , IOMMU support is configurable through kernel parameters (e.g., iommu=pt for passthrough mode), with unifying management across CPU and device memory to handle diverse hardware. Despite its benefits, IOMMU usage introduces potential performance overhead from (TLB) misses, prompting ongoing research into mitigation strategies like larger IOTLBs and optimized mapping algorithms. Overall, the IOMMU remains essential for secure, efficient I/O in contemporary , from desktops to high-performance servers.

Overview

Definition and Purpose

The input–output memory management unit (IOMMU) is a specialized hardware component that serves as a for input/output (I/O) devices, translating virtual addresses generated by these devices—typically during (DMA) operations—into physical addresses within the 's main . This translation enables I/O devices, such as network interface cards or graphics processing units, to access efficiently while maintaining from other resources. The primary purpose of an IOMMU is to facilitate secure and efficient I/O operations by providing address isolation, remapping, and protection mechanisms for peripherals, allowing these operations to occur without direct involvement from the (CPU). By enforcing boundaries on device memory access, the IOMMU prevents unauthorized DMA requests that could compromise system security, supports private address spaces for virtualized environments, and enables features like DMA transfers between devices. This is particularly crucial in modern computing systems where multiple virtual machines or containers share resources, as it reduces overhead associated with software-based address . In comparison to the (MMU), which primarily handles virtual-to-physical address translation for CPU-initiated memory accesses, the IOMMU extends these principles to the I/O domain, specifically managing device-initiated accesses to ensure compatibility with operating system-managed virtual address spaces. While an MMU focuses on processor instructions and data, the IOMMU operates on DMA transactions from peripherals, often sharing similar translation structures but tailored for bus-level interactions. A typical IOMMU architecture includes translation tables, such as I/O page tables, which define the mappings from device virtual addresses to physical addresses, often supporting multi-level hierarchies for flexibility in large memory systems. Additionally, it incorporates control registers that configure operational modes, such as enabling translation, setting up remapping, or assigning process-specific to handle multiple address spaces. These components work together to intercept and validate I/O requests at the hardware level, ensuring compliance with system policies.

Historical Development

Early concepts of isolated I/O via () controllers appeared in mainframe , such as IBM's System/360 architecture, launched in 1964, which introduced specialized I/O channels—like byte-multiplexor and block-multiplexor channels—that supported for peripherals like tape drives and disks, providing basic protection mechanisms in environments to prevent unauthorized access. These channel controllers addressed the need for efficient and isolated I/O, influencing subsequent designs for security. By the 1990s, the proliferation of personal computers and the Peripheral Component Interconnect (PCI) bus amplified DMA usage for devices like graphics accelerators, prompting the need for remapping capabilities to handle larger system memories. Intel's Graphics Address Remapping Table (GART), specified in the Accelerated Graphics Port (AGP) interface revision 1.0 released on July 31, 1996, marked a key milestone by allowing 32-bit graphics cards to access 64-bit system memory via DMA, facilitating texture and vertex data transfers without software intervention. This innovation addressed addressing limitations in early PCI-based graphics subsystems. Formal IOMMU architectures solidified in the mid-2000s: AMD published its initial IOMMU specification on February 3, 2006, introducing domain-based protection for I/O devices to support virtualization. Intel followed with Virtualization Technology for Directed I/O (VT-d), issuing a draft specification in 2006, version 1.0 in September 2007, and version 1.1 in 2008 to enable secure DMA remapping. The drive for IOMMU evolution in the 2000s stemmed from escalating DMA reliance in consumer PCs, emerging security threats like FireWire-enabled DMA attacks that allowed external devices to bypass OS protections as early as 2000, and the surge in server requiring isolated I/O domains to prevent cross-VM data leaks. These factors necessitated hardware-enforced memory isolation for peripherals in multi-tenant environments. In the 2010s, ARM advanced IOMMU integration through its System MMU (SMMU) architecture, with debuting in implementations supporting ARMv7-A cores around 2011 for mobile and embedded protection, evolving to version 2 for enhanced stream mapping and version 3 by the mid-2010s for scalable . Entering the 2020s, open-standard ecosystems like incorporated IOMMU features, with the specification ratified as .0 in July 2023 to accommodate heterogeneous accelerators, including those for workloads demanding fine-grained memory partitioning. As of 2025, implementations are advancing in open-source ecosystems.

Technical Operation

Address Translation Mechanism

The address translation mechanism in an input–output memory management unit (IOMMU) enables I/O devices to perform (DMA) using virtual addresses, which are then mapped to physical addresses while enforcing access controls. When a device initiates a DMA request, it includes a virtual address (often termed I/O virtual address or IOVA) along with its device identifier (e.g., bus/device/function). The IOMMU intercepts this request, identifies the device's context via a lookup in dedicated tables, and performs a multi-level table walk to translate the address, applying permission checks at each stage. This process mirrors CPU (MMU) paging but is tailored for I/O traffic, supporting isolation across devices or virtual machines. The translation begins with a root pointer register that holds the base address of a root table, which maps device groups to context entries. For instance, in Intel VT-d, the Root Table Address Register (RTADDR_REG) points to the root table, indexed by the device's bus number to locate a root entry containing a context-table pointer. Similarly, in AMD-Vi, the device table—indexed by a 16-bit device ID—provides a domain ID and root pointer to the I/O page tables. The IOMMU then traverses multi-level I/O page tables, typically 3 to 6 levels deep, where each level uses a portion of the virtual address (e.g., 9 bits per level in AMD-Vi) to index into the next table, concatenating offsets to build the physical address. The final page table entry yields the physical page base, combined with the page offset from the virtual address, such that the physical address PA is derived as PA = base_from_table_entry + (VA mod page_size), with validation against the device's context. Key data structures include context tables for associating device IDs with translation domains and multi-level I/O page tables resembling x86 paging hierarchies. Context tables, such as those in VT-d, contain 128-bit or 256-bit entries specifying domain identifiers, address widths, and pointers to page tables, enabling per-device or per-domain isolation. I/O page tables use 64-bit entries (e.g., 8 bytes in AMD-Vi, 512 entries per 4KB page) supporting variable page sizes from 4KB to 1GB, with fields for physical address, present bit, and permissions. Root pointers, stored in registers or table entries, ensure the starting point for walks is configurable per IOMMU instance. In scalable modes like VT-d's PASID support, additional PASID directories and tables enable nested translations for shared device access across processes. Permission checks occur during the table walk, enforcing read (R), write (W), and execute (X) rights specific to the or , with cumulative validation across levels (e.g., logical AND for R/W in VT-d). If any level lacks the required permission for the request type, the translation fails. For s, /-X messages—treated as special writes—are remapped using dedicated remapping tables; in VT-d, 128-bit remap table entries (IRTEs) translate the index to a and destination, supporting and posted delivery to local APICs. AMD-Vi handles MSIs similarly via writes to a fixed address range, with optional remapping hardware. These checks prevent unauthorized access, such as a writing to restricted regions. Error handling involves detecting faults like invalid table entries, permission violations, or non-present pages during the walk, them for software intervention. In VT-d, faults are recorded in fault recording registers (FRCD_REG) with status codes (e.g., for untranslated requests) and reported via interrupts or queues, distinguishing recoverable (e.g., page-not-present) from non-recoverable errors requiring device quiescing. AMD-Vi logs I/O page faults in an event log, reporting via interrupts (e.g., EventLogInt) or master aborts, with support for fault overflow handling. Caches like the I/O (IOTLB) may hold invalid mappings until flushed, ensuring consistency. This mechanism allows the host to respond dynamically, such as by injecting faults into virtual machines.

Key Features and Capabilities

IOMMUs incorporate caching mechanisms to optimize performance during address translation. A primary component is the (IOTLB), which stores recently used virtual-to-physical address mappings for operations, thereby minimizing latency by avoiding full walks on hits. Additionally, snoop controls ensure cache coherency by allowing the IOMMU to snoop on caches, invalidating or flushing relevant entries when translations change, which is essential for maintaining data consistency in environments. Scalability is enhanced through features that support multiple devices and large memory spaces. Domain isolation assigns unique identifiers to devices or groups, enabling independent address spaces and preventing unauthorized access between them, which facilitates secure multi-tenant systems. IOMMUs handle 64-bit address spaces to accommodate expansive physical , and nested translation modes allow for hierarchical mappings, such as combining guest and host translations in virtualized setups. Interrupt remapping provides a mechanism to decouple device-generated s from fixed physical vectors, routing them dynamically to appropriate processors or virtual machines while enforcing to mitigate attacks like interrupt spoofing. This enhances by validating and remapping interrupt requests before delivery. For high-throughput devices such as GPUs, IOMMUs support queuing mechanisms for handling completion queues and speculative prefetching of to anticipate access patterns, reducing stalls in data-intensive workloads. Integration with system buses occurs via protocols like PCIe Address Services (ATS), which enable endpoint devices to request from the IOMMU and results locally, offloading the IOMMU and improving overall throughput.

Advantages and Disadvantages

Benefits

The Input–output memory management unit (IOMMU) significantly enhances system security by isolating device () to predefined regions, thereby preventing DMA attacks from malicious or faulty peripherals that could otherwise compromise . This is achieved through hardware-enforced address translation and domains, which filter unauthorized messages and restrict devices based on their identifiers, such as bus-device-function () tuples. By limiting device access and reducing the kernel's exposure to erroneous I/O operations, the IOMMU mitigates risks like unauthorized or corruption. In terms of , the IOMMU offloads DMA address translation from the CPU to dedicated hardware, enabling larger and more efficient DMA transfers without the overhead of software intervention. A key advantage is the elimination of bounce buffers, where data copying between non-contiguous or out-of-range locations is avoided; instead, the IOMMU remaps I/O virtual addresses (IOVAs) directly to physical , supporting contiguous operations even for scattered buffers. This reduces CPU cycles spent on I/O management. Benchmarks from the show that optimized IOVA allocation and invalidation can achieve near-native with minimal overhead in multi-core, high-throughput workloads. These mechanisms provide significant reductions in CPU utilization for I/O-intensive tasks compared to software-only alternatives. The IOMMU also improves by facilitating , as it obviates the need for large reserved contiguous regions (e.g., hundreds of for software I/O layers), thereby minimizing physical waste and enhancing overall system utilization. For , it bridges legacy 32-bit s with modern 64-bit architectures by translating limited address spaces to beyond 4 , allowing seamless operation without OS-level workarounds.

Limitations

The implementation of an IOMMU introduces significant hardware overhead, as it requires additional silicon for components such as translation lookaside buffers (TLBs), walkers, and control logic to handle address translation and for I/O devices. This added circuitry increases the overall complexity of the design and contributes to higher power consumption, particularly in systems with frequent operations that engage the IOMMU's caching mechanisms. Performance costs arise primarily from translation latency in uncached paths, where IOTLB misses necessitate full page table walks, adding substantial delays to DMA transactions. In high-device-count systems, these costs can manifest as bottlenecks due to IOTLB thrashing and contention, with studies showing up to 47% degradation in DMA throughput for workloads involving many small memory accesses across multiple devices. Additionally, enabling IOMMU protection can increase CPU utilization by 30% in bare-metal environments and up to 60% in virtualized setups, primarily from mapping and invalidation overheads, while reducing by 15% for small messages under 512 bytes. Recent research in the has addressed these limitations through strategies like optimized IOVA allocators and larger IOTLBs, achieving up to 20% throughput improvements in multi-100-Gbps networking workloads as of 2023. Ongoing developments include low-overhead mitigations for deferred invalidations, enhancing scalability in modern systems. Compatibility issues limit IOMMU adoption, as not all devices or operating systems fully support it, particularly in legacy environments where configurations like Compatibility Support Module (CSM) grant to regions below 1 or 16 MiB without IOMMU awareness, bypassing protection. Legacy setups often require fallback modes, such as disabling Bus Master Enable (BME) at root bridges until the OS loads, to mitigate risks when full IOMMU functionality is unavailable. Configuration complexity stems from the need for kernel-level programming to set up translation tables, domains, and invalidations, which involves coordinating and OS drivers in a multi-phase process that exposes vulnerabilities if not executed precisely. Misconfigurations, such as leaving remapping tables in unprotected during or enabling Address Translation Services (ATS) that bypass IOMMU checks, can allow unauthorized memory access, with many OSes like and Windows not enabling IOMMU by default due to these setup challenges. Scalability limits in older IOMMU designs, such as early implementations, arise from constraints on table sizes, where device tables are capped at 2 MB supporting up to 64K DeviceIDs, and configurations for 32-bit I/O virtual addresses are limited to representing up to 4 of space. These restrictions, combined with centralized I/O virtual address (IOVA) allocators protected by global locks, lead to contention and up to 32% cycle overhead in systems with numerous devices, potentially causing unbounded growth without proper reclamation.

Implementations and Standards

Published Specifications

The published specifications for input-output memory management units (IOMMUs) establish standardized architectures for DMA address translation, device isolation, and virtualization support across major processor ecosystems. These documents, primarily from hardware vendors and standards bodies, define the functional requirements, register layouts, and operational behaviors without prescribing specific silicon implementations. AMD's IOMMU specification, version 2.0 released in 2011, details support for stage-1 and stage-2 address translations to enable nested paging in virtualized environments, along with scalability for up to 256 protection domains to handle multiple isolated device contexts. This revision builds on earlier versions by enhancing interrupt remapping and guest page fault reporting for improved system efficiency. Intel's Virtualization Technology for Directed I/O (VT-d) specification traces its origins to revision 1.0 in , which introduced foundational remapping and remapping capabilities. Subsequent updates include revision 2.0 around 2011 with scalable mode for larger address spaces, and revisions 3.0 and beyond in the incorporating the page request interface to optimize memory allocation and reduce host overhead during device accesses. The System (SMMU) architecture specification covers versions 1 through 3. Version 1, finalized in 2013, provides core translation and fault handling for ARM-based peripherals. Version 2, released in 2016, extends virtualization features with improved stream matching, while version 3 from the same year introduces Context Descriptor (CD) tables for efficient multi-context management and global mapping support to simplify shared address spaces across devices. Additional standards from the PCI Special Interest Group (PCI-SIG) include IOMMU extensions via Access Control Services (ACS), with key isolation enhancements defined in the PCI Express Base Specification revision 3.1 from 2014, enabling finer-grained peer-to-peer transaction controls to complement IOMMU domain separation. The emerging RISC-V IOMMU specification, ratified in mid-2025, outlines a modular architecture for open-source RISC-V platforms, focusing on configurable translation stages and integration with PCIe topologies. Key differences across these specifications include variations in translation table formats and ; for instance, SMMU uses Stream Table Entries (STE) to bind devices to contexts, contrasting with the context-entry tables in x86 architectures like VT-d and AMD IOMMU. Supported page sizes commonly range from 4 KB to 1 GB, though exact combinations vary by version to align with system widths.
SpecificationTable Format ExampleStage TranslationsMax Domains/ContextsPage Sizes
IOMMU v2 (2011)Context-entry tableStage-1, Stage-2Up to 2564 to 1
Intel VT-d 3.0+ (2020s)Context-entry tableStage-1, Stage-2Scalable (thousands)4 to 1
SMMU v3 (2016)STE and CD tablesStage-1, Stage-2Configurable streams4 to 1
RISC-V IOMMU (2025)Device-context tablesStage-1, Stage-2Topology-dependent4 to 1

Notable Hardware Implementations

AMD's IOMMU implementation, known as AMD-Vi, has been integrated into its -based processors since the first-generation architecture in 2017, appearing in both consumer and server lines. This design supports features such as Single Root I/O Virtualization (SR-IOV), enabling efficient device passthrough and isolation in virtualized environments on processors. The IOMMU adheres to AMD's Technology specification, facilitating secure operations across multi-core systems. Intel's VT-d (Virtualization Technology for Directed I/O) IOMMU was first introduced with the Nehalem microarchitecture in Xeon processors in 2008, providing foundational support for I/O device virtualization in server environments. Subsequent expansions included integration into the Core i-series starting with the Sandy Bridge generation in 2011, where select models like the i5-2300 and i7-2600 enabled VT-d for consumer and workstation platforms. In data center GPUs, such as the Intel Data Center GPU Flex Series, VT-d supports passthrough and SR-IOV for sharing GPU resources across virtual machines. ARM-based implementations utilize the System Memory Management Unit (SMMU), a standard for I/O address translation in architectures. In mobile SoCs, Qualcomm's Snapdragon processors have incorporated SMMU since around , enhancing and for peripherals in devices like smartphones and systems. Apple's M-series chips, starting with the in , integrate a proprietary IOMMU implementation known as to manage from integrated GPUs and other accelerators, optimizing for power-efficient in laptops and desktops. These designs conform to the ARM SMMU architecture specification, supporting stage-1 and stage-2 translations for secure multi-tenant environments. Other vendors have advanced IOMMU capabilities in specialized hardware. NVIDIA's Grace CPU, launched in , includes an integrated IOMMU for Arm-based data center computing, enabling efficient memory isolation in AI and HPC workloads when paired with GPUs. IBM Power processors, used in enterprise servers, feature IOMMU support through mechanisms like PCI passthrough and virtual I/O server (VIOS), providing robust device isolation for large-scale on platforms such as and later. In modern hardware as of 2025, IOMMU units have evolved to integrate seamlessly with neural processing units (NPUs) and AI accelerators for enhanced in . This tight integration reduces latency for operations in AI-driven systems without significantly impacting overall power or area budgets.

Applications

In

In virtualization environments, the IOMMU plays a crucial role in enabling secure and efficient handling of () operations from devices assigned to virtual machines (VMs). By providing address translation for device-generated addresses, the IOMMU integrates with mechanisms such as nested paging to manage guest requests. For instance, in systems using KVM and , the IOMMU supports stage-2 translations that map guest physical addresses to host physical addresses, ensuring that from a guest-assigned device remains confined to the VM's allocated memory without awareness of the host's physical layout. This setup addresses fundamental challenges in virtualized I/O, such as the "DMA from wrong " problem, where a device in one VM could otherwise access or corrupt memory belonging to the host or other guests, thereby violating and posing risks. Device passthrough, or direct assignment, leverages the IOMMU to assign physical I/O devices like interface cards or storage controllers directly to a VM, bypassing the for improved performance. The IOMMU enforces isolation by grouping devices based on PCIe requester IDs and restricting their DMA access to a dedicated (IOVA), preventing interference with the host or other VMs. In Linux-based s such as KVM, this is facilitated through IOMMU groups, which ensure that assigned devices cannot perform unauthorized DMA. This capability is essential for workloads requiring low-latency I/O, as it maintains security while allowing the guest OS to manage the device natively. The VFIO (Virtual Function I/O) framework in exemplifies IOMMU's role in reducing overhead, particularly for GPU passthrough. VFIO uses the IOMMU to provide mediated device access, binding devices to user-space drivers while enforcing protection via shared page tables and isolation groups, which minimizes translation latency and TLB thrashing compared to emulated I/O paths. For GPU passthrough in KVM/ setups, this enables near-native performance for graphics-intensive VM applications, such as remote desktops or training, by allowing the guest to directly control the GPU without intervention in data transfers. Support for Single Root I/O Virtualization (SR-IOV) further extends IOMMU functionality in multi-tenant environments like (NFV). SR-IOV allows a physical device, such as an Ethernet controller, to present multiple virtual functions (VFs) that can be independently assigned to , with the IOMMU mapping each VF's DMA requests to isolated memory regions using unique PCI identifiers. In KVM deployments, this configuration enables efficient resource sharing among tenants, as seen with NICs like the X710, where VFs are passed through via libvirt XML configurations, ensuring secure, high-throughput networking without host bottlenecks.

In Device Security and Isolation

The Input–Output Memory Management Unit (IOMMU) plays a crucial role in device security by enforcing protection, which restricts from peripherals to designated zones, thereby blocking unauthorized reads or writes by malicious or faulty I/O devices. This mechanism translates device-initiated addresses to physical memory locations while applying permission checks to ensure devices cannot access sensitive system areas. For instance, following the disclosure of Thunderclap vulnerabilities in 2019, which exploited IOMMU misconfigurations to enable DMA attacks via peripherals, subsequent mitigations in operating systems like , Windows, and macOS have leveraged IOMMU to enforce stricter per-device mappings, effectively addressing these threats in properly configured environments. Domain isolation further enhances security by assigning unique I/O virtual address spaces to individual devices or groups, such as network interface controllers (NICs) or storage controllers, preventing cross-device interference or escalation of privileges. Each domain operates independently, with the IOMMU managing translation tables to confine DMA operations within allocated regions, thus mitigating risks from compromised peripherals that might attempt to access data belonging to other devices. This is in modern architectures, as specified in AMD's IOMMU documentation, where device groups are mapped to distinct protection domains to uphold boundaries. To defend against firmware attacks, IOMMU integrates with secure boot processes and remote attestation mechanisms, enabling early activation during the pre-operating system phase to protect configuration tables from tampering. In UEFI environments, VT-d implementations allow to configure IOMMU domains prior to OS handover, verifying device identities and access rights as part of the boot , which thwarts attempts to inject malicious via altered firmware. This approach ensures that even during boot, peripherals cannot bypass isolation to exploit firmware vulnerabilities. In real-world deployments, IOMMU facilitates USB and PCIe isolation in server environments, where it assigns isolated domains to hot-pluggable devices to prevent DMA-based attacks on host memory, as seen in Windows DMA Protection for interfaces. Similarly, in embedded systems like automotive electronic control units (ECUs) during the 2020s, IOMMU is being proposed and explored in mixed-criticality architectures, such as -based platforms, to isolate safety-critical domains from peripherals, ensuring secure inter-domain communication without exposing real-time control systems to external threats. Recent developments as of 2025 include 6.18 enhancements to IOMMU support for systems and an IOMMU vulnerability (AMD-SB-3014, disclosed August 2025) that affects secure memory configurations, underscoring the need for robust IOMMU implementations in secure environments.

References

  1. [1]
    Input-Output Memory Management Unit (IOMMU)
    Nov 21, 2024 · The I/O Memory Management Unit (IOMMU) provides memory remapping services for I/O devices. It adds support for address translation and ...Missing: definition | Show results with:definition
  2. [2]
    [PDF] The Virtual Contiguous Memory Manager
    An input/output memory management unit (IOMMU) maps device addresses to physical addresses. It also in- sulates the system from spurious or malicious device ...
  3. [3]
    [PDF] Memory Mapping and DMA - LWN.net
    Some architectures can provide an I/O memory management unit. (IOMMU) that remaps addresses between a bus and main memory. An IOMMU can make life easier in a ...<|separator|>
  4. [4]
    ​IOMMU in Virtualized Environments - 1.4 | Intel® Ethernet 800 Series
    The Input-Output Memory Management Unit (IOMMU) feature of the processor prevents I/O devices from accessing memory outside the boundaries set by the OS. It ...Missing: definition | Show results with:definition
  5. [5]
    DEV and IOMMU: a story of two DMA protection mechanisms
    IOMMU. The I/O Memory Management Unit (IOMMU) started as a generalisation of DEV and GART (Graphics Address Remapping Table, it was used to ...
  6. [6]
    [PDF] IOMMU: Strategies for Mitigating the IOTLB Bottleneck - Hal-Inria
    Jun 21, 2010 · The input/output memory management unit (IOMMU) was recently introduced into mainstream computer ar- chitecture when both Intel and AMD added ...
  7. [7]
    [PDF] Using IOMMU for DMA Protection in UEFI Firmware - Intel
    This paper presents the idea of using an input–output memory management unit (IOMMU) to resist Direct Memory Access (DMA) attacks in firmware. The example ...
  8. [8]
    [PDF] AMD I/O Virtualization Technology (IOMMU) Specification, 48882
    Specification Agreement. This Specification Agreement (this “Agreement”) is a legal agreement between Advanced Micro. Devices, Inc. (“AMD”) and “You” as the ...
  9. [9]
    IoMmu Model - Windows drivers | Microsoft Learn
    Sep 20, 2024 · An Input-Output Memory Management Unit (IOMMU) is a hardware component that connects a DMA-capable I/O bus to system memory.
  10. [10]
    [PDF] An Introduction to IOMMU Infrastructure in the Linux Kernel
    Apr 20, 2021 · The Input-Output Memory Management Unit (IOMMU) is a component in a memory controller that translates device virtual addresses (can be also ...
  11. [11]
    None
    ### Summary of VFIO Documentation (https://www.kernel.org/doc/Documentation/vfio.txt)
  12. [12]
    [PDF] IBM Mainframes – 45+ Years of Evolution
    Jan 29, 2009 · MP models of the Model 65 and Model 67 were made available in 1968. 7. The S/360-67 was the first Virtual Storage mainframe from IBM. n/a Not ...
  13. [13]
    In the Beginning… a History of the I/O channel - Mainframe Debate
    Mar 10, 2017 · Channels on the S/360 were specialized processor engines that were driven by a special instruction set that optimized the transfer of data between attached ...
  14. [14]
    [PDF] Advanced Micro Devices - Index of /
    Feb 3, 2006 · 02/01/06. 1.00 • Initial Public Release. Page 9. PID 34434 Rev 1.00 - February 03, 2006. IOMMU Architectural Specification.
  15. [15]
    [PDF] Virtualization Technology for Directed I/O - Intel
    ... 2006. Draft. • Preliminary Draft Specification. May 2007. 1.0. • 1.0 Specification. September 2007. 1.1. • Specification update for x2APIC support. September ...
  16. [16]
    [PDF] Exploring Vulnerabilities in Operating System IOMMU Protection via ...
    Feb 24, 2019 · rewire in the early 2000s led to the emergence of DMA attacks in which external devices, as well as other Firewire-enabled comput- ers, were ...
  17. [17]
    ARM System Memory Management Unit Architecture Specification
    This specification introduces the ARM System MMU (SMMU) architecture.Missing: 2010s | Show results with:2010s
  18. [18]
    [PDF] Open-source RISC-V Input/Output Memory Management Unit ...
    This work describes the design and implementation of an open-source IOMMU IP compliant with the ratified version of the RISC-V IOMMU specification (v1.0-rc1).Missing: timeline 2020s
  19. [19]
    [PDF] vt-directed-io-spec.pdf - Intel
    Page 1. Order Number: D51397-015. Intel. ®. Virtualization. Technology for Directed I/O. Architecture Specification. June 2022. Revision 4.0. Page 2. Intel® ...
  20. [20]
    [PDF] Utilizing the IOMMU Scalably - USENIX
    Jul 8, 2015 · IOTLB translation caching The IOMMU maintains an IOTLB that caches IOVA translations. If the OS mod- ifies a translation, it must invalidate (or ...
  21. [21]
    E.2. A Deep-dive into IOMMU Groups - Red Hat Documentation
    The first step to achieve isolation is granularity. If the IOMMU cannot differentiate devices into separate IOVA spaces, they are not isolated. For example, if ...
  22. [22]
    IOMMU DMA Remapping - Windows drivers - Microsoft Learn
    Aug 22, 2024 · IOMMU DMA remapping allows the GPU to access memory through logical addresses that are no longer mapped 1:1.Overview · Logical versus physical adaptersMissing: explanation | Show results with:explanation
  23. [23]
    [PDF] Observations and Opportunities in Architecting Shared Virtual ...
    In response, the GPU sends another request to the. IOMMU called a Peripheral Page Request (PPR). The. IOMMU places this request in a memory-mapped queue and.
  24. [24]
    Address Translation Services Revision 1.1 - PCI-SIG
    Jan 26, 2009 · This specification describes the extensions required to allow PCI Express Devices to interact with an address translation agent (TA) in or above a Root Complex ...
  25. [25]
    IOMMU protection against I/O attacks: a vulnerability and a proof of ...
    Jan 9, 2018 · Memory virtualization is implemented in the so-called DMA remapping units (DMAR) of the IOMMU. The DMAR has been designed to simplify address ...
  26. [26]
    Appendix E. Working with IOMMU Groups | Red Hat Enterprise Linux
    IOMMU groups isolate devices, preventing DMA between them. They create a virtual address space, and restrict DMA access, essential for virtualization.Missing: mechanism Vi
  27. [27]
    [PDF] Utilizing IOMMUs for Virtualization in Linux and Xen - IBM Research
    The Cell IOMMU maintains two lo- cal caches – one for caching segment entries and another for caching page table entries, the. IOSLB and IOTLB, respectively.
  28. [28]
    [PDF] AMD I/O Virtualization Technology (IOMMU) Specification
    Feb 20, 2007 · The IOMMU extends the concept of protection domains (domains for short) first introduced with the DEV. The. IOMMU allows each I/O device in ...
  29. [29]
    [PDF] vIOMMU: Efficient IOMMU Emulation - USENIX
    The IOMMU layer provides exactly two primitives: map and unmap. Before we delve into the benchmark results, we first profile the overhead induced by the vIOMMU ...<|separator|>
  30. [30]
    [PDF] The Price of Safety: Evaluating IOMMU Performance - IBM Research
    [2] AMD I/O Virtualization Technology. (IOMMU) Specification, 2006, http: //www.amd.com/us-en/assets/ content_type/white_papers_ and_tech_docs/34434.pdf. [3] ...
  31. [31]
    [PDF] Utilizing IOMMUs for Virtualization in Linux and Xen
    Jul 19, 2006 · In the second stage, we map Calgary's internal control registers and enable translation on each PHB. The IOMMU requires hardware-specific code.Missing: components | Show results with:components
  32. [32]
    AMD I/O Virtualization Technology (IOMMU) Specification, 48882 ...
    Feb 24, 2025 · AMD I/O Virtualization Technology (IOMMU) Specification, 48882 (48882) - IOMMU - 48882. 48882_IOMMU.pdf. Document ID: 48882; Release Date: 2025 ...
  33. [33]
    Arm System Memory Management Unit Architecture Specification
    This document is the specification for a System Memory Management Unit version 3 following on from the previous SMMUv2 architecture.Missing: v1 history 2010s
  34. [34]
    riscv-non-isa/riscv-iommu: RISC-V IOMMU Specification - GitHub
    Building the Documentation. The Makefile script will check the availability of Docker on your system: If Docker is available, the documentation will be built ...Missing: timeline 2020s
  35. [35]
    Zen - Microarchitectures - AMD - WikiChip
    The first set of processors, as part of the Ryzen 7 family were introduced at an AMD event on February 22, 2017 before the Game Developer Conference (GDC).
  36. [36]
    [PDF] Data Plane Development Kit Tuning Guide for AMD EPYC 7003 ...
    IOMMU also allows operating systems to provide additional protection for DMA capable I/O devices. If needed, you can disable IOMMU in BIOS and enable it via OS.
  37. [37]
    [PDF] First the Tick, Now the Tock: Intel® Microarchitecture (Nehalem)
    Now a new microarchitecture named Nehalem (the foundation of the Intel® Xeon® processor 3500 and 5500 series) builds on these earlier microarchitectural ...
  38. [38]
    Intel® Core™ i7-2600 Processor
    Intel® Core™ i7-2600 Processor (8M Cache, up to 3.80 GHz) quick reference with specifications, features, and technologies.
  39. [39]
    Developer Tools and Software for Intel® Data Center GPU Flex Series
    Passthrough is based on Intel® Virtualization Technology (Intel® VT) for Directed I/O (Intel® VT-d). · SR-IOV allows a device, such as a GPU card or network ...
  40. [40]
    [PDF] an-introduction-to-access-control-on-qualcomm-snapdragon ...
    Sep 16, 2020 · The SMMU is a hardware component that performs address translation and access control for bus initiators outside of the CPU. The detailed design ...Missing: 2015 | Show results with:2015
  41. [41]
    Apple M1 - Wikipedia
    Apple M1 is a series of ARM-based system-on-a-chip (SoC) designed by Apple Inc., launched 2020 to 2022. It is part of the Apple silicon series.
  42. [42]
    NVIDIA Grace Platform Support Software Patches and ...
    This guide provides information about the known patches and configuration settings that are required (or recommended) for interoperability with the Grace ...Missing: vIOMMU | Show results with:vIOMMU
  43. [43]
    Linux virtualization and PCI passthrough - IBM Developer
    Oct 13, 2009 · This article explores the concept of passthrough, discusses its implementation in hypervisors, and details the hypervisors that support this recent innovation.
  44. [44]
    Kernel Summit 2006: DMA and IOMMU issues - LWN.net
    Jul 19, 2006 · An IOMMU provides a virtual address space to DMA-capable devices, solving addressing issues and setting up transparent scatter/gather ...Missing: AMD | Show results with:AMD
  45. [45]
    VFIO - “Virtual Function I/O” - The Linux Kernel documentation
    VFIO is a framework for exposing direct device access to userspace in a secure, IOMMU protected environment, allowing safe, non-privileged userspace drivers.
  46. [46]
    Configure SR-IOV Network Virtual Functions in Linux* KVM*
    ### Summary of SR-IOV Support with IOMMU for Virtual Functions in KVM
  47. [47]
    Thunderclap: Exploring Vulnerabilities in Operating System IOMMU ...
    Thunderclap: Exploring Vulnerabilities in Operating System IOMMU Protection via DMA from Untrustworthy Peripherals. A. Theodore Markettos (University of ...Missing: PDF | Show results with:PDF
  48. [48]
    [PDF] Towards a RISC-V Open Platform for Next-generation Automotive ...
    Jul 9, 2023 · This paper presents a mixed-criticality multi-OS architecture for automotive ECUs based on open hardware and open-source technologies ...