MODULES=(... vfio_pci vfio vfio_iommu_type1 ...) 注意:如果你提前加载了显卡驱动, 这些加上的模块所有都必须写在显卡驱动之前. 重新生成initramfs sudo mkinitcpio -P dracut 新建文件/etc/dracut.conf. d/10-vfio.conf, 写入 force_drivers+=" vfio_pci vfio vfio_iommu_type1 " 重新生成initramfs sud...
vfio_iommu层面详解(vfio_iommu_type1.ko) 以下为container设置其vfio_iommu为type1时的实现,通过这段code可见核心实现最终会调到vfio_iommu_type1驱动中的vfio_iommu_type1_open( )和vfio_iommu_type1_attach_group( ) //举例ioctl(container, VFIO_SET_IOMMU, VFIO_TYPE1_IOMMU) vfio_ioctl_set_iommu //注...
group是IOMMU能够进行DMA隔离的最小单位,一个group有一个或多个device,取决于硬件IOMMU拓扑,一个group里的设备只能全部直通一个vm,如果部分dev在其他vm或者host,无法做到物理上DMA隔离。 device指IOMMU拓扑的设备,如果设备是一个硬件拓扑上独立的设备,它自己就构成一个IOMMU group;如果是一个multi-function设备,那么它...
此外注意到这里的 pci_device_iommu_address_space 函数,意思是qemu为设备dma注册了一段专门的地址空间,这段内存作为虚拟机的一段物理内存存在,在VFIO_SET_IOMMU之后,注册该地址空间,其region_add函数为 vfio_listener_region_add,意思是当内存空间布局发生变化这里是增加内存的时候都会调用该接口。 登录后复制vfio_re...
2 changes: 2 additions & 0 deletions 2 drivers/vfio/Makefile Original file line numberDiff line numberDiff line change @@ -1 +1,3 @@ obj-$(CONFIG_VFIO) += vfio.o obj-$(CONFIG_VFIO_IOMMU_TYPE1) += vfio_iommu_type1.o obj-$(CONFIG_VFIO_PCI) += pci/ 7 changes: 7 additions ...
iommu 组分配,重用 vfio_noiommu_group_alloc 中的逻辑,通过分解通用函数为中介设备分配假单设备 iommu 组,并用枚举替换 struct vfio_group 中的 noiommu 布尔字段以区分这三个 不同类型的团体 dev_set_name(&device->device, "vfio%d", device->index) vfio_device_set_group(device, type) vfio_group_...
vfio_realize:group= vfio_get_group(groupid, pci_device_iommu_address_space(pdev), errp); vfio_connect_container(group,as, errp) ret = ioctl(fd, VFIO_SET_IOMMU, container- >iommu_type); container- >listener = vfio_memory_listener; ...
VFIO框架中很重要的一部分是要完成DMA Remapping,即为Domain创建对应的IOMMU页表,这个部分是由vfio_iommu_driver来完成的。 vfio_container包含一个指针记录vfio_iommu_driver的信息,在x86上vfio_iommu_driver的具体实现是由vfio_iommu_type1来完成的。 其中包含了vfio_iommu, vfio_domain, vfio_group, vfio_dma等关...
1. dracut 新建文件/etc/dracut.conf. d/10-vfio.conf, 写入 AI检测代码解析 force_drivers+=" vfio_pci vfio vfio_iommu_type1 " 1. 重新生成initramfs AI检测代码解析 sudo dracut --regenerate-all --force 1. initramfs-tools /etc/initramfs-tools/modules ...
vifo_iommu 是对IOMMU driver 的封装,为vifo interface 提供IOMMU 功能,在内核源码中代码路径为:drivers\vfio\vfio_iommu_type1.c。iommu driver 是物理硬件的IOMMU 实现,例如intel VT-D。vfio_pci 是的device 驱动的封装,为vfio interface 提供设备的访问能力,例如访问设备的配置空间,bar空间。在内核源码中代码...