Xen 半虚拟化中,将PCI passthrough到虚拟机中,归虚拟机独占
lspci 可以得到PCI的信息,获取要passthrough的PCI标示(例如01:00.0)。
可以用hot-plug的方式, 使用命令:
xl pci-assignable-add 01:00.0
xl pci-assignable-list
xl pci-attach $1 '01:00.0'
在虚拟机里lspci可以看到01:00.0的PCI信息
xl pci-detach $1 '01:00.0' 可以取消passthrough
=============================================================
问题:
但是当我给虚拟机分配地址空间较大时(大于3G),会出现PCI地址空间与系统地址空间冲突
解决方法:
修改/etc/default/grub文件,在GRUB_CMDLINE_XEN_DEFAULT后面添加xen-pciback.hide=(01:00.0)
执行 grub2-mkconfig -o /boot/grub2/grub.cfg
查看/boot/grub2/grub.cfg启动配置,可以看到xen-pciback.hide=(01:00.0)信息
reboot
修改/etc/xen/虚拟机配置文件,添加:
pci=['01:00.0,permissive=1']
执行 xl pci-assignable-add 01:00.0
创建虚拟机
不会有地址冲突问题