Arnd Bergmann, Linux-Kernel-Entwickler aus der Arm-Soc-Branche und verantwortlich für Kernel-Pakete bei SUSE, veröffentlichte a Vorschlag in dem er auf den Tisch legt das Problem der Entfernung des GCC-basierten Kernels und erstellen Sie Code-Tools zur Unterstützung älterer ARM-CPUs, der zugehörigen ABIs, Befehlssätze und Kernel-Funktionen.
Arnd Bergmann erwähnt das die Grundlage des Vorschlags der Einstellung der Unterstützung für ARM-CPUs alt im Kernel liegt an der Unterbrechung in GCC, da einige der zur Entfernung vorgeschlagenen CPUs in den neuesten GCC-Zweigen nicht mehr unterstützt werden und andere in zukünftigen Versionen entfernt werden sollen.
Erwähnen Sie, dass durch die Anwendung dies Die Modernisierung und Implementierung neuer Funktionen im Compiler wird erleichtert. UNDDas Entfernen der Unterstützung für eine Architektur in GCC erfordert deren Entfernung aus dem Kernel, wenn die vom Kernel unterstützte Mindestversion von GCC erhöht wird (derzeit ist mindestens GCC-Version 5.1 zum Kompilieren des Kernels erforderlich).
Zwischen Architekturen, Chips und Erweiterungen die aus dem Kernel entfernt werden sollen, werden folgende erwähnt:
- ARMv3: In GCC-9 entfernt, daher wird es irgendwann aus dem Kernel entfernt, wenn die Mindestversionen des Compilers steigen.
- ARMv4: Wird für StrongARM- und FA526-CPUs verwendet, immer noch auf einigen Boards. Selbst die neuesten Chips sind fast 20 Jahre alt. Die letzte Debian-Version, die sie unterstützte, war Lenny (5.0). Sechs SoC-Familien mit ARMv4T-Kernen (ARM720T, ARM920T und ARM922T) werden weiterhin unterstützt. Obwohl sie alt sind, haben sie mehr Benutzer und Entwickler als ARMv4. Debian Stretch (9.0) war der letzte, der sie unterstützte.
- ARMv5: Etwa ein Drittel der unterstützten Plattformen verwenden ARMv5, die meisten unterstützen jedoch fast das Ende.
- ARMv6 früh: Enthält ARM1136r0p in NXP i.MX31 und OMAP24xx, hauptsächlich im Nokia N8xx-Tablet. Erfordert spezielle Hacks, um Kernel mit SMP zu unterstützen. Es gibt einen Patch, der ARMv6 von der Kompatibilität mit ARMv7 auf die Kompatibilität mit ARMv5 ändert, aber es bedarf noch weiterer Arbeit.
- ARMv6K
ARMv7-M: Cortex-M3/M4/M7 sind die einzigen Kerne, die ohne MMU unterstützt werden, derzeit auf 5 Mikrocontroller-Plattformen. Sie könnten im Jahr 2027 entfernt werden, aber GCC muss sie weiterhin auf anderen Betriebssystemen unterstützen. - iWMMXt: Es sind keine verbleibenden Benutzer für iWMMXt bekannt und die Unterstützung für ARMv7 PJ4-CPUs wurde entfernt. Es wird nur in Intel/Marvell PXA und MMP1 unterstützt.
- ARMv5-Big-Endian-Kernel (BE32): Nur ein SoC nutzt es, der Intel IXP4xx. Debian unterstützte es im Little-Endian-Modus, aber die Treiber sind in LE defekt.
- ARMv7-Big-Endian-Kernel (BE8)
- Param_struct vor ATAGS: Dies wurde im Jahr 2001 abgeschrieben und in „5 Jahren“ abgebaut, was bereits geschehen ist.
- ATAGS-basierte Plattendateien: Nach der oben genannten Bereinigung sind auf 29 SoC-Plattformen noch 10 Board-Dateien übrig.
- OABI-Kernel: Heutzutage nutzt praktisch jeder EABI und die OABI-Unterstützung wurde in GCC-4.8 als Ziel entfernt. Der Kernel lässt sich weiterhin als OABI mit -mabi=apcs-gnu erstellen, das standardmäßig in ARMv4/ARMv5-Kerneln verwendet wird.
- OABI-Kompatibilitätsmodus: Dies ermöglicht die Ausführung von OABI-Binärdateien mit einem EABI-Kernel.
- NWFPE
- Highmem: Die meisten ARM-Maschinen können ohne Highmem-Unterstützung mit CONFIG_VMSPLIT_2GB arbeiten, um bis zu 2 GB physischen Speicher zu adressieren. Im Jahr 15 kamen größere Maschinen mit Cortex-A2012 auf den Markt, die schnell durch 64-Bit-Chips ersetzt wurden.
- Sparsam: Es gibt eine Diskussion darüber, die Unterstützung für traditionelles Sparsemem zu streichen. Dies gilt auch für Maschinen, die Highmem benötigen, um ihren gesamten RAM zu nutzen
- RiscPC: Dies ist die älteste unterstützte Plattform und wird irgendwann entfernt, da sie aufgrund der Entfernung von ARMv9 nicht mit GCC-3 oder höher funktioniert.
- SA1100, Fußgängerbrücke: andere StrongARM-basierte Plattformen, die nur für Nostalgie relevant sind.
- Zwillinge, Moxart: Beide nutzen den Faraday FA526 CPU-Kern, der wie StrongARM ARMv4 statt ARMv4T mit Daumen implementiert. Die Chips sind ebenfalls über 20 Jahre alt, der Kernel-Code wurde jedoch aktualisiert und stellt keinen Wartungsaufwand dar.
- PXA-Board-Dateien: Im PXA-Code sind noch zwei Plattendateien vorhanden, die vor zwei Jahren nicht entfernt wurden, in der Hoffnung, dass dies die Konvertierung in DT erleichtern würde
- OMAP1: die einzige ARMv4T/ARMv5-Plattform ohne DT-Unterstützung, was sie zu einem Ziel für die Entfernung macht.
- Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1
- OMAP24xx
- iMX31, Realview/Integrator mit 1136r0
- S3C64xx (Cragganmore): Dies ist das einzige ARMv6K-Board ohne Devicetree-Unterstützung, und die Board-Datei weist eine ähnliche Komplexität auf wie alle anderen Board-Dateien zusammen. arch/arm/mach-s3c/Kconfig.s3c64xx listet es zur Entfernung Anfang nächsten Jahres auf, was eine umfassende Bereinigung der Plattforminfrastruktur und der Treiber ermöglichen würde.
- Orion5x, mv78xx0, Doveboard-Dateien: Wie bei PXA blieben diese bis zum Fortschritt der DT-Konvertierung bestehen, es ist jedoch nichts passiert, außer einigen kleineren Korrekturen in mv78xx0. Im Gegensatz dazu hat Debian die orion5x-Kernel-Binärdatei mit der Begründung, dass es zu wenige Benutzer gebe, entfernt, so dass die Wahrscheinlichkeit einer Fertigstellung deutlich geringer ist.
- iMX35, WM8750, AST2500, BCM2835: Diese vier sind alle ARMv6K-Plattformen und werden gut unterstützt, obwohl nur AST2500 und BCM2835 eine aktive Benutzerbasis haben.
- Stm32f4/f7/h7-Mikrocontroller: Dies sind die einzigen Nicht-MMU-Arm-Chips, die kontinuierlich weiterentwickelt werden, da ST weiterhin seine bestehenden Kunden unterstützt.
Abschließend sollte erwähnt werden, dass Dieser Plan befindet sich noch im RFC-Stadium, also zur Community-Diskussion veröffentlicht. Im Falle einer Genehmigung wird vorgeschlagen, voraussichtlich im Dezember mit der Entfernung alter ARM-Prozessoren im Linux 6.12-Kernel zu beginnen. Die ersten zu entfernenden Kandidaten sind ARMv4 (ohne ARMv4T zu entfernen), iWMMXt, BE32 und OABI.
Quelle: https://lkml.org