TSC_DEADLINE 由于勘误而被禁用

TSC_DEADLINE 由于勘误而被禁用

我将计算机发送给制造商进行诊断并帮助解决它所遇到的视频输出问题。他们更新了 BIOS。从那时起我就一直得到

[Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x20 (or later)

我没有任何微码或者代码以前安装过的软件包,但我不习惯收到此消息。

我已经联系了制造商,他们的回复是“不记得您的票号,但怀疑我们是否更新了 BIOS”,所以他们并没有提供太多帮助。

它可以启动并工作,但 TSC_DEADLINE 重要或有用吗?

我能找到的关于它的唯一信息是:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?id=73b866d89bf7c9a895d5445faad03fa3d56c8af8

但这似乎只适用于 VirtualBox,并且无论如何我已经在运行内核 4.14,所以我想如果该提交能够解决我的问题,它已经存在了。

ryan@pocketwee:~$ uname -a
Linux pocketwee 4.14.0-1-amd64 #1 SMP Debian 4.14.2-1 (2017-11-30) x86_64 GNU/Linux

答案1

这条消息的突然出现有点奇怪;这表明您更新的固件不再升级 CPU 的微代码,而您之前的固件则升级了。奇怪...(另一种可能的情况是你的CPU本来就不支持TSC的deadline根本不,并且您的固件现在正在将其微代码升级到声明支持 TSC 截止日期的版本,但有勘误表使其无用。)

无论如何,TSC 的最后期限支持固然很好,但并不重要。内核有一个复杂的计时和定时事件处理框架; TSC 截止时间是事件处理的一种可能实现方式,但不是唯一一种。不过,在支持它的 CPU 上,拥有它还是很不错的,因为它非常高效。

要升级您的微代码并希望重新启用 TSC 截止日期支持,您可以从 Debiancontribnon-free存储库安装微代码更新包。为此,请编辑您的/etc/apt/sources.list以确保您的 Debian 存储库定义包括maincontribnon-free;然后运行

sudo apt update

其次是

sudo apt install intel-microcode

(对于 Intel CPU)或

sudo apt install amd64-microcode

(适用于 AMD CPU)。完成后,重新启动,您的微代码应该会更新。如果重新启用 TSC 截止时间支持,您将不会在启动时看到错误消息,并且会tsc_deadline_timer在.flags/proc/cpuinfo

Debian 维基有有关微代码更新的更多信息

答案2

设置 CONFIG_X86_X2APIC 可能有效。我需要备份我的工作系统才能再次尝试破坏它。

角度是 TSC 与中断重映射和 iommu 有关。您可以在设备驱动程序 | 下打开此功能。 IOMMU 硬件支持,可以支持 x2apic,但也会带来微代码无法修复的漏洞,但似乎只影响虚拟机,因此您可以为此关闭“Virtio IOMMU 驱动程序”。

然而,我可能是错的。备份后我会再次尝试破坏我的 TSC。

相关内容