Windows 10 KVM 客户机导致 Ubuntu 20.04 主机崩溃(修订版)

Windows 10 KVM 客户机导致 Ubuntu 20.04 主机崩溃(修订版)

我非常困惑,决定从头重写这个问题,所以如果有些评论没有意义,那就是原因。向那些浪费我时间的人道歉。

使用 KVM 虚拟机(均具有 PCI 直通)时,我遇到了整个系统冻结的问题。主机是 Ubuntu 20.04,它在带有 ASRock x399 Taichi 主板的 Threadripper 1950X 上运行。

似乎有很多方法可以触发它,但最可靠的方法之一是使用我的 Kubuntu VM,同时在 Windows VM 中播放音频。仅使用 Kubuntu VM 时,这种情况很少发生。单独使用 Windows VM 时,这种情况通常发生得更慢,但最终会发生。

可能并不重要,但整个问题都是昨晚我在 Windows VM 上观看视频时开始的。客户机冻结了,所以我强行关闭了它,随后客户机导致整个系统崩溃。

无论如何,我的策略是将我正在做的事情的描述插入 journalctl 中,标记为“###Admin note:”,方法是使用

 echo '###Admin note: test' | systemd-cat

重启后看到的输出journalctl -b -1https://pastebin.com/fi1iR8Zx

我发送给 journalctl 的最后一条消息似乎没有被保存,但确实出现在终端中:

您可以看到我发送给 systemd 的最后一条消息

输出journalctl -k -b -1 https://pastebin.com/1t38WsWh

还有其他我应该查看的日志吗?哪些其他信息会有帮助?我原本想发布有关我的 PCI 设备和 virsh XML 文件的信息,但我不想让这篇文章充斥着不相关的内容。

编辑:我注意到我对某种叫做 的东西感到发烧SMBUSMASTER。到目前为止,我只发现了关于那到底是什么的猜测。如果最高安全温度与CPUTIN(68C) 相同,那么我想我有问题。 这很糟糕吗?

此外,除了 GPU 的 PCI 直通之外,我的系统还有一个不寻常的特点,那就是 Windows 的 USB 设备全部连接到 PCI USB-C 卡,该卡是直通的。我在日志中没有看到任何与此有关的内容,但似乎值得一提。

可能的解决方案?

我想我可能已经明白了。

查看我的日志时,我注意到许多这样的条目:

Jul 10 23:43:20 virtland kernel: [Firmware Bug]: ACPI MWAIT C-state 0x0 not supported by HW (0x0)

通过谷歌搜索我发现了这个 Ryzen 错误:https://bugzilla.kernel.org/show_bug.cgi?id=196683

这让我想到了这个话题:http://forum.asrock.com/forum_posts.asp?TID=11690&title=x370-taichi-c-states

现在我可以发誓我suspend to memory早就把它关掉了,但可以肯定它被设置为了auto。无论如何,我把它关掉了,现在我正在用 Windows 听音乐,在 Kubuntu 中工作。

也许在我设置主机之前进行固件更新时,设置被改回了默认设置,但我仍然不明白为什么这会是个问题。这可能与电源有关吗?我们正遭遇热浪,灯光有时会闪烁。正是出于这个原因,我使用的是 APC UPS,但当我打开空调时,它发出了很多咔嗒声。我当然没有试图在任何时候暂停到 RAM,但 UPS 无法足够快地纠正的电源波动是否可能以某种方式触发了与此相关的问题。

无论如何,除非我过几天不使用它,否则我无法确信这个问题已经得到解决,但这是非常有希望的。

我确实说得太早了,以下是该会话的日志。我使用 Windows 和 Kubuntu 几个小时都没有问题,这是一个记录。MWAIT 错误仍然存​​在:

journalctl -b -1https://pastebin.com/1feLq19U

编辑:我注意到最后的日志似乎在崩溃实际发生之前就被切断了,所以我又重现了一次崩溃。journalctl -b -1重启后的输出在崩溃发生前十多分钟就被切断了。幸运的是,我运行了“journalctl -f”,这实际上捕获了直到我最后一条评论(崩溃发生在不到一分钟后)的所有内容。不幸的是,在崩溃发生时我没有看到任何错误。

我很困惑,为什么 journalctl 保存到系统日志中,并在输出发送到实时文件之前十分钟被截断。几秒钟我可以理解,但十分钟呢?

无论如何,为了进行比较,这里是日志加上我拍摄的崩溃屏幕的图片。

  1. 输出journalctl -b -1:提前 10 分钟截止,但用于比较。https://pastebin.com/mKu4bBzL

  2. 文本保存自journalctl -f > file.txt已完成:https://pastebin.com/kSXDRkBp

  3. 屏幕图片 今天的崩溃

编辑:另一个可能重要的细节是 Windows VM 是使用以前的主机安装创建的(它是用 Arch 创建的,但使用了早期版本的 QEMU,所以这应该不是问题,对吧?)

编辑:禁用主板上的 C 状态,没有运气

编辑:我按照此处的说明设置了内核崩溃转储:https://ubuntu.com/server/docs/kernel-crash-dump 那里有很多东西,但有一件事引起了我的注意:

[  463.983070] vfio-pci 0000:09:00.0: vfio_ecap_init: hiding ecap 0x1b@0x2d0
[  463.983308] vfio-pci 0000:09:00.0: vfio_ecap_init: hiding ecap 0x1e@0x370
[  465.131213] vfio-pci 0000:0a:00.0: vfio_ecap_init: hiding ecap 0x19@0x280
...
[ 1047.680144] vfio-pci 0000:43:00.0: enabling device (0000 -> 0003)
[ 1047.680422] vfio-pci 0000:43:00.0: vfio_ecap_init: hiding ecap 0x19@0x900

这些是我正在使用的所有卡的 PCI ID(43用于 Kubuntu090aWindows)。谷歌搜索hiding ecap确实找到了有关与我的类似硬件(AMD CPU + AMD GPU 直通)的问题的帖子: https://forums.gentoo.org/viewtopic-t-1070816-start-0.html https://forum.level1techs.com/t/rx-470-stuck-in-d3-single-gpu-passthrough/147401

我将 RX470 移植到 Windows 后,几个月内都能顺利关机或重启。由于 AMD 重置错误,我很久以前就放弃了让它在 Linux 上运行的尝试。这个错误有可能以不同的形式再次出现吗?

相关内容