buggy TSC_DEADLINE not disabled for xenial/trusty kernels
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Trusty |
New
|
Low
|
Unassigned | ||
Xenial |
New
|
Low
|
Unassigned |
Bug Description
[Impact]
An upstream commit added Intel cpu model/microcode checks to disable TSC_DEADLINE due to cpu errata:
commit bd9240a18edfbfa
Author: Peter Zijlstra <email address hidden>
Date: Wed May 31 17:52:03 2017 +0200
x86/apic: Add TSC_DEADLINE quirk due to errata
That commit is included in the Ubuntu kernels starting at artful v4.13.
The Xenial 4.4 and Trusty 3.13 kernels do not yet have this commit, and so may trigger the TSC_DEADLINE microcode bug.
Some details on the errata, under HSD173 (page 66):
https:/
The kernel commit initially working around this microcode errata contains a description of what happens when the bug is triggered, "TSC deadline timer stops working or creates an interrupt storm..." (from commit 855615eee9b1989
[Test Case]
On a system with a CPU model and microcode containing the TSC errata, check the /proc/cpuinfo contents; if the 'tsc_deadline_
[Regression Potential]
The major regression potentials I see for this are:
1) incorrectly disabling the TSC_DEADLINE timer, on a system where the microcode errata doesn't apply, and
2) new reports of problems by T and X users who previously did not know their CPU microcode was buggy and now see the "TSC_DEADLINE disabled" boot log error, and report that as a "new bug".
[Other Info]
There are two follow-on fixes/refinements for this that should also be backported to T and X kernels:
https:/
https:/
Those commits update the specific microcode levels for specific cpu model/steppings, and prevent disabling the timer on virtualized guests (where the timer is also virtualized), respectively.
Additionally several related commits add, and then remove (once the microcode-
Changed in linux (Ubuntu Trusty): | |
importance: | Undecided → Low |
Changed in linux (Ubuntu Xenial): | |
importance: | Undecided → Low |
Changed in linux (Ubuntu): | |
status: | New → Fix Released |
Changed in linux (Ubuntu Trusty): | |
status: | New → In Progress |
Changed in linux (Ubuntu Xenial): | |
status: | New → In Progress |
Changed in linux (Ubuntu Trusty): | |
assignee: | nobody → Dan Streetman (ddstreet) |
Changed in linux (Ubuntu Xenial): | |
assignee: | nobody → Dan Streetman (ddstreet) |
Changed in linux (Ubuntu Xenial): | |
assignee: | Dan Streetman (ddstreet) → nobody |
Changed in linux (Ubuntu Trusty): | |
assignee: | Dan Streetman (ddstreet) → nobody |
Changed in linux (Ubuntu Xenial): | |
status: | In Progress → Triaged |
Changed in linux (Ubuntu Trusty): | |
status: | In Progress → New |
Changed in linux (Ubuntu Xenial): | |
status: | Triaged → New |