5
MMU and IOMMU
The aim of MMU (Memory Management Unit) is to translate CPU-visible virtual address to
physical address. The purpose of IOMMU is similar to that of MMU. The translated virtual
address of IOMMU is device-visible virtual address instead of the CPU-visible one. Figure 3
illustrates PCI pass-through model by leveraging the IOMMU hardware.
Figure 3 PCI Passthrough Device Example via IOMMU Hardware
The IOMMU hardware includes two functionalities:
DMA remapping functionality manipulates address translation for PCI devices
Interrupt remapping functionality routes interrupts of PCI devices to the corresponding
guest OSes.
This paper focuses on DMA remapping functionality.
IOMMU Subsystem in Linux Kernel
This section describes the high-level overview of the IOMMU subsystem in Linux kernel and
illustrates how I/O requests are propagated in the Linux kernel. In order to understand the I/O
address translation procedure, the I/O page table and the data structure are illustrated.
The operating system needs to understand the IOMMU hardware information, so the system
firmware provides the IOMMU description by means of an ACPI table. This will be also
discussed in this section.
*XHVW2690
3K\VLFDOGULYHU
3ULYLOHJHGGRPDLQ
'RP
+DUGZDUH3ODWIRUP
8QSULYLOHJHGGRPDLQ
'RP8
3K\VLFDOGHYLFH
SDVVWKURXJK
,2008+DUGZDUH