过去几年,我一直在 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
我采取的步骤如下:
- 在我的 VM 配置中设置
<kvm><hidden state='off'/></kvm>
- 这会禁用 GPU 驱动程序,以便我可以启动 Windows - 将我的 GPU 的注册表项设置
MSISupported
为“1” <kvm><hidden state='on'/></kvm>
在我的虚拟机配置中重新设置
--
我将在下周末正确重建我的虚拟机(我一直在裸机上运行一个 Win 10 实例),如果一切进展顺利,就接受这个作为答案。
--
编辑:我重建了我的虚拟机,上述操作最初解决了这个问题。但是,我在虚拟机上运行了多个不同的 GPU,每次更换 GPU 时,注册表项都会重置。我最终用 AMD 替换了所有 GPU,效果更好(仍然有重置错误,但至少它们可以正常工作)。
答案2
添加此内容可解决问题
<hyperv>
<vendor_id state="on" value="whatever"/>
</hyperv>
遇到了同样的问题。