A set of Linux kernel patches posted today by longtime Linux kernel developer Ingo Molnar are looking to remove support for “ancient” 32-bit CPUs. In particular, if these patches are accepted, the Linux kernel would be ending support for old i486 CPUs as well as early i586 CPU models.
While rarely talked about or used in modern Linux environments with many distributions ending their x86 32-bit hardware support is that the kernel has retained support for old i486 processors from the early 1990’s. The patch series today though would end support for original i486 processors as well as early i586 processors. The kernel patches would remove support for CPUs lacking TSC and CX8/CMPXCHG8B capabilities. Basically this would put the minimum upstream Linux kernel support for 32-bit processors at the original Pentium CPU with CMPXCHG8B and Time Stamp Counter (TSC) support. Even then it’d be surprising to hear anyone spinning up a modern Linux kernel and modern software stack on their i586 / P5 Pentium and these patches are just for dropping the CPU support of hardware even older than that.
Ingo Molnar argues in the patch series that removing support for old i486 and early i586 processors will reduce a maintenance burden on kernel developers. Doing away with that old hardware support will also lighten the kernel by over fourteen thousand lines of code.
Molnar wrote in this morning’s RFC patch series:
“In the x86 architecture we have various complicated hardware emulation facilities on x86-32 to support ancient 32-bit CPUs that very very few people are using with modern kernels. This compatibility glue is sometimes even causing problems that people spend time to resolve, which time could be spent on other things.
As Linus recently remarked:
” > I really get the feeling that it’s time to leave i486 support behind.
> There’s zero real reason for anybody to waste one second of
> development effort on this kind of issue.”This series increases minimum kernel support features to include TSC and CX8 (CMPXCHG8B) hardware support, which removes 486 (and derivatives) support and early-586 (and derivatives) support.
Doing this allows the removal of a fair amount of code:
80 files changed, 38 insertions(+), 14104 deletions(-)
Much of which is the math-emu/ library – but even without math-emu, the simplification is substantial:
33 files changed, 38 insertions(+), 1081 deletions(-)”
It’s about time to see this happen.