Debian – TSC_DEADLINE disabled due to Errata

debianfirmwarekernel

I sent my computer to the manufacturer for diagnosis and help for a video output issue it was having. They updated the BIOS. Since then I've been getting

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

I didn't have any microcode or ucode packages installed before and I didn't used to get this message.

I've contacted the manufacturer and they've responded "don't remember your ticket number but doubt we updated the BIOS", so they're not being very helpful.

It boots and works, but is TSC_DEADLINE important or useful?

The only thing I can find about it is this: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/?id=73b866d89bf7c9a895d5445faad03fa3d56c8af8

But that seems to only apply to VirtualBox, and in any case I'm already running kernel 4.14 so I would think if that commit were going to fix my issue it already would have.

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

Best Answer

The sudden appearance of this message is rather odd; it suggests your updated firmware is no longer upgrading your CPU’s microcode, whereas the previous firmware you had, did. Weird... (Another possible scenario is that your CPU originally didn’t support TSC deadline at all, and your firmware is now upgrading its microcode to a version which declares support for TSC deadline, but has errata rendering it useless.)

In any case, TSC deadline support is nice to have, but not vital. The kernel has an elaborate framework for timekeeping and timed event handling; TSC deadline is one possible implementation of event handling, but not the only one. On CPUs which support it, it is nice to have though, because it’s very efficient.

To upgrade your microcode and hopefully re-enable TSC deadline support, you can install the microcode update packages from Debian’s contrib and non-free repositories. To do so, edit your /etc/apt/sources.list to ensure that your Debian repository definitions include main, contrib and non-free; then run

sudo apt update

followed by

sudo apt install intel-microcode

(for Intel CPUs) or

sudo apt install amd64-microcode

(for AMD CPUs). Once that’s done, reboot, and your microcode should be updated. If TSC deadline support is re-enabled, you won’t see the error message at boot, and you’ll see tsc_deadline_timer in the flags lines of /proc/cpuinfo.

The Debian wiki has more information on microcode updates.

Related Question