QEMU-KVM、GPU 直通、Windows 10 - 崩溃

QEMU-KVM、GPU 直通、Windows 10 - 崩溃

过去几年,我一直在 QEMU-KVM 上使用 GPU Passthrough 愉快地运行几台 Windows 10 VM,几乎没有遇到任何问题。然而几天前(2020 年 5 月 21 日),我的两台 VM 在启动时都开始崩溃。

如果我以安全模式启动 Windows - 它可以正常工作。如果我在禁用 Windows GPU 驱动程序的情况下启动 - 它可以正常工作。一旦安装或启用驱动程序,它就会崩溃(空白屏幕,VM 使用 100% 的 CPU,无法切换键盘上的数字锁),几秒钟后 VM 重新启动。

有谁遇到过类似的问题或知道我该如何进一步排除故障?


硬件

  • 主板:GA-X99P-SLI
  • 处理器:i7-6850K
  • 内存:32GB
  • 主机 GPU:Nvidia Geforce 9400 GT
  • 客用 GPU x2:Nvidia GTX GeForce 1060 6GB
  • 磁盘:三星 950 PRO NVMe 512GB

软件

  • Ubuntu 服务器 18.04/20.04
  • qemu-kvm 2.11/4.2
  • Windows 10 x64 1909

我尝试过的事情

  • 虽然不太可能,但由于两台虚拟机同时崩溃,我回滚了几个 Windows 更新
  • 尝试过旧驱动程序、Windows 更新驱动程序和最新的 Nvidia 驱动程序
  • 这与apt 升级所以我尝试回滚,但我无法(轻易地)因为我已经清理了缓存(哎呀!!)并且软件包不可用
  • Windows 事件中没有错误或警告
  • /var/log/libvirt/qemu 中没有错误或警告
  • 所有 GPU 在裸机上一起运行良好
  • 使用最新 LTS 版本的 Ubuntu(20.04)和相关的 qemu-kvm(4.2)重建了所有内容
  • 将虚拟机从 i440 切换到 Q35

答案1

好的,感谢这篇文章,我设法解决了这个问题,至少在测试环境中是这样:
https://forums.engineerworkshop.com/t/fixing-gpu-passthrough-on-windows-10-vm-in-proxmox/207

我采取的步骤如下:

  1. 在我的 VM 配置中设置<kvm><hidden state='off'/></kvm>- 这会禁用 GPU 驱动程序,以便我可以启动 Windows
  2. 将我的 GPU 的注册表项设置MSISupported为“1”
  3. <kvm><hidden state='on'/></kvm>在我的虚拟机配置中重新设置

--

我将在下周末正确重建我的虚拟机(我一直在裸机上运行一个 Win 10 实例),如果一切进展顺利,就接受这个作为答案。

--

编辑:我重建了我的虚拟机,上述操作最初解决了这个问题。但是,我在虚拟机上运行了多个不同的 GPU,每次更换 GPU 时,注册表项都会重置。我最终用 AMD 替换了所有 GPU,效果更好(仍然有重置错误,但至少它们可以正常工作)。

答案2

添加此内容可解决问题

    <hyperv>
          <vendor_id state="on" value="whatever"/>
    </hyperv>

遇到了同样的问题。

相关内容