Arnd Bergmann, aki a SUSE kernel csomagokért felelős, közzétette a Linux kernel fejlesztői levelezőlistáján azokat a terveket, amelyek célja, hogy a kernel és a GCC alapú build eszközök megszabaduljanak a régi ARM CPU-k és a hozzájuk kapcsolódó ABI-k, utasításkészletek és a kernel funkciók támogatásának kódjától. A terv jelenleg RFC szakaszban van, azaz a közösség számára vitára bocsátva. A terv jóváhagyása esetén a régi ARM processzorok eltávolítását a Linux kernel 6.12 verziójában kezdik meg, amelynek kiadása decemberre várható. Az első eltávolításra javasolt jelöltek: ARMv4 (ARMv4T eltávolítása nélkül), iWMMXt, BE32 és OABI.
A régi ARM CPU-k támogatásának megszüntetése a kernelben összetalálkozik azok GCC-beli támogatásának leállításával – a már eltávolításra javasolt CPU-k közül néhány már nem támogatott a friss GCC ágakban, míg egyeseket a jövőbeli kiadásokban terveznek eltávolítani, ami leegyszerűsíti a fordító korszerűsítését és új funkciók bevezetését. Az architektúra támogatásának eltávolítása a GCC-ből megköveteli annak eltüntetését a kernelből is, ha a kernel által támogatott minimális GCC verziót emelik (jelenleg a kernel építéséhez legalább 5.1-es GCC verzió szükséges).
Az architektúrák, chipek és kiterjesztések, amelyeket a kernelből el kívánnak távolítani:
- ARMv3 – a támogatása már megszűnt a GCC 9-ben.
- ARMv4 – még mindig használt StrongARM és FA526 processzorokhoz, amelyek közül a legújabb chipek körülbelül 20 éve jelentek meg. Az ARMv4 támogatását a Debian 5.0-ban megszüntették. Először az ARMv4 támogatásának leállítását javasolják a GCC-ben, majd néhány év múlva a kernelben is.
- ARMv4T – 6 SoC család használja, amelyek ARM720T, ARM920T és ARM922T magokkal rendelkeznek, és ezek elterjedtebbek, mint az ARMv4 alapú SoC-k. Az ARMv4T támogatását a Debian 9.0-ban szüntették meg. A kernelben az ARMv4T támogatását nem korábban megszüntetik, mint az ARMv5 támogatásának befejezésekor.
- ARMv5 – körülbelül 1/3-át képviseli a kernelben támogatott platformoknak, de a legtöbb ilyen platform a életciklusának végéhez közelít. A Debian továbbra is támogatja az ARMv5-öt, de a FPU és atomikus műveletek hiánya miatt a támogatás fenntartása egyre nehezebb, és valószínűleg a Debian ARMv5-ös portját hamarosan nem hivatalos státuszba helyezik.
- Kezdeti ARMv6 generációk – ilyen SoC-kban használják, mint az ARM1136r0p (NXP i.MX31) és OMAP24xx (Nokia N8xx), de támogatásuk hackeket igényel az SMP kernelében való működéshez.
- ARMv6K — az ARM1176 (Raspberry Pi 1, AST2500) és ARM1136r1 modellekben található meg. A kernelben nincsenek akadályok a támogatás abbahagyására, de a disztribúciókban problémák merülnek fel a típussal, amely megfelel az armv7-a+vfpv3-d16-nak.
- ARMv7-M — a Cortex-M3/M4/M7 architektúrára alapozott mikrovezérlőkben használják, amelyek az utolsó támogatott chipek a kernelben, memória kezelés nélküli blokkal (MMU). A MMU nélküli rendszerekre vonatkozó kernelfejlesztéseket 2017-ben leállították, miután a fejlesztések az RTOS, például a Zephyr felé irányultak. Az ARMv7-M támogatását 2027-re tervezik eltávolítani, 10 évvel a fejlesztés leállítása után, annak ellenére, hogy a GCC továbbra is támogatja.
- iWMMXt — a kernelben már megszűnt a ARMv7 PJ4 (MMP2, Berlin) processzor támogatása, és így már nincsenek elterjedt rendszerek, amelyek ezt az utasításkészletet használnák. Az iWMMXt támogatása már megszűnt a Clangban, és javasolták annak eltávolítását a GCC-ből.
- BE32 (nagy végű ARMv5) — csak egy Intel IXP4xx SoC-ban használják. A régi Debian verziókban csak a kis végű mód volt támogatott, de a meghajtókban megoldatlan problémák maradtak. Az BE32 támogatásának eltávolítását javasolják a GCC-ből és a kernelfejlesztésből, mivel a meghajtókban senki sem próbálta megoldani a problémákat az elmúlt években.
- BE8 (nagy végű ARMv7) — számos meghajtóban problémák lépnek fel, a tesztelés leállt, és nincs információ a fennmaradó elterjedt eszközökről. A BE8 mód érdekes lehet a felhasználói tér komponenseinek tesztelésére nagy végű rendszereken, ezért a BE8 támogatását legalább néhány évig meg kívánják tartani a kernelben és a GCC-ben, mielőtt problémákhoz vezetne.
A Linux kernelből javasolt eltávolításra váró lehetőségek:
- A param_struct struktúra, amelyet az ATAGS (ARM Tag-Area) előtt használnak — 2001 óta elavultnak nyilvánították, de még mindig használják a RiscPC és Footbridge platformok kódjában.
- Az ATAGS struktúrára alapozott paraméterfájlok (az eszközfa előtti konfigurációs információk átadására használták) — a kernelben 29 fájl maradt, amely 10 SoC platformhoz kapcsolódik, amelyek az ATAGS-ot használják.
- OABI (Régi ABI az ARM architektúrához) - szinte mindenhol most már EABI-t (Embedded ABI) használnak. Az OABI számos hiba forrása, mivel a driverek fejlesztői elfeledték figyelembe venni a hozzá kapcsolódó jellemzőket. Az OABI támogatása a felhasználói térben történő komponensgyártás során a GCC 4.8-ban megszűnt, de a kernel számára megmaradt a "-mabi=apcs-gnu" zászló. Javasolt az OABI fenntartása, de bonyolultabbá tenni a véletlen bekapcsolását.
- Az OABI kompatibilitási mód (OABI_COMPAT) - lehetővé teszi az OABI-ra készült végrehajtható fájlok futtatását EABI-t használó kernellel. Egyedi problémák merülnek fel a driverekben az ioctl inkompatibilitása miatt, de a fenntartás nehézségei ennek a módnak sokkal kevesebb, mint az OABI-t használó kernereké. A StrongARM támogatásának megőrzéséhez ésszerű megoldás lenne az OABI vagy OABI_COMPAT támogatásának fenntartása.
- NWFPE (Nem lebegőpontos emulátor) - a törlésére vonatkozó javításokat már 11 évvel ezelőtt javasolták, de az NWFPE szükséges bizonyos felhasználói tér komponensek OABI-ra való összeállításához, ezért az NWFPE támogatásának fenntartása ajánlott mindaddig, amíg a kernel támogatja az OABI-t vagy OABI_COMPAT-ot.
- Highmem (a memóriakezeléshez használják 1 GB feletti területeken) - a legtöbb ARM-rendszer működhet highmem engedélyezése nélkül, vagy használhat CONFIG_VMSPLIT_2GB-t az első 2 GB fizikai memória eléréséhez. Jelenleg egy 4 GB-os RAM hozzáférhetőségének elősegítésén dolgoznak LPAE (Cortex-A7/A15) rendszerek esetében, ezután a Highmem támogatás megszüntethető.
- Sparsemem - szükséges olyan rendszerek számára, amelyeknek highmem szükséges.
A törlésre javasolt platformok:
- RiscPC - a kernelben támogatott legrégebbi platform. A GCC 9.x ágtól kezdve nem támogatott az ARMv3 támogatásának eltávolítása miatt. A kísérő továbbra is teszteli a kernel működését ezen a platformon, de láthatóan már nincs valós felhasználó, ezért a támogatás megszűnhet, ha a kísérő érdektelenné válik.
- SA1100, Footbridge - elavult platformok, amelyeket csak nosztalgia miatt tartanak fenn. Szinte az összes, ezekhez a platformokhoz készült leíró fájl eltávolításra került a kernel 6.3-ban, csak az ipaq h3600, assabet, netwinder és ebsa285 eszközök támogatása maradt. A törlés kérdése a kísérő szándékaitól függ.
- A Gemini, Moxart ARMv4 alapú CPU-t használnak. A chipeket több mint 20 éve gyártják, de a támogatásuk nem igényel további fenntartási erőfeszítéseket, ezért nincs értelme eltávolítani őket, amíg a StrongARM platformot el nem távolítják.
- A PXA platform támogatásához szükséges fájlok elavultak és már nem használják őket; ha nem tér vissza az iránti érdeklődés, a tervek szerint 2025 elején eltávolítják őket.
- Az OMAP1 egyedüliként maradt ARMv4T/ARMv5 alapú platform Device Tree támogatás nélkül, és nem látható átmenet a Device Tree-re. Ugyanakkor a platformnak még vannak felhasználói.
- Az Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1 ARMv4T alapú CPU-t használnak. Folyamatban van a leírások Device Tree-re való átkonvertálása, de a támogatás fenntartásának értelme csak addig marad, amíg az ARMv5 támogatás érvényben van.
- Az OMAP24xx az egyetlen ARMv6 alapú platform, amelynek aktív felhasználói vannak. A támogatás fenntartása az arm1136r0 CPU támogatásának fenntartásától függ.
- Az iMX31-ről nincs információ aktív felhasználókról, de nincs értelme korábban eltávolítani az OMAP2-t.
- Az S3C64xx (Cragganmore) az egyetlen Device Tree támogatás nélküli platform, amely ARMv6K alapú. A platformot továbbra is használják hangkódolók tesztelésére, ezért az eltávolítását elhalasztják, amíg a tesztelést más lapra nem migrálják.
- Orion5x, mv78xx0 esetében a tervek szerint jövő év elején fontolják meg az eltávolítást.
- Az iMX35, WM8750, AST2500, BCM2835 platformok jól támogatottak és aktív felhasználóik vannak, eltávolításukat jelenleg nem tervezik.
- A stm32f4/f7/h7 mikrokontroller MMU nélkül, a mag támogatása folytatódik, és aktív felhasználók vannak. Az eltávolítását 2026-ban tervezik megfontolni.
Forrás: opennet.ru
