Načrt prenehanja podpore za stare procesorje ARM v jedru Linux

Arnd Bergmann, responsable de los paquetes del núcleo en SUSE, publicó en la lista de correo de desarrolladores del núcleo de Linux un plan para eliminar del núcleo y las herramientas de construcción basadas en GCC el código de soporte para las antiguas CPU ARM y sus ABI, conjuntos de instrucciones y capacidades relacionadas. El plan se encuentra actualmente en la etapa de RFC, es decir, está expuesto para discusión comunitaria. En caso de ser aprobado, se propone comenzar la eliminación de las antiguas CPU ARM en el núcleo Linux 6.12, cuya versión se espera para diciembre. Los primeros candidatos a eliminar son ARMv4 (sin eliminar ARMv4T), iWMMXt, BE32 y OABI.

La finalización del soporte para las antiguas CPU ARM en el núcleo se cruza con la finalización de su soporte en GCC; parte de las CPU propuestas para eliminación ya no están soportadas en las versiones más recientes de GCC, y algunas se planea eliminar en futuras versiones, lo que facilitará la modernización y la implementación de nuevas funcionalidades en el compilador. La eliminación del soporte de la arquitectura en GCC requerirá su eliminación también del núcleo en caso de que se incremente la versión mínima soportada por el núcleo de GCC (actualmente se requiere al menos la versión 5.1 de GCC para compilar el núcleo).

Las arquitecturas, chips y extensiones que se proponen eliminar del núcleo:

  • ARMv3 — el soporte ya se ha interrumpido en GCC 9.
  • ARMv4 — se utiliza para procesadores StrongARM y FA526 que aún están en uso, siendo que los más recientes de estos chips fueron lanzados hace aproximadamente 20 años. El soporte para ARMv4 se ha detenido en Debian 5.0. Se propone primero interrumpir el soporte de ARMv4 en GCC, y en unos años también en el núcleo.
  • ARMv4T — hay 6 familias de SoC con núcleos ARM720T, ARM920T y ARM922T que son más comunes que los SoC basados en ARMv4. El soporte para ARMv4T se ha detenido en Debian 9.0. En el núcleo se planea interrumpir el soporte para ARMv4T, al menos, no antes de haber interrumpido el soporte para ARMv5.
  • ARMv5 — se utiliza en aproximadamente 1/3 de todas las plataformas soportadas en el núcleo, pero la mayoría de estas plataformas están cerca del final de su ciclo de vida. Debian continúa soportando ARMv5, pero debido a la falta de FPU y operaciones atómicas, mantener el soporte se vuelve cada vez más difícil y, probablemente, pronto el puerto de Debian para ARMv5 será clasificado como no oficial.
  • Las generaciones iniciales de ARMv6 — se utilizan en SoC como ARM1136r0p (NXP i.MX31) y OMAP24xx (Nokia N8xx), pero su soporte requiere hacks para funcionar en núcleos con SMP.
  • ARMv6K — se uporablja v ARM1176 (Raspberry Pi 1, AST2500) in ARM1136r1. V jedru ni ovir za prenehanje podpore, vendar se v distribucijah pojavljajo težave zaradi neskladnosti s tipičnim naborom armv7-a+vfpv3-d16.
  • ARMv7-M — se uporablja v mikrokontrolerjih na osnovi Cortex-M3/M4/M7, ki ostajajo zadnji podprti čipi v jedru brez enote za upravljanje pomnilnika (MMU). Delo na jeder za sisteme brez MMU se je končalo leta 2017, po prehodu na razvoj RTOS, kot je Zephyr. Predlaga se odstranitev podpore ARMv7-M leta 2027, deset let po prenehanju razvoja, kljub nadaljevanju podpore v GCC.
  • iWMMXt — v jedru je že prenehana podpora za CPU ARMv7 PJ4 (MMP2, Berlin), zato niso ostali delujoči sistemi, ki bi uporabljali ta nabor ukazov. Podpora za iWMMXt je že prenehana v Clang in predlagana za odstranitev iz GCC.
  • BE32 (big endian ARMv5) — se uporablja le v enem SoC Intel IXP4xx. V starejših različicah Debiana je bil podprt le način little-endian, vendar v gonilnikih ostajajo nerešene težave. Predlaga se odstranitev podpore BE32 iz GCC in jedra, saj v gonilnikih v več letih nihče ni poskušal odpraviti težav.
  • BE8 (big-endian ARMv7) — v mnogih gonilnikih so težave, testiranje delovanja je prenehalo in ni podatkov o obstoječih napravah. Način BE8 bi lahko predstavljal interes za testiranje komponent prostorov uporabnikov na sistemih big-endian, zato je načrtovana ohranjanje podpore BE8 v jedru in GCC vsaj še nekaj let, preden bo začel povzročati težave.

Predlagane za odstranitev možnosti jedra Linux:

  • Struktura param_struct, uporabljena do ATAGS (ARM Tag-Area) — je bila razglašena za zastarelo že leta 2001, vendar se še vedno uporablja v kodi za platforme RiscPC in Footbridge.
  • Datoteke s parametri na osnovi strukture ATAGS (uporabljene za prenos informacij o konfiguraciji do Device Tree) — v jedru ostaja 29 datotek, povezanih z 10 platformami SoC, ki uporabljajo ATAGS.
  • OABI (Stari ABI za arhitekturu ARM) se sada gotovo svuda koristi kao EABI (Embedded ABI). OABI je uzrok mnogim greškama, jer su programeri drajvera prestali uzimati u obzir neke povezane karakteristike. Podrška za OABI prilikom izrade komponenti za korisnički prostor prekinuta je u GCC verziji 4.8, ali je za jezgro ostavljen flag "-mabi=apcs-gnu". Predlaže se da se OABI zadrži, ali sa otežanim uključivanjem zbog propusta.
  • Režim kompatibilnosti sa OABI (OABI_COMPAT) omogućava izvršavanje izvršnih datoteka napravljених za OABI koristeći jezgro sa EABI. Pojavljuju se posebni problemi u drajverima zbog nesvakidašnje ioctl kompatibilnosti, ali je složenost održavanja ovog režima znatno manja nego održavanje jezgra sa OABI. Radi očuvanja podrške za StrongARM, razumno je zadržati podršku za OABI ili OABI_COMPAT.
  • NWFPE (No Floating Point Emulator, emulator za izvođenje operacija s pokretnim tačkama) — zakrpe za njegovo uklanjanje predložene su još pre 11 godina, ali je NWFPE potreban za rad nekih komponenti korisničkog prostora, izrađenih za OABI, stoga se preporučuje očuvanje podrške za NWFPE sve dok u jezgru ostaje podrška za OABI ili OABI_COMPAT.
  • Highmem (koristi se za upravljanje memorijom u oblastima nakon 1 GB) — većina ARM sistema može raditi bez uključivanja highmem ili može koristiti CONFIG_VMSPLIT_2GB za pristup prva 2GB fizičke memorije. U toku su radovi na organizaciji pristupa 4 GB RAM-a na sistemima sa LPAE (Cortex-A7/A15), nakon čega se podrška za Highmem može ukloniti.
  • Sparsemem — potrebna za sisteme kojima je potreban highmem.

Predložene platforme za uklanjanje:

  • RiscPC — najstarija od podržanih platformi u jezgru. Ne podržava se u GCC od grane 9.x zbog ukidanja podrške za ARMv3. Održavač nastavlja da testira rad jezgra na ovoj platformi, ali čini se da stvarnih korisnika više nema, pa se podrška može prekinuti u slučaju gubitka interesa održavača.
  • SA1100, Footbridge — zastarele platforme, koje se čuvaju iz nostalgije. Gotovo svi fajlovi sa opisom ploča za ove platforme uklonjeni su u jezgru 6.3, ostaje samo podrška za uređaje ipaq h3600, assabet, netwinder i ebsa285. Pitanje uklanjanja zavisi od namera održavača.
  • Gemini, Moxart — uporabljajo CPU na osnovi ARMv4. Čipi so bili izdani pred več kot 20 leti, vendar njihova podpora ne zahteva dodatnega vzdrževanja, zato ni smiselno, da jih odstranimo, preden se platforma StrongARM umakne.
  • Datoteke za podporo platforme PXA so zapostavljene in so postale zastarele; če se ne bo vrnilo zanimanje zanje, jih nameravamo odstraniti na začetku leta 2025.
  • OMAP1 — z ene strani ostaja edina platforma na osnovi ARMv4T/ARMv5 brez podpore Device Tree in ni opaziti nobenih premikov k prehodu na Device Tree, toda z druge strani še vedno obstajajo uporabniki te platforme.
  • Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1 — uporabljajo CPU na osnovi ARMv4T. Poteka delo na prehodu opisov plošč na Device Tree, vendar je smiselno, da jih podpiramo le, dokler ohranjamo podporo za ARMv5.
  • OMAP24xx — edina platforma na osnovi ARMv6, ki ima aktivne uporabnike. Ohranitev podpore je odvisna od ohranitve podpore CPU arm1136r0.
  • iMX31 — ni podatkov o aktivnih uporabnikih, vendar ni smiselno odstraniti je prej kot OMAP2.
  • S3C64xx (Cragganmore) — edina platforma brez podpore Device Tree, zgrajena na osnovi ARMv6K. Platforma se še vedno uporablja za testiranje avdio kodekov, zato je odstranitev odložena, dokler ne bo testiranje preneseno na drugo ploščo.
  • Orion5x, mv78xx0 — vprašanje odstranitve nameravajo obravnavati na začetku naslednjega leta.
  • iMX35, WM8750, AST2500, BCM2835 — dobro so podprti in imajo aktivne uporabnike; zaenkrat ni načrtov za odstranitev.
  • stm32f4/f7/h7 — mikrokontrolerji brez MMU, vzdrževanje v jedru poteka, aktivni uporabniki pa so prisotni. Vprašanje odstranitve nameravajo obravnavati leta 2026.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster