在UNRAID下想要利用NVIDIA显卡,最为传统的方法是创建一个虚拟机,并将显卡直通进去。最早使用1080测试了直通功能,只需要在虚拟机设置里的Other PCI Devices选中1080即可。但20系显卡因为多了一个type c接口,情况有些变化,之前在知乎上分享了URNIAD 6.6.6直通2080ti的经历,特地将其转载过来。

错误

之前在Unraid里建立了一个使用GTX1080的虚拟机,想用RTX 2080Ti替换了GTX1080。修改虚拟机配置后,启动虚拟机时很不幸地报错了:
fio error: 0000:02:00.0: group 27 is not viable Please ensure all devices within the iommu_group are bound to their vfio bus driver.
这是因为2080Ti新增了一个USB Type-C接口,默认情况下Unraid的VM manager并不会将这个接口同时分配给虚拟机。
在TOOLS->System Devices->PCI Devices and IOMMU Groups可以看到该USB控制器与显示控制器在同一个IOMMU group内。
IOMMU group 27: [10de:1e04] 02:00.0 VGA compatible controller: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti] (rev a1) [10de:10f7] 02:00.1 Audio device: NVIDIA Corporation TU102 High Definition Audio Controller (rev a1) [10de:1ad6] 02:00.2 USB controller: NVIDIA Corporation TU102 USB 3.1 Controller (rev a1) [10de:1ad7] 02:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU102 UCSI Controller (rev a1)
因此只将显示控制器分配给IOMMU,就会出现上面的错误。

解决方案

将显示控制器与USB控制器分离开放到不同的IOMMU group内

该方案最简单,只需要将Unraid->SETTINGS->PCIe ACS overide改成Both,然后重启计算机就行。
IOMMU group 31: [10de:1e04] 02:00.0 VGA compatible controller: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti] (rev a1) IOMMU group 32: [10de:10f7] 02:00.1 Audio device: NVIDIA Corporation TU102 High Definition Audio Controller (rev a1) IOMMU group 33: [10de:1ad6] 02:00.2 USB controller: NVIDIA Corporation TU102 USB 3.1 Controller (rev a1) IOMMU group 34: [10de:1ad7] 02:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU102 UCSI Controller (rev a1)
重启完之后显示控制器与USB控制器就处于不同的IOMMU group了,虚拟机的设置也不用改。