Arnd Bergmann, der ansvarer for kernelpakker i SUSE, offentliggjorde i mailinglisten for Linux-udviklere en plan for at fjerne støtte for ældre ARM CPU'er samt associerede ABI'er, instruktioner og kernefunktioner fra kernen og build-værktøjet baseret på GCC. Planen er i øjeblikket på RFC-stadiet, hvilket betyder, at den er til diskussion i fællesskabet. Hvis planen godkendes, foreslås det at begynde at fjerne ældre ARM-processorer i Linux-kernen 6.12, hvis frigivelse forventes i december. De første kandidater til fjernelse nævnes som ARMv4 (uden at fjerne ARMv4T), iWMMXt, BE32 og OABI.
Stop af støtte til ældre ARM CPU'er i kernen overlapper med ophøret af deres støtte i GCC — nogle af de CPU'er, der er foreslået til fjernelse, understøttes allerede ikke i de nyeste versioner af GCC, og nogle planlægges fjernet i fremtidige udgivelser, hvilket vil lette opgraderingen og implementeringen af nye funktioner i compileren. Fjernelse af støtte for arkitekturen i GCC kræver fjernelse af dens støtte fra kernen, når den minimum understøttede version af GCC i kernen hæves (i øjeblikket kræver bygning af kernen mindst version GCC 5.1).
Arkitekturer, chips og udvidelser, der foreslås at blive fjernet fra kernen:
- ARMv3 — støtte er allerede ophørt i GCC 9.
- ARMv4 — anvendes til stadig benyttede processorer som StrongARM og FA526, hvoraf de nyeste chips blev udgivet for cirka 20 år siden. Støtte til ARMv4 er ophørt i Debian 5.0. Det foreslås først at stoppe med at støtte ARMv4 i GCC, og derefter efter et par år også i kernen.
- ARMv4T — 6 familier af SoC med ARM720T, ARM920T og ARM922T-kerner er mere udbredte end SoC baseret på ARMv4. Støtte til ARMv4T er ophørt i Debian 9.0. Støtte til ARMv4T i kernen planlægges at stoppe efter ophøret af ARMv5-støtte.
- ARMv5 — anvendes på cirka 1/3 af alle platforme, der understøttes i kernen, men de fleste af disse platforme nærmer sig slutningen af deres livscyklus. Debian fortsætter med at støtte ARMv5, men på grund af mangel på FPU og atomære operationer bliver det stadig sværere at opretholde støtten, og Debian-porten til ARMv5 vil sandsynligvis snart blive klassificeret som uofficiel.
- Tidlige generationer af ARMv6 — anvendes i SoC'er som ARM1136r0p (NXP i.MX31) og OMAP24xx (Nokia N8xx), men deres støtte kræver hacks for at fungere i kernen med SMP.
- ARMv6K — bruges i ARM1176 (Raspberry Pi 1, AST2500) og ARM1136r1. Der er ingen forhindringer i kernen for at stoppe støtten, men i distributioner opstår der vanskeligheder på grund af inkonsistens med den typiske sæt armv7-a+vfpv3-d16.
- ARMv7-M — bruges i mikrokontrollere baseret på Cortex-M3/M4/M7, som fortsat er de senest understøttede chips i kernen uden en hukommelsesstyringsenhed (MMU). Arbejdet med kerner på systemer uden MMU blev afsluttet i 2017, efter at udviklingen for sådanne chips blev skiftet til RTOS'er som Zephyr. Det foreslås at fjerne støtten til ARMv7-M i 2027, ti år efter at udviklingen stoppede, på trods af fortsat støtte i GCC.
- iWMMXt — understøttelsen af CPU ARMv7 PJ4 (MMP2, Berlin) er allerede stoppet i kernen, hvorefter der ikke er nogen eksisterende systemer, der bruger dette instruktion sæt. Understøttelsen af iWMMXt er allerede stoppet i Clang og foreslås fjernet fra GCC.
- BE32 (big endian ARMv5) — bruges kun i én SoC Intel IXP4xx. I ældre versioner af Debian blev kun little-endian tilstand støttet, men der er uløste problemer i driverne. Det foreslås at fjerne støtten til BE32 fra GCC og kernen, da ingen har forsøgt at løse problemerne i driverne i flere år.
- BE8 (big-endian ARMv7) — mange drivere har problemer, testningen er stoppet, og der er ingen oplysninger om eksisterende enheder. BE8-tilstand kan være interessant til testning af brugerlandskomponenter på big-endian systemer, derfor planlægger man at bevare støtten til BE8 i kernen og GCC i mindst et par år, før den begynder at forårsage problemer.
Foreslåede funktioner til fjernelse fra Linux-kernen:
- Param_struct-strukturen, der blev brugt før ATAGS (ARM Tag-Area) — blev erklæret forældet tilbage i 2001, men bruges stadig i koden til RiscPC- og Footbridge-platforme.
- Filer med parametre baseret på ATAGS-strukturen (som blev brugt til at overføre konfigurationsoplysninger til Device Tree) — der er 29 filer relateret til 10 SoC-platforme, der bruger ATAGS, tilbageholdt i kernen.
- OABI (Old ABI, den gamle ABI til ARM-arkitektur) anvendes næsten overalt nu EABI (Embedded ABI). OABI er årsagen til mange fejl, da udviklere af drivere er holdt op med at tage højde for nogle relaterede egenskaber. Støtten til OABI ved opbygning af komponenter til brugerområdet blev ophørt i GCC 4.8, men for kernen er der bevaret en flag «-mabi=apcs-gnu». Det foreslås at beholde OABI i øjeblikket, men gøre indførelsen sværere ved en forglemmelse.
- Kompatibilitetsmodus med OABI (OABI_COMPAT) - gør det muligt at køre eksekverbare filer bygget til OABI ved brug af en kerne med EABI. Der opstår særlige problemer i drivere på grund af uoverensstemmelser med ioctl, men arbejderens indsats til vedligeholdelse af denne tilstand er betydeligt mindre end vedligeholdelsen af kerner med OABI. For at bevare support til StrongARM vil det være rationelt at bevare støtten til OABI eller OABI_COMPAT.
- NWFPE (No Floating Point Emulator, emulator for udførelse af operationer med flydende komma) - patches til at fjerne blev foreslået for 11 år siden, men NWFPE er nødvendig for at køre nogle komponenter i brugerområdet bygget til OABI, derfor anbefales det at bevare støtten til NWFPE, så længe der er støtte til OABI eller OABI_COMPAT i kernen.
- Highmem (bruges til at administrere hukommelse i områder over 1 GB) - de fleste ARM-systemer kan fungere uden aktivering af highmem eller kan anvende CONFIG_VMSPLIT_2GB for adgang til de første 2 GB fysisk hukommelse. Der arbejdes på at organisere adgang til 4 GB RAM på systemer med LPAE (Cortex-A7/A15), hvorefter støtten til Highmem kan blive fjernet.
- Sparsemem - kræves for systemer, der har brug for highmem.
Foreslåede platforme til fjernelse:
- RiscPC - den ældste af de understøttede platforme i kernen. Ikke understøttet i GCC fra version 9.x på grund af fjernelse af ARMv3-understøttelse. Vedligeholderen fortsætter med at teste kernen på denne platform, men der ser næppe ud til at være reelle brugere, så støtten kan blive fjernet i tilfælde af, at vedligeholderen mister interessen.
- SA1100, Footbridge - forældede platforme, der kun bevares af nostalgiske grunde. Næsten alle filer, der beskriver betingelserne for disse platforme er blevet fjernet i kerne 6.3, der er kun vedligeholdelse af enhederne ipaq h3600, assabet, netwinder og ebsa285. Spørgsmålet om fjernelse afhænger af vedligeholderens intentioner.
- Gemini, Moxart – bruger CPU baseret på ARMv4. Chipsene blev produceret for over 20 år siden, men deres support kræver ikke ekstra indsats, så der er ikke nogen grund til at fjerne dem, før platformen StrongARM fjernes.
- Filer til støtte for PXA-platformen er i en forladt tilstand og er ikke længere i brug; hvis der ikke kommer interesse tilbage, planlægges de fjernet i begyndelsen af 2025.
- OMAP1 – på den ene side forbliver den den eneste platform baseret på ARMv4T/ARMv5 uden support for Device Tree, og der ses ingen bevægelser hen mod overgang til Device Tree, men på den anden side har platformen stadig brugere.
- Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1 – bruger CPU baseret på ARMv4T. Der arbejdes på at overføre beskrivelsen af boardene til Device Tree, men der er kun mening i at vedligeholde dem, så længe der er støtte for ARMv5.
- OMAP24xx – den eneste platform baseret på ARMv6 med aktive brugere. Bevarelsen af støtte afhænger af bevarelsen af støtte til CPU arm1136r0.
- iMX31 – der er ingen oplysninger om aktive brugere, men der er ikke nogen grund til at fjerne den før OMAP2.
- S3C64xx (Cragganmore) – den eneste platform uden støtte for Device Tree, bygget på ARMv6K. Platformen bruges stadig til test af lydkodeker, så fjernelsen er udskudt, indtil testningen overføres til et andet board.
- Orion5x, mv78xx0 – spørgsmålet om fjernelse planlægges at blive drøftet i begyndelsen af næste år.
- iMX35, WM8750, AST2500, BCM2835 – er godt understøttet og har aktive brugere, der er ikke planer om at fjerne dem for nu.
- stm32f4/f7/h7 – mikrokontrollere uden MMU, vedligeholdelse i kernen fortsætter, og der er aktive brugere. Spørgsmålet om fjernelse planlægges at blive drøftet i 2026.
Kilde: opennet.ru
