skip to main content

An Introduction to IOMMU Infrastructure in the Linux Kernel

Planning / Implementation

Home
Top
Author
Published
20 Apr 2021
Form Number
LP1467
PDF size
21 pages, 488 KB

Abstract

The Input-Output Memory Management Unit (IOMMU) is a component in a memory controller that translates device virtual addresses (can be also called I/O addresses or device addresses) to physical addresses. The concept of IOMMU is similar to Memory Management Unit (MMU). The difference between IOMMU and MMU is that IOMMU translates device virtual addresses to physical addresses while MMU translates CPU virtual addresses to physical addresses.

This paper explains the IOMMU technology, providing a high-level overview of IOMMU and IOMMU infrastructure in Linux kernel. Two IOMMU kernel modes (DMA translation mode and pass-through mode) are then described in detail. The last section of the white paper illustrates IOMMU use case with the PCI pass-through device in virtualization environment.

This paper is intended for IT specialists who want to know the difference between IOMMU DMA translation mode and IOMMU pass-through mode by means of the high-level overview, and should have knowledge of how to configure the Linux kernel and a familiarity with virtualization technologies such as KVM and Xen. The paper is also suitable for software developers who want to know the Linux kernel IOMMU subsystem, and it is recommended that they already have kernel development experience and knowledge of how MMU works.

Table of Contents

Introduction
IOMMU Subsystem in Linux Kernel
Linux Kernel IOMMU: DMA Translation Mode versus Pass-through Mode
Direct Device Access Use Case in Virtualization Environment
Summary
Acronyms
References

To view the document, click the Download PDF button.

Related product families

Product families related to this document are the following: