Arnd Bergmann, der fĂŒr die Kernel-Pakete bei SUSE verantwortlich ist, hat in der Entwicklermailingliste des Linux-Kernels einen Plan zur Eliminierung des Kernel- und Build-Tools-Codes zur UnterstĂŒtzung alter ARM-CPUs und der damit verbundenen ABIs, BefehlssĂ€tze und Kernfunktionen veröffentlicht. Der Plan befindet sich derzeit im RFC-Stadium, d.h. er ist zur Diskussion in der Community ausgestellt. Bei Genehmigung des Plans soll die Entfernung alter ARM-Prozessoren im Linux-Kernel 6.12 beginnen, dessen Veröffentlichung fĂŒr Dezember geplant ist. Die ersten Kandidaten fĂŒr die Entfernung sind ARMv4 (ohne ARMv4T), iWMMXt, BE32 und OABI.
Die Einstellung der UnterstĂŒtzung alter ARM-CPUs im Kern ĂŒberschneidet sich mit der Einstellung ihrer UnterstĂŒtzung in GCC â einige der zum Entfernen vorgeschlagenen CPUs werden bereits in den aktuellen GCC-Zweigen nicht mehr unterstĂŒtzt, wĂ€hrend andere in zukĂŒnftigen Versionen entfernt werden sollen, was die Aktualisierung und Implementierung neuer Funktionen im Compiler erleichtert. Die Entfernung der UnterstĂŒtzung fĂŒr die Architektur in GCC erfordert auch deren Entfernung aus dem Kern, falls die minimal unterstĂŒtzte GCC-Version, die der Kernel benötigt (aktuell wird mindestens GCC 5.1 fĂŒr den Kernel-Bau benötigt), erhöht wird.
Architekturen, Chips und Erweiterungen, deren Entfernung aus dem Kern vorgeschlagen wird:
- ARMv3 â die UnterstĂŒtzung wurde bereits in GCC 9 eingestellt.
- ARMv4 â wird fĂŒr noch verbreitete Prozessoren wie StrongARM und FA526 verwendet, wobei die neuesten dieser Chips vor etwa 20 Jahren veröffentlicht wurden. Die UnterstĂŒtzung fĂŒr ARMv4 wurde in Debian 5.0 eingestellt. ZunĂ€chst wird empfohlen, die UnterstĂŒtzung fĂŒr ARMv4 in GCC einzustellen und einige Jahre spĂ€ter auch im Kern.
- ARMv4T â es gibt 6 SoC-Familien mit den Kernen ARM720T, ARM920T und ARM922T, die hĂ€ufiger anzutreffen sind als SoCs auf ARMv4-Basis. Die UnterstĂŒtzung fĂŒr ARMv4T wurde in Debian 9.0 eingestellt. Die UnterstĂŒtzung von ARMv4T im Kern wird angestrebt, jedoch nicht bevor die UnterstĂŒtzung fĂŒr ARMv5 eingestellt wird.
- ARMv5 â wird auf etwa 1/3 aller unterstĂŒtzten Plattformen im Kern verwendet, doch die meisten dieser Plattformen befinden sich am Ende ihres Lebenszyklus. Debian unterstĂŒtzt ARMv5 weiterhin, jedoch wird die Aufrechterhaltung der UnterstĂŒtzung aufgrund des Fehlens von FPU und atomaren Operationen immer schwieriger und wahrscheinlich wird der Debian-Port fĂŒr ARMv5 bald in den Status nicht-offiziell versetzt.
- FrĂŒhe Generationen von ARMv6 â werden in SoCs wie ARM1136r0p (NXP i.MX31) und OMAP24xx (Nokia N8xx) verwendet, jedoch erfordert ihre UnterstĂŒtzung Hacks, um in SMP-Kernen zu funktionieren.
- ARMv6K â wird im ARM1176 (Raspberry Pi 1, AST2500) und ARM1136r1 verwendet. Im Kernel gibt es keine Hindernisse fĂŒr die Einstellung der UnterstĂŒtzung, aber in den Distributionen gibt es Schwierigkeiten aufgrund der InkompatibilitĂ€t mit dem standardisierten ARMv7-a+vfpv3-d16.
- ARMv7-M â wird in Mikrocontrollern auf Basis von Cortex-M3/M4/M7 verwendet, die die letzten unterstĂŒtzten Chips im Kernel ohne Memory Management Unit (MMU) bleiben. Die Arbeit an Kernen fĂŒr Systeme ohne MMU wurde 2017 eingestellt, nachdem auf die Entwicklung von RTOS wie Zephyr umgestiegen wurde. Es wird vorgeschlagen, die UnterstĂŒtzung fĂŒr ARMv7-M im Jahr 2027 zu entfernen, zehn Jahre nach der Einstellung der Entwicklung, trotz der fortgesetzten UnterstĂŒtzung in GCC.
- iWMMXt â im Kernel wurde bereits die UnterstĂŒtzung fĂŒr die CPU ARMv7 PJ4 (MMP2, Berlin) eingestellt, danach gab es keine noch gĂ€ngigen Systeme, die diesen Befehlssatz verwenden. Die UnterstĂŒtzung fĂŒr iWMMXt wurde bereits in Clang eingestellt und wird fĂŒr die Entfernung aus GCC vorgeschlagen.
- BE32 (big endian ARMv5) â wird nur in einem SoC Intel IXP4xx verwendet. In Ă€lteren Versionen von Debian wurde nur der Little-Endian-Modus unterstĂŒtzt, aber in den Treibern bleiben ungelöste Probleme. Es wird vorgeschlagen, die UnterstĂŒtzung fĂŒr BE32 aus GCC und dem Kernel zu entfernen, da in den Treibern ĂŒber mehrere Jahre hinweg niemand die Probleme behoben hat.
- BE8 (big-endian ARMv7) â in vielen Treibern gibt es Probleme, die Arbeit wurde eingestellt und es liegen keine Informationen ĂŒber verbleibende GerĂ€te vor. Der BE8-Modus könnte fĂŒr Tests von Komponenten im Benutzerspeicherbereich auf big-endian-Systemen von Interesse sein, daher wird die UnterstĂŒtzung von BE8 im Kernel und GCC voraussichtlich noch mehrere Jahre fortbestehen, bevor sie zu Problemen fĂŒhrt.
Vorgeschlagene Kernel-Funktionen zur Entfernung:
- Die param_struct-Struktur, die bis zu ATAGS (ARM Tag-Area) verwendet wurde â wurde bereits 2001 als veraltet erklĂ€rt, wird jedoch weiterhin im Code fĂŒr RiscPC- und Footbridge-Plattformen verwendet.
- Dateien mit Parametern basierend auf der ATAGS-Struktur (die zur Ăbertragung von Konfigurationsinformationen vor dem Device Tree verwendet wurde) â im Kernel verbleiben 29 Dateien, die mit 10 SoC-Plattformen, die ATAGS verwenden, verbunden sind.
- OABI (Old ABI, alte ABI fĂŒr die ARM-Architektur) â wird jetzt fast ĂŒberall EABI (Embedded ABI) verwendet. OABI ist die Ursache vieler Fehler, da Treiberentwickler bestimmte zugehörige Besonderheiten nicht mehr beachten. Die UnterstĂŒtzung von OABI beim Kompilieren von Benutzerraumschnittstellen wurde in GCC 4.8 eingestellt, aber fĂŒr den Kernel bleibt das Flag â-mabi=apcs-gnuâ bestehen. Es wird empfohlen, OABI vorerst beizubehalten, aber die Aktivierung durch NachlĂ€ssigkeit zu erschweren.
- Der OABI-KompatibilitĂ€tsmodus (OABI_COMPAT) â erlaubt die AusfĂŒhrung von ausfĂŒhrbaren Dateien, die fĂŒr OABI erstellt wurden, unter Verwendung des EABI-Kernels. Es treten besondere Probleme bei den Treibern aufgrund der InkompatibilitĂ€t mit ioctl auf, aber der Wartungsaufwand fĂŒr diesen Modus ist deutlich geringer als der fĂŒr Kerne mit OABI. Um die UnterstĂŒtzung von StrongARM aufrechtzuerhalten, ist es sinnvoll, die UnterstĂŒtzung von OABI oder OABI_COMPAT beizubehalten.
- NWFPE (No Floating Point Emulator, Emulator fĂŒr FlieĂkommaoperationen) â Patches zur Entfernung wurden bereits vor 11 Jahren vorgeschlagen, aber NWFPE wird fĂŒr den Betrieb bestimmter Benutzerraumkomponenten benötigt, die fĂŒr OABI erstellt wurden, daher wird empfohlen, die UnterstĂŒtzung von NWFPE bis zur Beibehaltung der UnterstĂŒtzung von OABI oder OABI_COMPAT im Kernel aufrechtzuerhalten.
- Highmem (wird zur Verwaltung des Speichers in Bereichen ĂŒber 1 GB verwendet) â die meisten ARM-Systeme können ohne Aktivierung von Highmem arbeiten oder CONFIG_VMSPLIT_2GB nutzen, um auf die ersten 2 GB physischen Speicher zuzugreifen. Es wird daran gearbeitet, den Zugang zu 4 GB RAM auf Systemen mit LPAE (Cortex-A7/A15) zu ermöglichen; nach Abschluss dieser Arbeiten könnte die Highmem-UnterstĂŒtzung entfernt werden.
- Sparsemem â erforderlich fĂŒr Systeme, die Highmem benötigen.
Bereits zur Entfernung vorgeschlagene Plattformen:
- RiscPC â die Ă€lteste der im Kernel unterstĂŒtzten Plattformen. Wird in GCC seit der Version 9.x nicht mehr unterstĂŒtzt, da die UnterstĂŒtzung fĂŒr ARMv3 entfernt wurde. Der Betreuer testet weiterhin die FunktionalitĂ€t des Kernels auf dieser Plattform, aber echte Benutzer scheinen nicht mehr vorhanden zu sein, daher könnte die UnterstĂŒtzung eingestellt werden, wenn das Interesse des Betreuers nachlĂ€sst.
- SA1100, Footbridge â veraltete Plattformen, die aus NostalgiegrĂŒnden erhalten bleiben. Fast alle Dateien mit Beschreibungen der Boards fĂŒr diese Plattformen wurden im Kernel 6.3 entfernt, es bleibt nur die UnterstĂŒtzung fĂŒr die GerĂ€te ipaq h3600, assabet, netwinder und ebsa285. Die Frage der Entfernung hĂ€ngt von den Absichten des Betreuers ab.
- Gemini, Moxart â nutzen CPUs auf Basis von ARMv4. Die Chips wurden vor ĂŒber 20 Jahren hergestellt, jedoch erfordert deren UnterstĂŒtzung keinerlei zusĂ€tzlichen Aufwand, weshalb es keinen Sinn macht, sie vor der Abschaltung der StrongARM-Plattform zu entfernen.
- Die Dateien zur UnterstĂŒtzung der PXA-Plattform befinden sich in einem veralteten Zustand und sind nicht mehr in Gebrauch; sollte das Interesse nicht zurĂŒckkehren, sollen sie Anfang 2025 entfernt werden.
- OMAP1 bleibt einerseits die einzige Plattform auf Basis von ARMv4T/ARMv5 ohne UnterstĂŒtzung fĂŒr Device Tree, und es sind keine Bewegungen zur EinfĂŒhrung von Device Tree zu beobachten; andererseits gibt es jedoch weiterhin Nutzer der Plattform.
- Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1 â nutzen CPUs auf Basis von ARMv4T. Es wird an der Ăbertragung der Platformbeschreibungen auf Device Tree gearbeitet, aber der Sinn einer UnterstĂŒtzung bleibt nur so lange bestehen, wie die UnterstĂŒtzung fĂŒr ARMv5 erhalten bleibt.
- OMAP24xx ist die einzige Plattform auf Basis von ARMv6, die aktive Nutzer hat. Die Beibehaltung der UnterstĂŒtzung hĂ€ngt von der FortfĂŒhrung der UnterstĂŒtzung des CPUs arm1136r0 ab.
- iMX31 â es sind keine Informationen ĂŒber aktive Nutzer verfĂŒgbar, jedoch macht es keinen Sinn, sie vor OMAP2 zu entfernen.
- S3C64xx (Cragganmore) â die einzige Plattform ohne UnterstĂŒtzung fĂŒr Device Tree, basierend auf ARMv6K. Die Plattform wird weiterhin zur Testung von Audiocodecs verwendet, daher ist die Entfernung bis zur Ăbertragung der Tests auf eine andere Karte verschoben.
- Orion5x, mv78xx0 â die Frage der Entfernung wird Anfang nĂ€chsten Jahres erörtert.
- iMX35, WM8750, AST2500, BCM2835 â werden gut unterstĂŒtzt und haben aktive Nutzer, eine Entfernung ist derzeit nicht geplant.
- stm32f4/f7/h7 â Mikrocontroller ohne MMU, die UnterstĂŒtzung im Kernel wird fortgesetzt und es gibt aktive Nutzer. Die Frage der Entfernung wird fĂŒr 2026 geprĂŒft.
Quelle: opennet.ru
