问题表象
某品牌x86服务器,Nvidia 2080 Ti GPU卡, CentOS7.3 操作系统, 配置vfio-pci驱动启动报错。
问题的操作步骤
硬件准备完毕,全部是原厂硬件,一般不会有硬件故障
安装Centos7.3操作系统,设置启动参数iommu=on等,在其他服务器上对比过,也没有问题。
3. 检查硬件板卡,已经被系统识别
4. 检查GPU卡的驱动状态,并没有启动vfio-pci
5. 检查vfio驱动配置文件,iommu配置,正常
6. 检查dmesg, 发现问题是vfio-pci驱动启动失败
问题定位
从新梳理整个流程,注意到iommu也不正常,iommu对于passthrough很重要。 IOMMU(i/o memory management unit)。iommu有两大功能:控制设备dma地址映射到机器物理地址(dmar),中断重映射(intremap) 。 iommu中dmar出现为虚拟化软件dma访问带来的性能提升,intremap出现为虚拟化软件透传带来了中断消息的安全保证。
而iommu的前提是主板支持Intel® VT-x、VT-d和Linux内核支持Intel® VT-x、VT-d,并在内核启动参数中添加iommu=on。
检查iommu配置,正常
检查CPU vt-d支持,正常
最后就是检查BIOS设置,是否enable VT-d
定位问题极大的可能性是这里VT-d没有enable。
问题修复
BIOS中enable VT-d, 然后重启系统。
检查vfio-pci, iommu. DRAM启动信息,明显比以前多了很多信息。
检查Nvidia驱动信息,vfio-pci挂载成功。
原因分析
有可能这款物理机上的GPU设备暂不支持加载到云主机使用 ,所以BIOS配置中默认关闭了VT-d选项。
参考文章