linux-kernel – Linux IOMMU页表
我一直在阅读
Linux中的IOMMU支持,并对IOMMU中的页表有一些疑问:
> IOMMU是否使用CPU MMU页表来存储VA-> PA映射? 我还没有查看任何驱动程序代码,所以如果有人能指出我的一些示例驱动程序代码将会很棒. 提前致谢. 解决方法
不是.操作系统中有许多进程,每个进程都有自己的VA-> PA映射(它们都在不同的虚拟地址空间中运行). 有物理内存,由内存控制器控制.还有一些设备需要访问物理内存:CPU和外部总线控制器. CPU有自己的翻译和总线控制器有自己的.
映射是根据IOMMU的功能创建的.一些简单的IOMMU可能具有一个用于设备总线根控制器的全局映射(PCI-express根comples).像英特尔VT-d这样复杂的IOMMU可能有几个映射或嵌套转换,根据一些每个端口规则选择. (但桥后面的两个设备通常会有相同的翻译.) https://www.kernel.org/doc/Documentation/Intel-IOMMU.txt
https://www.kernel.org/doc/Documentation/DMA-API-HOWTO.txt
(另请参阅附近的图片“这是一张图片和一些例子:”在https://www.kernel.org/doc/Documentation/DMA-API-HOWTO.txt中)
另请查看https://events.linuxfoundation.org/sites/events/files/slides/20140429-dma.pdf(2014)和http://www.linuxplumbersconf.org/2014/wp-content/uploads/2014/10/LPC2014_IOMMU.txt 和http://developer.amd.com/wordpress/media/2012/10/IOMMU-ben-yehuda.pdf论文(2012年)有关设备内存重映射和IOMMU虚拟化使用历史的文章. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |