Linux Developers Push Urgent Patches To Fix 'Yet Another Hardware Trainwreck'

linus torvalds flipping bird
Accurate timers are critical to the function of the low-level parts of the underlying code that drives the user-facing software we actually use in our daily lives. Fortunately, x86-64 PCs include numerous timers. Actually selecting which of those timers to use in a given scenario, however, can be a headache due to bugs, design flaws or implementation issues.

The preferred timer on most modern machines should be the High-Precision Event Timer, or HPET. Sadly, that's not always the case on recent Intel hardware. Back in 2019, Linux started disabling the HPET on Coffee Lake and Ice Lake-based Intel platforms, owing to problems with the timers' accuracy when the system enters the PC10 low-power state (part of the "S0ix" states introduced with Haswell. Remember when companies started selling "Haswell-ready" power supplies?)

Now, a new urgent kernel patch for Linux 5.15-rc5 will disable HPET on all machines that support PC10 due to what the patch author (kernel developer Thomas Gleixner) calls "yet another hardware trainwreck." In essence, when modern Intel chips hit the PC10 idle state, the HPET stops working, even if the operating system is currently using it. This, obviously, results in all kinds of problems, so the solution is to fall back to older and less precise timers, like PMTIMER.

Gleixner's comments included with the patch remark that the only reason HPET is still in use on modern systems "is the fact that it is impossible to reliably query the TSC frequency via CPUID or firmware." He goes on to say that "in theory, HPET support should be removed altogether, but there are older systems out there which depend on it ... hopefully someday hardware people will understand that the approach of 'this can be fixed in software' is not sustainable."