IOMMU:input/output memory management unit。
Device的IOMMU类似于CPU的MMU。
对IOMMU的支持主要有两个原因,一个是对老设备的支持,另外一个是对scatter/gather的支持。
现有的VMM必须使用模拟设备将来自客户操作系统的驱动程序路由到VMM。这样做是为了管理对共同内存空间的访问,并闲置对内核模式驱动程序的真实设备访问。AMD的IOMMU设计消除了这些限制,提供DMA地址转换、对设备读取和写入的权限检查。有了IOMMU,客户操作系统中一个未经修改的驱动程序可以直接访问它的目标设备,避免了通过VMM运行产生的开销以及设备模拟。VMM将能够利用IOMMU硬件从运行在客户操作系统上的软件对物理设备的更快速、更直接以及更安全的访问。
IOMMU还加入了对虚拟化的支持:DMA Remapping和Interrupt Remapping。
IOMMU需要CPU支持,并在主板中启用。
AMD has published a specification for IOMMU technology in the HyperTransport architecture.
Intel has published a specification for IOMMU technology as Virtualization Technology for Directed I/O, abbreviated VT-d.
如果是intel cpu, 在linux下通过命令“dmesg | grep -e DMAR -e IOMMU”查看是否打开IOMMU。
如果是AMD CPU,则执行命令:dmesg | grep AMD-Vi