ACRN虚拟机内IOMMU
对非虚拟机而言,只要在BIOS里开启VT-d就可以用iommu去映射vfio使用DPDK,但是在虚拟机中即便BIOS开启了VT-d,它也传不到VM中。因此这个帖子解决一下这个问题。
在ACRN的launch脚本中需要passthru两个网卡,一个用来做静态ip,另一个做dpdk的vfio口
我们要改一下vm的内核启动参数,这个和正常在ubuntu里面修改grub不一样,我们需要在外面挂载分区1,再进行修改
sudo fdisk -lu eci-test_a.img
mkdir myloop1
mkdir myloop1 sudo mount -o loop,offset=1048576 eci-test_a.img myloop1
# 1048576 = 2048*512
cd myloop1/BOOT/EFI
sudo nano grub
#在grub的参数里面添加
intel_iommu=on iommu=pt
sudo umount myloop1
然后需要编译ECI的内核,具体可以参考解开Intel ECI 的面纱-CSDN博客
主要是开启CONFIG_VFIO_NOIOMMU,然后拷贝生成的*.deb到VM中
sudo apt install ./linux*.deb
安装完后重启VM,可以用下面命令检查(eci默认是不开这个的,要自己编译eci内核)
zcat /proc/config.gz | grep IOMMU
进入VM后,按下面操作,即可绑定vfio
modprobe vfio enable_unsafe_noiommu_mode=1
sudo dpdk-hugepages.py -r 2G -p 2M
sudo modprobe vfio-pci
sudo dpdk-devbind.py --bind=vfio-pci 00:06.0
IMG扩容
qemu-img resize eci-test_a.img +5G
进入VM中
sudo apt-get update
sudo apt-get install cloud-guest-utils
sudo growpart /dev/vda 2
sudo resize2fs /dev/vda2
搞定收工