关于gpu passthrough后device not found

guest找不到device

Posted by chinasoul on March 31, 2021

ubuntu20 GPU passthrough to fedora33

环境
  • host: ubuntu20.04 desktop
  • guest: fedora33
  • KVM, Qemu, virt-manager, nvidia RTX3090
  • 笔记本vnc访问host(host安装tigervnc+xfce)
步骤
host passthrough gpu到guest

不赘述,基本步骤就是bios开虚拟化(我这里是intel,打开VT-d),iommu打开(grub加intel_iommu=on),vfio配好(grub加vfio-pci.ids=xxx:xxx,实测vfio conf文件不需要也可以),update-grub就好。重启后dmesg看到iommu&vfio相关信息识别到gpu device ids信息即可。

1
2
3
4
[    0.038327] DMAR: IOMMU enabled
[    0.096381] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed90000 IOMMU 0
[    0.227596] iommu: Default domain type: Passthrough (set via kernel command line)
[    0.346112] pci 0000:00:00.0: Adding to iommu group 0
1
2
[    0.400446] vfio_pci: add [10de:2204[ffffffff:ffffffff]] class 0x000000/00000000
[    0.420462] vfio_pci: add [10de:1aef[ffffffff:ffffffff]] class 0x000000/00000000
laptop远程vnc连到host操作

因为经常需要远程连公司台式机,而且台式机的显示器没接上,给笔记本用的双屏,所以之前一直使用tigervnc/tightvnc连台式机虚拟桌面,所以这里也打算vnc连接,然后virt-manager去操作guest machine,这里坑了我2天,装好driver后nvidia-smi始终找不到gpu。。。

解决方案
  1. 用virt-manager启动guest的时候删掉默认的”Display Spice”显示,然后查看ip,ssh进去

    1
    2
    3
    4
    5
    
    virsh domifaddr fedora
     Name       MAC address          Protocol     Address
    -------------------------------------------------------------------------------
     vnet0      52:54:00:94:48:cd    ipv4         192.168.122.141/24
    # then ssh to gest and do your work
    
  2. 不用virt-manager,直接用qemu命令行,这样任何地方都用不到vnc,缺点是无法使用图形化

  3. host接上显示器,face to face直接操作host

#################################

4.1更新,有点复杂还没弄清头绪。。

在host没有装driver的情况下,guest使用图形化是没任何问题的。只要host上有driver,guest就无法启动桌面,然后host卸载了driver,guest还是不行,guest要卸载driver再重装就好了。。。