VFIO原理
VFIO把设备通过IOMMU映射的DMA物理内存地址映射到用户态中,让用户态程序可以自行操纵数据的传输,还可以自行注册中断处理函数,从而在用户态下实现设备的驱动程序....IOMMU
----
基础功能
地址翻译
IOMMU可以将能直接访问memory的IO总线(DMA–capable)连接到RAM中....如果没有IOMMU,DMA也能直接访问RAM中的内容,但是让DMA没有限制地访问RAM是一件很危险的事情,而IOMMU能够对这个过程加以限制,当DMA访问的地址合法时,IOMMU才返回正确的数据....要使用VFIO,必须在Linux启动时添加启动项intel_iommu=on,因为VFIO的底层依赖IOMMU....将设备与对应的驱动解绑
为了将设备透传到虚拟机中,需要将设备与其对应的驱动解绑,这样该设备就可以使用VFIO的驱动了.注意,不仅要将要透传的设备解绑,还要将与设备同iommu_group的设备都解绑,才能透传成功