Plan för att avsluta stödet för gamla ARM-processorer i Linux-kÀrnan

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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster