Plan voor beƫindiging van ondersteuning voor oude ARM-processoren in de Linux-kernel.

Arnd Bergmann, verantwoordelijk voor de kernelpakketten bij SUSE, heeft op de mailinglijst voor Linux-kernelontwikkelaars een plan gepubliceerd om de kernel en het op GCC gebaseerde build-gereedschap te ontdoen van code ter ondersteuning van oude ARM CPU's en gerelateerde ABI's, instructiesets en functionaliteiten van de kernel. Het plan bevindt zich momenteel in de RFC-fase, wat betekent dat het ter bespreking aan de gemeenschap wordt voorgelegd. Indien goedgekeurd, wordt voorgesteld om de ondersteuning voor oude ARM-processors te verwijderen in Linux kernel 6.12, waarvan de release in december wordt verwacht. De eerste kandidaten voor verwijdering zijn ARMv4 (zonder ARMv4T), iWMMXt, BE32 en OABI.

De beĆ«indiging van de ondersteuning voor oude ARM CPU's in de kernel valt samen met de beĆ«indiging van hun ondersteuning in GCC – enkele van de CPU's die voor verwijdering zijn voorgesteld, worden al niet meer ondersteund in de recente takken van GCC, terwijl het plan is om sommige in toekomstige versies te verwijderen, wat de modernisering en implementatie van nieuwe mogelijkheden in de compiler zal vergemakkelijken. Het verwijderen van de ondersteuning voor de architectuur in GCC vereist ook het verwijderen van de ondersteuning daarvan uit de kernel in het geval de minimaal ondersteunde versie van GCC die door de kernel wordt ondersteund, wordt verhoogd (momenteel is versie GCC 5.1 minimaal vereist voor het bouwen van de kernel).

Architecturen, chips en extensies die uit de kernel worden voorgesteld om te verwijderen:

  • ARMv3 – ondersteuning is al beĆ«indigd in GCC 9.
  • ARMv4 – wordt gebruikt voor de nog steeds in gebruik zijnde StrongARM en FA526 processors, waarvan de nieuwste ongeveer 20 jaar geleden zijn uitgebracht. De ondersteuning voor ARMv4 is beĆ«indigd in Debian 5.0. Voorstel is om eerst de ondersteuning voor ARMv4 in GCC te beĆ«indigen, en enkele jaren later in de kernel.
  • ARMv4T – zes SoC-families met de ARM720T, ARM920T en ARM922T cores komen vaak voor, die meer verspreid zijn dan SoC op basis van ARMv4. De ondersteuning voor ARMv4T is beĆ«indigd in Debian 9.0. In de kernel is het de bedoeling de ondersteuning voor ARMv4T te beĆ«indigen, niet eerder dan de beĆ«indiging van de ondersteuning voor ARMv5.
  • ARMv5 – wordt gebruikt op ongeveer 1/3 van alle platforms die in de kernel worden ondersteund, maar de meeste van deze platforms zijn bijna aan het einde van hun levenscyclus. Debian blijft ARMv5 ondersteunen, maar vanwege het ontbreken van een FPU en atomische operaties wordt het steeds moeilijker om ondersteuning te behouden en waarschijnlijk zal de Debian-port voor ARMv5 binnenkort als onofficieel worden geclassificeerd.
  • Eerste generaties ARMv6 – worden gebruikt in SoC's zoals ARM1136r0p (NXP i.MX31) en OMAP24xx (Nokia N8xx), maar hun ondersteuning vereist hacks om te functioneren in SMP-kernels.
  • ARMv6K — gebruikt in ARM1176 (Raspberry Pi 1, AST2500) en ARM1136r1. Er zijn geen belemmeringen in de kernel voor stopzetting van ondersteuning, maar er zijn complicaties in de distributies vanwege inconsistente afstemming op de armv7-a+vfpv3-d16 set.
  • ARMv7-M — gebruikt in microcontrollers op basis van Cortex-M3/M4/M7, die de laatst ondersteunde chips in de kernel zijn zonder geheugenbeheer eenheid (MMU). De ontwikkeling van cores voor systemen zonder MMU is in 2017 stopgezet, na de verschuiving naar de ontwikkeling van RTOS-systemen zoals Zephyr voor dergelijke chips. Het is voorgesteld om de ondersteuning voor ARMv7-M in 2027 te verwijderen, tien jaar na de stopzetting van de ontwikkeling, ondanks de voortzetting van de ondersteuning in GCC.
  • iWMMXt — de ondersteuning voor de CPU ARMv7 PJ4 (MMP2, Berlin) is al gestopt in de kernel, waarna er geen gangbare systemen overbleven die deze instructieset gebruikten. De ondersteuning voor iWMMXt is al stopgezet in Clang en is voorgesteld voor verwijdering uit GCC.
  • BE32 (big endian ARMv5) — wordt slechts in ƩƩn SoC Intel IXP4xx gebruikt. In oudere versies van Debian werd alleen de little-endian modus ondersteund, maar er blijven problemen bestaan in de drivers. Het is voorgesteld om de ondersteuning voor BE32 uit GCC en de kernel te verwijderen, omdat niemand in enkele jaren in de drivers geprobeerd heeft om de problemen op te lossen.
  • BE8 (big-endian ARMv7) — veel drivers hebben problemen, de test van de werking is stopgezet en er zijn geen gegevens over nog gangbare apparaten. BE8 kan interessant zijn voor het testen van componenten in de gebruikersruimte op big-endian systemen, daarom is het plan om de ondersteuning voor BE8 in de kernel en GCC gedurende minstens enkele jaren te behouden totdat het begint problemen te veroorzaken.

Voorstellen voor verwijdering uit de Linux-kernel:

  • De structuur param_struct, gebruikt voor ATAGS (ARM Tag-Area) — is sinds 2001 als verouderd verklaard, maar wordt nog steeds gebruikt in de code voor de RiscPC en Footbridge platforms.
  • Bestanden met parameters op basis van de ATAGS-structuur (gebruikt om informatie over configuratie door te geven vóór de Device Tree) — er blijven 29 bestanden in de kernel die gerelateerd zijn aan 10 SoC-platforms die ATAGS gebruiken.
  • OABI (Old ABI, oude ABI voor de ARM-architectuur) wordt nu bijna overal vervangen door EABI (Embedded ABI). OABI is de oorzaak van veel fouten, omdat ontwikkelaars van stuurprogramma's zijn gestopt met het in aanmerking nemen van sommige gerelateerde kenmerken. De ondersteuning voor OABI bij het samenstellen van componenten voor de gebruikersruimte is stopgezet in GCC 4.8, maar voor de kernel is de vlag "-mabi=apcs-gnu" behouden. Het wordt aanbevolen OABI voorlopig te behouden, maar het moeilijker te maken om in te schakelen door onoplettendheid.
  • De compatibiliteitsmodus voor OABI (OABI_COMPAT) maakt het mogelijk om uitvoerbare bestanden die zijn samengesteld voor OABI uit te voeren met een kernel die EABI gebruikt. Er zijn afzonderlijke problemen in stuurprogramma's door incompatibiliteit met ioctl, maar de onderhoudslast van deze modus is aanzienlijk lager dan die van kernels met OABI. Voor het behoud van de ondersteuning voor StrongARM is het rationeel om de ondersteuning voor OABI of OABI_COMPAT te behouden.
  • NWFPE (No Floating Point Emulator, emulator voor het uitvoeren van floating-point-bewerkingen) — patches voor verwijdering werden al 11 jaar geleden voorgesteld, maar NWFPE is vereist voor het functioneren van sommige componenten van de gebruikersruimte die zijn samengesteld voor OABI, daarom wordt aangeraden om de ondersteuning voor NWFPE te behouden zolang de kernel ondersteuning geeft voor OABI of OABI_COMPAT.
  • Highmem (gebruikt voor het beheren van geheugen in gebieden na 1 GB) — de meeste ARM-systemen kunnen zonder highmem functioneren of kunnen CONFIG_VMSPLIT_2GB gebruiken voor toegang tot de eerste 2 GB fysiek geheugen. Er wordt gewerkt aan de organisatie van toegang tot 4 GB RAM op systemen met LPAE (Cortex-A7/A15), waarna de ondersteuning voor Highmem misschien kan worden verwijderd.
  • Sparsemem — vereist voor systemen die highmem nodig hebben.

Platforms die worden voorgesteld voor verwijdering:

  • RiscPC — de oudste van de in de kernel ondersteunde platforms. Niet meer ondersteund in GCC, sinds tak 9.x vanwege het verwijderen van de ondersteuning voor ARMv3. De onderhoudsperson heeft de werking van de kernel op dit platform blijven testen, maar er lijken geen echte gebruikers meer te zijn, daarom kan de ondersteuning worden stopgezet in het geval dat de interesse van de onderhoudsperson verdwijnt.
  • SA1100, Footbridge — verouderde platforms, behoudens uit nostalgische overwegingen. Bijna alle beschrijvingsbestanden voor deze platforms zijn verwijderd in kernel 6.3, alleen de ondersteuning voor apparaten zoals ipaq h3600, assabet, netwinder en ebsa285 blijft bestaan. De vraag van verwijdering hangt af van de intenties van de onderhoudsperson.
  • Gemini, Moxart — gebruiken CPU op basis van ARMv4. De chips zijn meer dan 20 jaar geleden geproduceerd, maar hun ondersteuning vereist geen extra moeite in het onderhoud, daarom is het niet zinvol om ze te verwijderen voordat het StrongARM-platform verdwijnt.
  • Bestanden ter ondersteuning van PXA — het platform zijn verlaten en uit gebruik geraakt. Als er geen interesse in terugkomt, is het plan om ze begin 2025 te verwijderen.
  • OMAP1 — aan de ene kant blijft het het enige platform op basis van ARMv4T/ARMv5 zonder ondersteuning voor Device Tree en zijn er geen bewegingen om over te schakelen naar Device Tree, maar aan de andere kant zijn er nog steeds gebruikers van het platform.
  • Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1 — gebruiken CPU op basis van ARMv4T. Er wordt gewerkt aan de omzetting van de plattegrond beschrijvingen naar Device Tree, maar het blijft zinvol om ze te ondersteunen zolang er ondersteuning is voor ARMv5.
  • OMAP24xx — het enige platform op basis van ARMv6 met actieve gebruikers. Het behoud van ondersteuning hangt af van het behouden van ondersteuning voor de CPU arm1136r0.
  • iMX31 — er zijn geen gegevens over actieve gebruikers, maar het is niet zinvol om het eerder te verwijderen dan OMAP2.
  • S3C64xx (Cragganmore) — het enige platform zonder ondersteuning voor Device Tree, gebouwd op basis van ARMv6K. Het platform wordt nog steeds gebruikt voor het testen van audiocodecs, daarom is verwijdering uitgesteld totdat het testen naar een ander bord wordt overgebracht.
  • Orion5x, mv78xx0 — de kwestie van verwijdering zal aan het begin van volgend jaar worden overwogen.
  • iMX35, WM8750, AST2500, BCM2835 — worden goed ondersteund en hebben actieve gebruikers, er zijn momenteel geen plannen om ze te verwijderen.
  • stm32f4/f7/h7 — microcontrollers zonder MMU, het onderhoud in de kernel gaat door en er zijn actieve gebruikers. De kwestie van verwijdering zal in 2026 worden overwogen.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster