VFIO概述
VFIO是一种设备直通方案,可以在用户态直接通过VFIO驱动访问硬件。相比UIO,VFIO有IOMMU的保护,非特权用户也可以直接使用,还提供了更多的中断支持。
可以使用MMIO寄存器,通过PCI的配置空间来访问。
主要由3部分组成,group,device,iommu(对应container)。
vfio一般用于绑定VF,PF拥有完全的配置资源,可用于配置VF。图中的PF和所有VF共享PCIe端口的带宽.VF不支持IO空间,需要映射到系统内存。
VFIO会用到vfio-pci和vfio_iommu_type1_driver两个驱动.其中vfio-pci用于访问PCI设备。
一般使用VFIO时,主要是读取PCIe设备的配置空间和DMA信息。
Group
Group是IOMMU进行DMA隔离的最小单元。如果两个设备会找到同一个context entry和同一份页表,就属于同一个group,比如在PCIe-PCI桥下就属于同一个group。VFIO的group和iommu的group可以认为是同一个概念。