You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/blog/posts/2026-02-15-pcie-mmio.md
+81-81Lines changed: 81 additions & 81 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -92,33 +92,33 @@ Allowing PCIe devices to write arbitrary data to arbitrary locations in memory i
92
92
The Input-Output Memory Management Unit (IOMMU) is a component of the root complex that maintains a number of page tables specifically designed for IO devices. It's used when a device wants to read or write data into the host memory and needs to translate its IO Virtual Address (IOVA) to a Host Physical Address (HPA). The IOMMU enforces translations per domain (a context). Devices are assigned to a domain, and the domain points to the page tables the IOMMU walks. An abstracted diagram of what this is doing is shown below:
When a PCIe device performs a memory read or write, it provides an IOVA to the IOMMU which gets translated to the host physical address. The transaction is then forwarded to the memory controller (for RAM) or back into the root complex (for MMIO). This provides three crucial functions to devices:
@@ -130,26 +130,26 @@ When a PCIe device performs a memory read or write, it provides an IOVA to the I
130
130
Number 2 is particularly crucial when it comes to device virtualization. When doing what's called direct passthrough to a virtual machine, the CPU will program the IOMMU such that a device is physically restricted to DMA to the memory allocated for the guest. This provides a hard level of hardware memory isolation. The components interact with each other like this:
0 commit comments