声明:
本博客欢迎转发。但请保留原作者信息!
博客地址:http://blog.csdn.net/halcyonbaby
内容系本人学习、研究和总结,如有雷同,实属荣幸!
http://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM
VFIO在kernel3.6/qemu1.4以后支持,眼下仅仅支持PCI设备。 VFIO是一套用户态驱动框架,提供两种基本服务:
向用户态提供设备訪问接口向用户态提供配置IOMMU接口VFIO能够用于实现高效的用户态驱动。
在虚拟化场景能够用于device passthrough。 通过用户态配置IOMMU接口,能够将DMA地址空间映射限制在进程虚拟空间中。
这对高性能驱动和虚拟化场景device passthrough尤其重要。
相对于传统方式,VFIO对UEFI支持更好。 VFIO技术实现了用户空间直接訪问设备。无须root特权,更安全。功能很多其它。
http://lwn.net/Articles/509153/http://lwn.net/Articles/474088/https://www.ibm.com/developerworks/community/blogs/5144904d-5d75-45ed-9d2b-cf1754ee936a/entry/vfio?lang=en
操作方法 安装kernel module sudo modprobe vfio sudo modprobe vfio-pci设备unbind 1. 查看iommu_group及其下全部设备 cd /sys/bus/pci/devices/0000:0d:00.0/ readlink iommu_group #查看iommu_group名字 ll iommu_group/devices #查看iommu_group下设备 2. 须要将iommu_group下全部设备unbind并加入到iommu_group中 echo 0000:0d:00.0 > /sys/bus/pci/devices/0000:0d:00.0/driver/unbind echo 1180 e823 > /sys/bus/pci/drivers/vfio-pci/new_id 启动虚拟机 -device vfio-pci,host=0000:03:00.0參考http://blog.csdn.net/richardysteven/article/details/9008971
IOMMU:input/output memory management unit。 连接DMA io bus和主存。完毕从设备虚拟地址到物理地址的映射。
以及提供对故障设备的内存保护的功能。
长处 因为IOMMU的映射。能够将多个不连续的物理地址映射为大块连续的地址供设备使用,便于简化驱动设计使旧设备(32bit设备)能够使用高位地址。
(能够改善内存使用。提高性能)
内存保护。避免设备使用不属于它的地址提供硬件中断remapping功能缺点 地址转换和管理开销带来的性能降级消耗物理内存虚拟化中的应用 一般来说。因为内存地址不同,虚拟机中的操作系统无法直接訪问host上的设备。 通过IOMMU,能够将设备地址在虚拟机中和host中映射为同样的支持。供虚拟机使用。这样的做法也能够缓解IO delay。
转载于:https://www.cnblogs.com/bhlsheji/p/5317002.html
相关资源:数据结构—成绩单生成器