Linux Kernel To Drop 486 And Early 586 Support
Kernel 6.15 is taking shape and it looks like it will eliminate support for Intel’s 486 chip and its contemporaries.
The next version of the Linux kernel is progressing towards release. Release candidate 5 appeared over the weekend, and we expect the kernel itself will probably officially arrive around the end of May or early June. What we feel is one of the most interesting changes is the removal of support for several chips from the 32-bit 80486 era.
The change is a patch from kernel veteran Ingo Molnar, and removes nearly 15,000 lines of code. It increases the features that an x86-32 CPU must support in order to run kernel 6.15 and later to include the Timer Stamp Counter (TSC) and the CMPXCHG8B software instruction. That instruction is accidentally rather famous, and has its own Intel erratum. In specific circumstances on buggy revisions of Intel’s silicon, it inadvertently completely locks up the processor, preventing it from doing anything at all until a reset. This happens regardless of whether the instruction is executed in an application or operating system, and causes a denial of service.
That hardware bug – known as the F00F bug as a reference to the instruction’s 0xF00FC7C8 byte sequence – only affected Pentium processors with the original Intel P5 microarchitecture, which was first released in 1993. It was fixed in revised silicon, and as a workaround for those with faulty chips, with operating-system-level mitigations.
So, in other words, this kernel change – the requirement for CMPXCHG8B – removes support for processors older than the original Intel Pentium, meaning the Intel i486 family and a handful of closely related early 586 processors, such as the IDT WinChip, and AMD Elan family.
That includes the chips that were marketed as “485slc” processors, which were essentially a 386SX with the extra CPU instructions from the 80486 line added.
In turn, that means that it effectively removes support for the last x86 chips that didn’t include onboard hardware floating-point units, which means that the kernel can also jettison its support for emulating an Intel-world FPU in software. The removal of that code makes up the majority of the parts that were deleted, but the remainder is still over 1,000 lines.
Ironically, this is happening just a few months after an intrepid coder, Mikhail Zakharov, added x86-flavored FPU emulation back into the NetBSD 10 codebase, as he described on his blog.
It has been a long time since a new version of the Linux kernel dropped support for an entire CPU family: the last occasion was when the developers removed support for the 386 way back in 2012. It’s also taken a while for this to happen: Linus Torvalds proposed getting rid of i486 support in 2022 but it was voted out. ®
Editor’s note: This article was tweaked to clarify the extent of the F00F bug, in that it was caused by an instruction sequence that would lock up a PC powered by a buggy Intel Pentium-family chip.
A considerable amount of time and effort goes into maintaining this website, creating backend automation and creating new features and content for you to make actionable intelligence decisions. Everyone that supports the site helps enable new functionality.
If you like the site, please support us on “Patreon” or “Buy Me A Coffee” using the buttons below
To keep up to date follow us on the below channels.