Ze lanceren een voorstel om oude ARM-ondersteuning in Linux te elimineren

verwijder oude ARM-ondersteuning op Linux

Arnd Bergmann, Linux-kernelontwikkelaar van de arm-soc-tak en beheerder van kernelpakketten bij SUSE, heeft een voorstel waarin hij op tafel zet de kwestie van het verwijderen van de op GCC gebaseerde kernel en codetools maken ter ondersteuning van oudere ARM-CPU's, de bijbehorende ABI's, instructiesets en kernelmogelijkheden.

Arnd Bergmann vermeldt dat de basis van het voorstel van het stopzetten van de ondersteuning voor ARM-CPU's oud in de kernl is te wijten aan stopzetting in GCC, aangezien sommige van de CPU's die voor verwijdering zijn voorgesteld, niet langer worden ondersteund in de nieuwste GCC-takken, en andere naar verwachting in toekomstige releases zullen worden verwijderd.

Vermeld dat door dit toe te passen, De modernisering en implementatie van nieuwe functies in de compiler zullen worden vergemakkelijkt. ENHet verwijderen van ondersteuning voor een architectuur in GCC vereist verwijdering uit de kernel als de minimale GCC-versie die door de kernel wordt ondersteund wordt verhoogd (momenteel is ten minste GCC-versie 5.1 vereist om de kernel te compileren).

Tussen architecturen, chips en extensies waarvan wordt voorgesteld om uit de kernel te worden verwijderd, worden de volgende vermeld:

  • ARMv3: Verwijderd in GCC-9, dus het zal uiteindelijk uit de kernel worden verwijderd naarmate de minimale compilerversies toenemen.
  • ARMv4: Gebruikt voor StrongARM- en FA526-CPU's, nog steeds op sommige borden. Zelfs de nieuwste chips zijn bijna 20 jaar oud. De laatste versie van Debian die ze ondersteunde was Lenny (5.0). Zes SoC-families met ARMv4T-kernen (ARM720T, ARM920T en ARM922T) worden nog steeds ondersteund. Hoewel ze oud zijn, hebben ze meer gebruikers en ontwikkelaars dan ARMv4. Debian Stretch (9.0) was de laatste die ze ondersteunde.
  • ARMv5: Ongeveer een derde van de ondersteunde platforms gebruikt ARMv5, maar voor de meeste is de ondersteuning bijna afgelopen.
  • ARMv6 vroeg: omvat ARM1136r0p in NXP i.MX31 en OMAP24xx, voornamelijk de Nokia N8xx-tablet. Vereist speciale hacks om kernels met SMP te ondersteunen. Er is een patch die ARMv6 verandert van compatibel met ARMv7 naar compatibel met ARMv5, maar er is meer werk voor nodig.
  • ARMv6K
    ARMv7-M: Cortex-M3/M4/M7 zijn de enige kernen die zonder MMU worden ondersteund, momenteel op 5 microcontrollerplatforms. Ze kunnen in 2027 worden verwijderd, maar GCC zal ze nog steeds op andere besturingssystemen moeten ondersteunen.
  • iWMMXt: er zijn geen overgebleven gebruikers bekend voor iWMMXt en de ondersteuning voor ARMv7 PJ4 CPU's is verwijderd. Het wordt alleen ondersteund op Intel/Marvell PXA en MMP1.
  • ARMv5 big endian-kernel (BE32): Slechts één SoC gebruikt het, de Intel IXP4xx. Debian ondersteunde het in de Little Endian-modus, maar de stuurprogramma's zijn defect in LE.
  • ARMv7 big endian-kernel (BE8)
  • Param_struct vóór ATAGS: Dit werd in 2001 afgeschreven en binnen "5 jaar" geëlimineerd, wat al is gebeurd.
  • Op ATAGS gebaseerde kentekenbestanden: Na de bovenstaande opruiming zijn er nog 29 bordbestanden over op 10 SoC-platforms.
  • OABI-kernels: Vrijwel iedereen gebruikt EABI tegenwoordig, en OABI-ondersteuning werd als doel verwijderd in GCC-4.8. De kernel kan nog steeds worden gebouwd als OABI met -mabi=apcs-gnu, standaard gebruikt in ARMv4/ARMv5-kernels.
  • OABI-compatibiliteitsmodus: Hierdoor kunnen OABI-binaire bestanden met een EABI-kernel worden uitgevoerd.
  • NWFPE
  • Highmem: De meeste ARM-machines kunnen zonder highmem-ondersteuning werken met CONFIG_VMSPLIT_2GB om maximaal 2 GB fysiek geheugen te adresseren. Grotere machines verschenen in 15 met Cortex-A2012, snel vervangen door 64-bit chips.
  • Spaarzaam: Er is discussie over het wegnemen van de steun voor traditionele sparsemem. Dit heeft ook betrekking op machines die highmem nodig hebben om al hun RAM te gebruiken
  • RisicoPC: Dit is het oudste ondersteunde platform en zal uiteindelijk worden verwijderd, omdat het niet werkt met GCC-9 of hoger vanwege de verwijdering van ARMv3.
  • SA1100, Voetgangersbrug: andere op StrongARM gebaseerde platforms, alleen relevant voor nostalgie.
  • Tweeling, Moxart: Beiden gebruiken de Faraday FA526 CPU-kern, die net als StrongARM ARMv4 implementeert in plaats van ARMv4T met de duim. De chips zijn ook ruim 20 jaar oud, maar de kernelcode is bijgewerkt en vormt geen onderhoudslast.
  • PXA-bordbestanden: Er zijn nog twee plaatbestanden over in de PXA-code die twee jaar geleden niet zijn verwijderd, in de hoop dat dit de conversie naar DT zou helpen
  • OMAP1: het enige ARMv4T/ARMv5-platform zonder DT-ondersteuning, waardoor het op een gegeven moment een doelwit voor verwijdering zal worden.
  • Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1
  • OMAP24xx
  • iMX31, realview/integrator met 1136r0
  • S3C64xx (Cragganmore): Dit is het enige ARMv6K-bord zonder devicetree-ondersteuning, en het bordbestand bevat een vergelijkbare hoeveelheid complexiteit als alle andere bordbestanden samen. arch/arm/mach-s3c/Kconfig.s3c64xx vermeldt dat het begin volgend jaar moet worden verwijderd, wat een grote opschoning van de platforminfrastructuur en stuurprogramma's mogelijk zou maken.
  • Orion5x, mv78xx0, duivenbordbestanden: Net als PXA bleven deze hangen in afwachting van de voortgang richting de DT-conversie, maar er is niets gebeurd behalve enkele kleine reparaties in mv78xx0. Daarentegen heeft Debian de binaire kernel orion5x verwijderd vanwege een gebrek aan gebruikers, dus het lijkt veel minder waarschijnlijk dat het voltooid zal worden.
  • iMX35, WM8750, AST2500, BCM2835: Deze vier zijn allemaal ARMv6K-platforms en worden goed ondersteund, hoewel alleen AST2500 en BCM2835 een actieve gebruikersbasis hebben.
  • Stm32f4/f7/h7-microcontrollers: Dit zijn de enige niet-MMU Arm-chips die zich blijven ontwikkelen terwijl ST zijn bestaande klanten blijft ondersteunen.

Ten slotte moet dat worden vermeld dit plan bevindt zich nog in de RFC-fase, dat wil zeggen gepubliceerd voor discussie in de gemeenschap. Indien goedgekeurd, wordt voorgesteld om in december te beginnen met het verwijderen van oude ARM-processors in de Linux-kernel 6.12. De eerste kandidaten die worden verwijderd zijn ARMv4 (zonder ARMv4T te verwijderen), iWMMXt, BE32 en OABI.

bron: https://lkml.org