KVM直通Tesla T4 GPU安装windows虚拟机出现PCIE报错指向GPU荐

问题描述

多个客户在使用kvm虚拟机搭配T4 GPU创建windows虚拟机时,物理机出现PCIE报错,且报错指向具体的GPU

测试发现只有在安装GPU驱动时会引发物理机PCIE报错,具体由以下两种情况触发:

  • kvm使用包含T4 GPU 驱动的windows镜像创建虚拟机时
  • kvm使用纯净的wit R k u 8 } z {ndowm 0 P . b : j d rs镜像创建虚拟机正常,在windows虚拟机下安装GPU驱动时

详细报错示例:

#服务器事件日志出[ z B @ J ! a现PCIE报错
14b | 06/02/2020 | 16:57:59 | Critical Interrupt PCIE | Bus Uncorrectable error | AsserteD [ @d
14c | 06/02/2020 | 16:58:14 | Critical Interrupt PCIE | Bus Uncorrectable ed C e I v Srror | Asserted
#服务器黑盒日志给出了PCIE的y q 7 9 h . `报错busno
[Jun 02 2020 16:57:5X $ / /9] : PCIE Error: locate:NPSENTBusNo 62 DevNo 0 FuncNo 0 Bus Uncorrectable Error assertion.
[Jun 02 2020 16:57:59] : Current BIOS Code(Port80): 0x00.
[Jun 02 2020 16:58:14] : PCIE Ej  K ? ~ / rrror: loE w P $ g 6cate:NPSENTBusNo 181( G h 9 DevNo 0 FuncNo 0 Bus Uncorrectable Error assertion.
[Jun 02 2020 16:58:14] : Cup c #rrent BIOS CoK j { Mde(Port80): 0x00.

其中黑盒日R R N @ h n志BusNo 62和BusNo 181分别指向3E:00和B5:00两个GPU。

KVM直通Tesla T4 GPU安装windows虚拟机出现PCIE报错指向GPU荐

KVM直通Tesla T4 GPU安装windows虚拟机出现PCIE报错指向GPU荐

解决办法

linux宿主机每次开机进系 c I统后,执行命令清除root port SERR信息,可将以下命令添加j f r y # 8 H进开机自启动配置中,需要) e T y I R注意root port的de- 9 ` q T S G = ,vice_id 不要搞错。

setpci -s 3a:00.0 3e.w=0:2
setpci -s ae:00.0 3e.w=0:2

问题根因

直通连接的T4 GPU卡,w e 8 9 I W j ,在Windows 虚拟机下触发GPU MSI-X表的访问,这将导@ k g - ` / i致来自T4不支持的请求(UR)响应,该错误由PCIe root port触发系统处理器上的不可屏蔽中断(NMI),从而导致不可恢复的系统错误。

NVIDAb I 0 ) C ( v提交BUG给RedHat KVM团队建议修复方r ] * e G L H案:在禁用相应的MMIO访问时,使PCIe root的端口映射无效。 并将尝试对设备的MMIO访问仅向用户生成SIGBUS响应,并且将避免导致KVM虚P j # r n k拟机管理程序上的NMI的系统@ f K g S d错误。

根据:https://access.redhat.com/errata/RHSA-2020:2664 June 30 之后的kernelB K f 包含了这个bug fix : 182063; C L O = % l , 42
大家可以尝试验证下。

KVM直通Tesla T4 GPU安装windows虚拟机出现PCIE报错指向GPU荐