Ingo Molnar, maintainer architektury x86, mechanizmu blokad i harmonogramu zadań w jądrze Linux, przedstawił do dyskusji zestaw poprawek, które usuwają z jądra wsparcie dla procesorów 486 (M486, M486SX, AMD ELAN) oraz wczesnych serii procesorów 586. W jądrze proponuje się pozostawienie jedynie możliwości pracy z procesorami x86, które obsługują instrukcję CX8 (CMPXCHG8B) oraz rejestr TSC (Counter Czasu), które pojawiły się w procesorach Pentium.
Zauważa się, że aby obsługiwać procesory 486, w jądrze musi być utrzymywany kod emulujący operacje CX8 (porównanie i wymiana 8 bajtów) oraz TSC (licznik cykli CPU używany przez harmonogram zadań). Taki kod komplikuje jądro, utrudnia utrzymanie i czasami staje się źródłem problemów, których rozwiązanie zajmuje czas deweloperów. Zaprzestanie wsparcia dla 486 pozwoli na usunięcie z jądra 14104 linii kodu, co znacznie uprości niektóre funkcje w jądrze dzięki wyeliminowaniu warstw emulujących CX8 i TSC oraz umożliwi pozbycie się biblioteki math-emu, emulującej FPU.
Dzień przed publikacją poprawek, Linus Torvalds poruszył kwestię zasadności usunięcia wsparcia dla 486 podczas dyskusji na temat problemu, który manifestował się przy emulacji CX8. Linus uważa, że nadszedł czas, aby zrezygnować z obsługi procesorów 486 i nie widzi powodów, by dalej poświęcać czas deweloperów na rozwiązywanie problemów, które się z nimi wiążą. Wsparcie procesorów 386 zostało usunięte z jądra w 2012 roku. Według uczestników dyskusji, obecnie nastał czas, aby usunąć wsparcie dla CPU 486. W październiku 2022 roku Linus już publikował podobną propozycję, ale nie spotkała się ona z rozwinięciem.
W systemach 486, które wciąż są w użyciu, aktualne jądra Linux praktycznie nie są wykorzystywane. Specjalizowane wersje procesorów 486 do systemów wbudowanych, takie jak Intel Quark, obsługują CX8 i TSC, więc ich zmiana ich nie dotknie. Stare, oryginalne CPU 486 zazwyczaj wciąż są używane z przestarzałymi dystrybucjami, które dostarczają stare wersje jądra Linux. Nowoczesne dystrybucje Linux od dawna zaprzestały wsparcia dla 32-bitowych systemów x86 lub przeszły na użycie opcji X86_PAE podczas kompilacji, co wymaga wsparcia dla CX8.
Źródło: opennet.ru
