问题如下图:
这个错误信息其实是linux内核的vfio驱动报出来的,主要原因是"在iommu分组中,不是所有的设备都被绑定到vfio驱动".
所以,解决方案核心思想: 将要使用的设备独立到一个iommu分组中。
步骤1:通过以下 "list_iommu_group.sh "可以看到所有的iommu分组和其分组内的设备信息:
list_iommu_group.sh 脚本内容如下:
1 #!/bin/bash 2 for d in $(find /sys/kernel/iommu_groups/ -type l | sort -n -k5 -t/); do 3 n=${d#*/iommu_groups/*}; n=${n%%/*} 4 printf 'IOMMU Group %s ' "$n" 5 lspci -nns "${d##*/}" 6 done;
执行结果类似下图:
步骤2 : 内核启用 pcie_acs_override
以 debian-11 系统为例,
1、 编辑 grub的默认配置文件 "/etc/default/grub" , 添加"pcie_acs_override=downstream,multifunction"
2、更新系统的grub : update-grub
3、 重启后,再次执行"list_iommu_group.sh "脚本来查看iommu分组情况是否发生改变。如果发现需要使用的设备被独立为一个分组,则成功了; 如果未发生变化则说明内核不支持acs,需要给内核打入acs的补丁才行 (内核打acs补丁的参考:)。
标签:VFIO,IOMMU,acs,分组,内核,group,iommu From: https://www.cnblogs.com/zhaohuaxishi/p/17543445.html