Arnd Bergmann, Dezvoltatorul de kernel Linux din filiala arm-soc și managerul pachetelor de kernel la SUSE a lansat un propunere în care pune pe masă problema eliminării nucleului bazat pe GCC și creați instrumente de cod pentru a susține procesoarele ARM mai vechi, ABI-urile asociate acestora, seturile de instrucțiuni și capacitățile kernelului.
Arnd Bergmann, menționează că baza propunerii de încetare a sprijinului pentru procesoarele ARM vechi în kernel se datorează întreruperii în GCC, deoarece unele dintre procesoarele propuse pentru eliminare nu mai sunt acceptate în ultimele ramuri GCC, iar altele sunt planificate să fie eliminate în versiunile viitoare.
Menționați că, aplicând aceasta, Modernizarea și implementarea de noi funcții în compilator va fi facilitată. ȘIEliminarea suportului pentru o arhitectură în GCC va necesita eliminarea acesteia din nucleu dacă versiunea minimă GCC suportată de kernel este crescută (în prezent, este necesară cel puțin versiunea GCC 5.1 pentru compilarea nucleului).
Între arhitecturi, cipuri și extensii care sunt propuse a fi eliminate din nucleu, sunt menționate următoarele:
- ARMv3: Eliminat în GCC-9, deci va fi în cele din urmă eliminat din nucleu pe măsură ce versiunile minime ale compilatorului cresc.
- ARMv4: Folosit pentru procesoarele StrongARM și FA526, încă pe unele plăci. Chiar și cele mai noi cipuri au aproape 20 de ani. Ultima versiune a Debian care le-a suportat a fost Lenny (5.0). Șase familii de SoC cu nuclee ARMv4T (ARM720T, ARM920T și ARM922T) sunt încă acceptate. Deși sunt vechi, au mai mulți utilizatori și dezvoltatori decât ARMv4. Debian Stretch (9.0) a fost ultimul care le-a susținut.
- ARMv5: Aproximativ o treime dintre platformele acceptate folosesc ARMv5, dar majoritatea sunt aproape de sfârșitul suportului.
- ARMv6 devreme: include ARM1136r0p în NXP i.MX31 și OMAP24xx, în principal tableta Nokia N8xx. Necesită hack-uri speciale pentru a suporta nucleele cu SMP. Există un patch care schimbă ARMv6 de la a fi compatibil cu ARMv7 la a fi compatibil cu ARMv5, dar are nevoie de mai multă muncă.
- ARMv6K
ARMv7-M: Cortex-M3/M4/M7 sunt singurele nuclee suportate fără MMU, în prezent pe 5 platforme de microcontrolere. Ele ar putea fi eliminate în 2027, dar GCC va trebui să le susțină în continuare pe alte sisteme de operare. - iWMMXt: nu există utilizatori rămași cunoscuți pentru iWMMXt, iar suportul pentru procesoarele ARMv7 PJ4 a fost eliminat. Este acceptat numai pe Intel/Marvell PXA și MMP1.
- Nucleu ARMv5 big endian (BE32): Numai un singur SoC îl folosește, Intel IXP4xx. Debian a suportat-o în modul little-endian, dar driverele sunt stricate în LE.
- Nucleu ARMv7 big endian (BE8)
- Param_struct pre-ATAGS: Aceasta a fost amortizată în 2001, pentru a fi eliminată în „5 ani”, ceea ce s-a întâmplat deja.
- Fișiere cu plăci bazate pe ATAGS: După curățarea de mai sus, au rămas 29 de fișiere de placă pe 10 platforme SoC.
- Kernel-uri OABI: Practic, toată lumea folosește EABI astăzi, iar suportul OABI a fost eliminat ca țintă în GCC-4.8. Nucleul permite încă să fie construit ca OABI cu -mabi=apcs-gnu, folosit implicit în nucleele ARMv4/ARMv5.
- Modul de compatibilitate OABI: Acest lucru permite rularea binarelor OABI cu un nucleu EABI.
- NWFPE
- Highmem: Majoritatea mașinilor ARM pot funcționa fără suport highmem folosind CONFIG_VMSPLIT_2GB pentru a aborda până la 2 GB de memorie fizică. Mașinile mai mari au apărut cu Cortex-A15 în 2012, înlocuite rapid cu cipuri pe 64 de biți.
- Sparsemem: Există o discuție despre eliminarea suportului pentru sparsemem tradițional. Acest lucru se referă și la mașinile care au nevoie de highmem pentru a-și folosi toată memoria RAM
- RiscPC: Aceasta este cea mai veche platformă acceptată și va fi în cele din urmă eliminată, deoarece nu funcționează cu GCC-9 sau o versiune superioară din cauza eliminării ARMv3.
- SA1100, pasarela: alte platforme bazate pe StrongARM, relevante doar pentru nostalgie.
- Gemeni, Moxart: Ambele folosesc nucleul procesorului Faraday FA526, care, la fel ca StrongARM, implementează ARMv4 în loc de ARMv4T cu degetul mare. Cipurile au, de asemenea, peste 20 de ani, dar codul kernelului a fost actualizat și nu reprezintă o sarcină de întreținere.
- Fișierele plăcii PXA: Au rămas două fișiere cu plăci în codul PXA care nu au fost eliminate în urmă cu doi ani, în speranța că acest lucru va ajuta la conversia în DT
- OMAP1: singura platformă ARMv4T/ARMv5 fără suport DT, ceea ce o face o țintă pentru eliminare la un moment dat.
- Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1
- OMAP24xx
- iMX31, realview/integrator cu 1136r0
- S3C64xx (Cragganmore): Aceasta este singura placă ARMv6K fără suport pentru arborele dispozitivului, iar fișierul plăcii conține o cantitate similară de complexitate ca și toate celelalte fișiere de placă combinate. arch/arm/mach-s3c/Kconfig.s3c64xx îl listează pentru eliminare la începutul anului viitor, ceea ce ar permite o curățare mare a infrastructurii platformei și a driverelor.
- Fișiere Orion5x, mv78xx0, dove board: La fel ca PXA, acestea au fost lăsate în așteptarea progresului către conversia DT, dar nimic nu s-a întâmplat, cu excepția unor remedieri minore în mv78xx0. În schimb, Debian a eliminat binarul kernel-ului orion5x, invocând lipsa de utilizatori, așa că pare mult mai puțin probabil să fie finalizat.
- iMX35, WM8750, AST2500, BCM2835: Aceste patru sunt toate platforme ARMv6K și sunt bine acceptate, deși doar AST2500 și BCM2835 au o bază de utilizatori activă.
- Microcontrolere Stm32f4/f7/h7: Acestea sunt singurele cipuri Arm non-MMU care se află în dezvoltare continuă, deoarece ST continuă să sprijine clienții existenți.
În cele din urmă, trebuie menționat că acest plan este încă în stadiul RFC, adică publicat pentru discuții în comunitate. Dacă se aprobă, se propune începerea eliminării vechilor procesoare ARM din nucleul Linux 6.12, așteptată în decembrie. Primii candidați care vor fi eliminați sunt ARMv4 (fără a elimina ARMv4T), iWMMXt, BE32 și OABI.
Fuente: https://lkml.org