План за прекратяване на поддръжката на стари ARM процесори в ядрото на Linux

Арнд Бергман (Arnd Bergmann), отговорен за пакетите с ядрото в SUSE, публикува в списъка за разпространение на разработчиците на ядрото на Linux план за премахване на ядрото и инструментариума за построяване на база GCC от кода за поддръжка на стари CPU ARM и свързаните с тях ABI, набори от инструкции и възможности на ядрото. Планът все още е в етап RFC, т.е. е публикуван за обсъждане в общността. В случай на одобрение на плана, премахването на старите процесори ARM се предлага да започне в ядрото на Linux 6.12, чийто релиз се очаква през декември. Първите кандидати за премахване са ARMv4 (без премахване на ARMv4T), iWMMXt, BE32 и OABI.

Спирането на поддръжката на старите CPU ARM в ядрото съвпада с прекратяването на тяхната поддръжка в GCC — част от представените за премахване CPU вече не се поддържат в новите клонове на GCC, а част се планира да бъде премахната в бъдещи версии, което ще улесни модернизацията и внедряването на нови възможности в компилатора. Премахването на поддръжката на архитектурата в GCC ще изисква премахване на нейната поддръжка и от ядрото в случай на повишаване на минимално поддържаната версия на GCC (в момента поне версия GCC 5.1 е необходима за компилиране на ядрото).

Архитектури, чипове и разширения, които се предлагат за премахване от ядрото:

  • ARMv3 — поддръжката вече е прекратена в GCC 9.
  • ARMv4 — използва се за процесори StrongARM и FA526, които все още са в употреба, като най-новите от тези чипове са произведени преди около 20 години. Поддръжката на ARMv4 е прекратена в Debian 5.0. Предлага се първо да се спре поддръжката на ARMv4 в GCC, а след това след няколко години и в ядрото.
  • ARMv4T — в употреба са 6 семейства SoC с ядра ARM720T, ARM920T и ARM922T, които са по-разпространени от SoC на базата на ARMv4. Поддръжката на ARMv4T е прекратена в Debian 9.0. В ядрото поддръжката на ARMv4T е планирано да бъде прекратена не по-рано от прекратяването на поддръжката на ARMv5.
  • ARMv5 — използва се на около 1/3 от всички поддържани платформи в ядрото, но повечето от тези платформи са близки до края на жизнения си цикъл. Debian продължава да поддържа ARMv5, но поради липсата на FPU и атомарни операции поддържането става все по-трудно и вероятно скоро портът на Debian за ARMv5 ще бъде класифициран като неофициален.
  • Началните поколения ARMv6 — използват се в SoC като ARM1136r0p (NXP i.MX31) и OMAP24xx (Nokia N8xx), но тяхната поддръжка изисква хакове за работа в ядра с SMP.
  • ARMv6K — използва се в ARM1176 (Raspberry Pi 1, AST2500) и ARM1136r1. В ядрото няма пречки за спиране на поддръжката, но в дистрибутивите възникват трудности поради несъответствието с типовия набор armv7-a+vfpv3-d16.
  • ARMv7-M — използва се в микроконтролери, базирани на Cortex-M3/M4/M7, които остават последните поддържани чипове в ядрото без управление на паметта (MMU). Работата по ядрата на системи без MMU е прекратена през 2017 година, след превключването на подобни чипове за развитие на RTOS, като Zephyr. Предлага се да се премахне поддръжката на ARMv7-M през 2027 година, десет години след спирането на разработката, въпреки продължаващата поддръжка в GCC.
  • iWMMXt — в ядрото вече е прекратена поддръжката на CPU ARMv7 PJ4 (MMP2, Berlin), след което не останаха употребявани системи, използващи този набор от инструкции. Поддръжката на iWMMXt вече е спряна в Clang и се предлага за премахване от GCC.
  • BE32 (big endian ARMv5) — използва се само в един SoC Intel IXP4xx. В старите версии на Debian се поддържаше само режим little-endian, но в драйверите остават нерешени проблеми. Предлага се да се премахне поддръжката на BE32 от GCC и ядрото, тъй като през последните години никой не е опитвал да поправи проблемите в драйверите.
  • BE8 (big-endian ARMv7) — много от драйверите имат проблеми, тестовете са прекратени и няма информация за оставащи в употреба устройства. Режим BE8 може да представлява интерес за тестване на компоненти в потребителското пространство на big-endian системи, затова поддръжката на BE8 планират да запазят в ядрото и GCC поне за няколко години, преди да започне да води до проблеми.

Предложени за премахване функции на ядрото на Linux:

  • Структура param_struct, използвана преди ATAGS (ARM Tag-Area) — обявена за остаряла още през 2001 година, но все още се използва в кода за платформите RiscPC и Footbridge.
  • Файлове с параметри на база структура ATAGS (използвана за предаване на информация за конфигурация до Device Tree) — в ядрото остават 29 файла, свързани с 10 платформи SoC, използващи ATAGS.
  • OABI (Стар ABI, старият ABI за архитектура ARM) — почти навсякъде сега се използва EABI (Embedded ABI). OABI е причина за много грешки, тъй като разработчиците на драйвери спряха да вземат под внимание някои свързани с него особености. Поддръжката на OABI при изграждане на компоненти за потребителското пространство е прекратена в GCC 4.8, но за ядрото е оставен флагът "-mabi=apcs-gnu". Предлага се засега да се запази OABI, но да се усложни включването по недоглеждане.
  • Режимът на съвместимост с OABI (OABI_COMPAT) — позволява изпълнение на изпълними файлове, събрани за OABI, използвайки ядро с EABI. Възникват отделни проблеми в драйверите поради несъвместимост с ioctl, но трудоемкостта на поддръжката на този режим е значително по-малка, отколкото поддръжката на ядрото с OABI. За запазване на поддръжката на StrongARM би било разумно да се запази поддръжката на OABI или OABI_COMPAT.
  • NWFPE (No Floating Point Emulator, емулатор за извършване на операции с плаваща запетая) — пачовете за премахване бяха предложени още преди 11 години, но NWFPE е необходим за работата на някои компоненти на потребителското пространство, събрани за OABI, поради което поддръжката на NWFPE е препоръчително да се запази, докато в ядрото остава поддръжка на OABI или OABI_COMPAT.
  • Highmem (използва се за управление на паметта в области след 1 ГБ) — повечето ARM системи могат да работят без включване на highmem или могат да използват CONFIG_VMSPLIT_2GB за достъп до първите 2ГБ физическа памет. Работи се по организиране на достъп до 4 ГБ RAM на системи с LPAE (Cortex-A7/A15), след завършването на което поддръжката на Highmem може да бъде премахната.
  • Sparsemem — необходим за системи, за които е нужен highmem.

Предложени за премахване платформи:

  • RiscPC — най-старата от поддържаните в ядрото платформи. Не се поддържа в GCC, започвайки от клон 9.x поради премахването на поддръжката на ARMv3. Поддържащият продължава да тества работата на ядрото на тази платформа, но реални потребители, съдейки по всичко, вече няма, затова поддръжката може да бъде прекратена в случай на загуба на интерес от страна на поддържащия.
  • SA1100, Footbridge — остарели платформи, запазвани най-вече от носталгия. Почти всички файлове с описание на платформи за тези платформи бяха премахнати в ядрото 6.3, остава само поддръжката на устройства ipaq h3600, assabet, netwinder и ebsa285. Въпросът за премахването зависи от намеренията на поддържащия.
  • Gemini, Moxart — използват CPU на базата на ARMv4. Чиповете са произвеждани преди повече от 20 години, но поддръжката им не изисква допълнителни усилия, затова няма смисъл да бъдат премахвани преди отстраняването на платформата StrongARM.
  • Файловете за поддръжка на PXA — платформата, са в забравено състояние и извън употреба, ако интересът към тях не се върне, се планира да бъдат премахнати в началото на 2025 година.
  • OMAP1 — от една страна остава единствената платформа на базата на ARMv4T/ARMv5 без поддръжка на Device Tree и не се наблюдават никакви действия за преминаване към Device Tree, но от друга страна платформата има потребители.
  • Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1 — използват CPU на базата на ARMv4T. Работата по прехвърлянето на описанията на платките на Device Tree продължава, но смисълът да се поддържат остава само докато има поддръжка за ARMv5.
  • OMAP24xx — единствената платформа на базата на ARMv6 с активни потребители. Поддръжката зависи от запазването на поддръжката на CPU arm1136r0.
  • iMX31 — няма информация за наличието на активни потребители, но няма смисъл да бъде премахнат преди OMAP2.
  • S3C64xx (Cragganmore) — единствената платформа без поддръжка на Device Tree, изградена на базата на ARMv6K. Платформата продължава да се използва за тестване на звукови кодеци, затова премахването е отложено, докато тестовете не преминат на друга платка.
  • Orion5x, mv78xx0 — въпросът за премахването ще бъде разгледан в началото на следващата година.
  • iMX35, WM8750, AST2500, BCM2835 — добре поддържани и с активни потребители, не се планира премахването им за момента.
  • stm32f4/f7/h7 — микроконтролери без MMU, поддръжката в ядрото продължава и има активни потребители. Въпросът за премахването ще бъде разгледан през 2026 година.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster