为梦而战
全部博文(185)
分类: LINUX
2015-02-13 14:18:54
1. 识别设备 # virsh nodedev-list --tree |grep pci 2. 获取设备xml ```# virsh nodedev-dumpxml pci_8086_3a6c``` 3. detach设备 ```# virsh nodedev-dettach pci_8086_3a6c``` 4. 修改虚拟机xml文件(将dumpxml查询到的bus,slot,function填入)...... 5. 启动虚拟机......
1. unbind pci设备 modprobe pci_stub lspci -D -nn查询pci设备(domain,slot,bus,function)和(vendor id, device id ) 以设备(01:00.0, vendor & device ID 8086:10b9)为例: echo "8086 10b9" > /sys/bus/pci/drivers/pci-stub/new_id echo 0000:01:00.0 > /sys/bus/pci/devices/0000:01:00.0/driver/unbind echo 0000:01:00.0 > /sys/bus/pci/drivers/pci-stub/bind 2. 启动虚拟机 -device pci-assign,host=01:00.0
http://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM
VFIO在kernel3.6/qemu1.4以后支持,目前只支持PCI设备。
VFIO是一套用户态驱动框架,提供两种基本服务:
VFIO可以用于实现高效的用户态驱动。在虚拟化场景可以用于device passthrough。
通过用户态配置IOMMU接口,可以将DMA地址空间映射限制在进程虚拟空间中。
这对高性能驱动和虚拟化场景device passthrough尤其重要。
相对于传统方式,VFIO对UEFI支持更好。
VFIO技术实现了用户空间直接访问设备。无须root特权,更安全,功能更多。
https://www.ibm.com/developerworks/community/blogs/5144904d-5d75-45ed-9d2b-cf1754ee936a/entry/vfio?lang=en
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和主存,完成从设备虚拟地址到物理地址的映射。以及提供对故障设备的内存保护的功能。