Arnd Bergmann, ansvarig för kÀrnpaketen i SUSE, publicerade pÄ mailinglistan för Linux-kÀrnutvecklare en plan för att avlÀgsna kod för stöd av gamla ARM CPU:er och relaterade ABI:er, instruktionssatser och kÀrnfunktioner frÄn kÀrnan och byggverktygen baserade pÄ GCC. Planen Àr för nÀrvarande i RFC-stadiet, vilket innebÀr att den Àr öppen för diskussion inom gemenskapen. Om planen godkÀnns föreslÄs avlÀgsnandet av gamla ARM-processorer börja i Linux-kÀrnan 6.12, vars release förvÀntas i december. De första kandidaterna för avlÀgsnande Àr ARMv4 (utan avlÀgsnande av ARMv4T), iWMMXt, BE32 och OABI.
Att avsluta stödet för gamla ARM CPU:er i kÀrnan sammanfaller med att stödet för dem upphör i GCC - en del av de CPU:er som föreslÄs för avlÀgsnande stöds redan inte i de senaste grenarna av GCC, och en del planerar att tas bort i framtida utgÄvor, vilket kommer att förenkla modernisering och implementering av nya funktioner i kompilatorn. AvlÀgsnandet av arkitekturstödet i GCC kommer att krÀva att stödet ocksÄ tas bort frÄn kÀrnan om den minimalt stödda versionen av GCC som kÀrnan krÀver höjs (för nÀrvarande krÀvs minst version 5.1 av GCC för att bygga kÀrnan).
Arkitekturer, chip och tillÀgg som föreslÄs för avlÀgsnande frÄn kÀrnan:
- ARMv3 - stödet upphörde redan i GCC 9.
- ARMv4 - anvÀnds för fortfarande förekommande processorer som StrongARM och FA526, dÀr de senaste av dessa chip slÀpptes för cirka 20 Är sedan. Stödet för ARMv4 upphörde i Debian 5.0. Det föreslÄs att man initialt ska avsluta stödet för ARMv4 i GCC, och efter nÄgra Är Àven i kÀrnan.
- ARMv4T - det finns 6 SoC-familjer med kÀrnor som ARM720T, ARM920T och ARM922T, som Àr mer utbredda Àn SoC baserade pÄ ARMv4. Stödet för ARMv4T upphörde i Debian 9.0. I kÀrnan planerar man att avsluta stödet för ARMv4T tidigast vid avskaffandet av ARMv5.
- ARMv5 - anvÀnds pÄ cirka 1/3 av alla plattformar som stöds i kÀrnan, men de flesta av dessa plattformar nÀrmar sig slutet av livscykeln. Debian fortsÀtter att stödja ARMv5, men pÄ grund av bristen pÄ FPU och atomÀra operationer blir det allt svÄrare att upprÀtthÄlla stödet och det Àr troligt att Debian-porten för ARMv5 snart kommer att överföras till en oofficiell status.
- Tidiga generationer av ARMv6 - anvÀnds i sÄdana SoC som ARM1136r0p (NXP i.MX31) och OMAP24xx (Nokia N8xx), men deras stöd krÀver hacks för att fungera i kÀrnor med SMP.
- ARMv6K â anvĂ€nds i ARM1176 (Raspberry Pi 1, AST2500) och ARM1136r1. Det finns inga hinder i kĂ€rnan för att avsluta stöd, men det uppstĂ„r svĂ„righeter i distributioner pĂ„ grund av avvikelse frĂ„n den typiska uppsĂ€ttningen armv7-a+vfpv3-d16.
- ARMv7-M â anvĂ€nds i mikrokontroller baserade pĂ„ Cortex-M3/M4/M7, som förblir de senaste stödda chipen i kĂ€rnan utan minneshanteringsenhet (MMU). Arbetet med kĂ€rnor för system utan MMU avslutades 2017, efter att ha övergĂ„tt till utveckling av RTOS som Zephyr för sĂ„dana chip. Stöd för ARMv7-M föreslĂ„s tas bort 2027, tio Ă„r efter att utvecklingen upphört, trots fortsatt stöd i GCC.
- iWMMXt â stöd för CPU ARMv7 PJ4 (MMP2, Berlin) har redan avslutats i kĂ€rnan, och det finns inga kvarstĂ„ende system som anvĂ€nder denna instruktionsuppsĂ€ttning. Stödet för iWMMXt har redan avslutats i Clang och föreslĂ„s tas bort frĂ„n GCC.
- BE32 (big endian ARMv5) â anvĂ€nds endast i en SoC Intel IXP4xx. I Ă€ldre versioner av Debian stöddes enbart little-endian-lĂ€get, men det finns olösta problem i drivrutinerna. Det föreslĂ„s att stödet för BE32 tas bort frĂ„n GCC och kĂ€rnan, eftersom ingen har försökt Ă„tgĂ€rda problemen i drivrutinerna under flera Ă„r.
- BE8 (big-endian ARMv7) â mĂ„nga drivrutiner har problem, testning har avslutats och det finns ingen information om kvarstĂ„ende enheter. BE8-lĂ€get kan vara av intresse för testning av anvĂ€ndarrumskomponenter pĂ„ big-endian-system, sĂ„ stöd för BE8 planeras att bevaras i kĂ€rnan och GCC under minst nĂ„gra Ă„r tills det börjar orsaka problem.
Föreslagna möjligheter för borttagning frÄn Linux-kÀrnan:
- Strukturen param_struct, som anvĂ€nds före ATAGS (ARM Tag-Area) â förklarades förĂ„ldrad redan 2001, men anvĂ€nds fortfarande i koden för plattformar som RiscPC och Footbridge.
- Filer med parametrar baserade pĂ„ strukturen ATAGS (anvĂ€ndes för att överföra konfigurationsinformation innan Device Tree) â det finns fortfarande 29 filer kvar i kĂ€rnan som Ă€r kopplade till 10 SoC-plattformar som anvĂ€nder ATAGS.
- OABI (Old ABI, gammal ABI för ARM-arkitektur) anvÀnds numera nÀstan alltid EABI (Embedded ABI). OABI orsakar mÄnga fel eftersom drivrutinsutvecklare har slutat ta hÀnsyn till vissa relaterade egenskaper. Stödet för OABI vid byggnation av komponenter för anvÀndarrummet har avslutats i GCC 4.8, men för kÀrnan har flaggan "-mabi=apcs-gnu" lÀmnats kvar. Det rekommenderas att behÄlla OABI tills vidare, men göra det mer komplicerat att aktivera av misstag.
- KompatibilitetslÀge för OABI (OABI_COMPAT) möjliggör körning av körbara filer som byggts för OABI, med en kÀrna som anvÀnder EABI. Det uppstÄr vissa problem i drivrutiner pÄ grund av inkompatibilitet med ioctl, men underhÄllsarbetet för detta lÀge Àr avsevÀrt mindre krÀvande Àn för kÀrnor med OABI. För att bevara stödet för StrongARM Àr det rimligt att behÄlla stöd för OABI eller OABI_COMPAT.
- NWFPE (No Floating Point Emulator, emulator för flyttal) â patchar för att ta bort detta föreslogs redan för 11 Ă„r sedan, men NWFPE krĂ€vs för att vissa anvĂ€ndarkomponenter som Ă€r byggda för OABI ska fungera, dĂ€rför rekommenderas det att stödet för NWFPE bibehĂ„lls sĂ„ lĂ€nge kĂ€rnan fortsatt stöder OABI eller OABI_COMPAT.
- Highmem (anvĂ€nds för minneshantering i omrĂ„den över 1 GB) â de flesta ARM-system kan fungera utan att aktivera highmem eller kan anvĂ€nda CONFIG_VMSPLIT_2GB för att fĂ„ tillgĂ„ng till de första 2 GB fysisk minne. Arbete pĂ„gĂ„r för att organisera Ă„tkomst till 4 GB RAM pĂ„ system med LPAE (Cortex-A7/A15), och efter slutförandet av detta kan stöd för Highmem tas bort.
- Sparsemem â krĂ€vs för system som behöver highmem.
Föreslagna plattformar för borttagning:
- RiscPC â den Ă€ldsta av de plattformar som stöds i kĂ€rnan. Stöds inte i GCC frĂ„n och med version 9.x pĂ„ grund av borttagning av stöd för ARMv3. UnderhĂ„llaren fortsĂ€tter att testa kĂ€rnans funktion pĂ„ denna plattform, men verkliga anvĂ€ndare verkar vara helt borta, dĂ€rför kan stödet komma att avslutas om intresset frĂ„n underhĂ„llaren försvinner.
- SA1100, Footbridge â förĂ„ldrade plattformar som endast bevaras av nostalgiska skĂ€l. NĂ€stan alla filer som beskriver kretsar för dessa plattformar har tagits bort i kĂ€rnan 6.3, och endast stödet för enheterna ipaq h3600, assabet, netwinder och ebsa285 Ă„terstĂ„r. Beslutet att ta bort stödet beror pĂ„ underhĂ„larens avsikter.
- Gemini, MoxartâanvĂ€nder CPU baserade pĂ„ ARMv4. Chipen tillverkades för mer Ă€n 20 Ă„r sedan, men deras stöd krĂ€ver inga ytterligare insatser i underhĂ„llet, sĂ„ det finns ingen anledning att ta bort dem innan StrongARM-plattformen tas bort.
- Filer för stöd till PXAâplattformen Ă€r i övergivet skick och har blivit utom bruk, om intresset för dem inte Ă„terkommer, planerar man att ta bort dem i början av 2025.
- OMAP1âĂ„ ena sidan förblir den den enda plattformen baserad pĂ„ ARMv4T/ARMv5 utan stöd för Device Tree och inga tecken pĂ„ övergĂ„ng till Device Tree observeras, men Ă„ andra sidan har plattformen fortfarande anvĂ€ndare.
- Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1âanvĂ€nder CPU baserade pĂ„ ARMv4T. Arbete pĂ„gĂ„r för att översĂ€tta plattbeskrivningar till Device Tree, men det finns fortfarande mening att stödja dem sĂ„ lĂ€nge stöd för ARMv5 finns.
- OMAP24xxâden enda plattformen baserad pĂ„ ARMv6 som har aktiva anvĂ€ndare. Bevarandet av stödet beror pĂ„ att stödet för CPU arm1136r0 kvarstĂ„r.
- iMX31âdet saknas information om aktiva anvĂ€ndare, men det finns ingen mening att ta bort den tidigare Ă€n OMAP2.
- S3C64xx (Cragganmore)âden enda plattformen utan stöd för Device Tree, byggd pĂ„ ARMv6K. Plattformen anvĂ€nds fortfarande för testning av ljudkodare, sĂ„ borttagning Ă€r uppskjuten tills testningen överförs till en annan plattform.
- Orion5x, mv78xx0âfrĂ„gan om borttagning planeras att diskuteras i början av nĂ€sta Ă„r.
- iMX35, WM8750, AST2500, BCM2835âĂ€r vĂ€l stödda och har aktiva anvĂ€ndare, borttagning planeras inte för tillfĂ€llet.
- stm32f4/f7/h7âmikrokontroller utan MMU, underhĂ„llet i kĂ€rnan fortsĂ€tter och det finns aktiva anvĂ€ndare. FrĂ„gan om borttagning planeras att diskuteras 2026.
KĂ€lla: opennet.ru
