linux vfio 原理,Linux Passthrough vfio-pic驱动报错解析

问题表象

某品牌x86服务器,Nvidia 2080 Ti GPU卡, CentOS7.3 操作系统, 配置vfio-pci驱动启动报错。

e4431cd9859c782670b2586cabbbb9e6.png

问题的操作步骤

硬件准备完毕,全部是原厂硬件,一般不会有硬件故障

安装Centos7.3操作系统,设置启动参数iommu=on等,在其他服务器上对比过,也没有问题。

9433287265aaffb2b32dc9333e6d9e70.png

3. 检查硬件板卡,已经被系统识别

d49b4cc758776f45c2f2f6ab1df5fbe3.png

4. 检查GPU卡的驱动状态,并没有启动vfio-pci

dc907cec28f5fbee77dea138b37c3d51.png

5. 检查vfio驱动配置文件,iommu配置,正常

57c662cc913e92b6efc7635d7d561103.png

6. 检查dmesg, 发现问题是vfio-pci驱动启动失败

0c10310e2920c3f0337839c483a23198.png

问题定位

从新梳理整个流程,注意到iommu也不正常,iommu对于passthrough很重要。 IOMMU(i/o memory management unit)。iommu有两大功能:控制设备dma地址映射到机器物理地址(dmar),中断重映射(intremap) 。 iommu中dmar出现为虚拟化软件dma访问带来的性能提升,intremap出现为虚拟化软件透传带来了中断消息的安全保证。

5431068b0253b59918c02fd4604dc646.png

而iommu的前提是主板支持Intel® VT-x、VT-d和Linux内核支持Intel® VT-x、VT-d,并在内核启动参数中添加iommu=on。

检查iommu配置,正常

e7212c39dd779f30c9017a090d7db768.png

检查CPU vt-d支持,正常

42896cac48386d81c1fece604b7aef20.png

最后就是检查BIOS设置,是否enable VT-d

43110ca729d80f94b15954dccf91ed71.png

9cb963fa5733e91ab0bb7c5e040e0f23.png

定位问题极大的可能性是这里VT-d没有enable。

问题修复

BIOS中enable VT-d, 然后重启系统。

检查vfio-pci, iommu. DRAM启动信息,明显比以前多了很多信息。

c0d1bdc36c04c50b455afc663e0d2a7a.png

检查Nvidia驱动信息,vfio-pci挂载成功。

ca6f5166db4889bccf6bc86ff54d19a0.png

原因分析

有可能这款物理机上的GPU设备暂不支持加载到云主机使用 ,所以BIOS配置中默认关闭了VT-d选项。

参考文章

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值