Arnd Bergmann, responsable des paquets du noyau chez SUSE, a publié sur la liste de diffusion des développeurs du noyau Linux un plan visant à éliminer le code de support pour les anciens CPU ARM et les ABI, jeux d'instructions et fonctionnalités associées dans le noyau et les outils de construction basés sur GCC. Le plan est pour l'instant en phase RFC, c'est-à -dire ouvert à la discussion au sein de la communauté. En cas d'approbation du plan, la suppression des anciens processeurs ARM est prévue pour le noyau Linux 6.12, dont la sortie est attendue en décembre. Les premiers candidats à la suppression sont ARMv4 (sans retirer ARMv4T), iWMMXt, BE32 et OABI.
La fin du support des anciens CPU ARM dans le noyau coĂŻncide avec la fin de leur prise en charge dans GCC â certains des CPU proposĂ©s pour la suppression ne sont dĂ©jĂ plus pris en charge dans les versions rĂ©centes de GCC, tandis que d'autres sont prĂ©vus pour ĂȘtre supprimĂ©s dans de futures versions, ce qui simplifiera la modernisation et l'implĂ©mentation de nouvelles fonctionnalitĂ©s dans le compilateur. La suppression du support de l'architecture dans GCC nĂ©cessitera Ă©galement la suppression de son support dans le noyau en cas d'augmentation de la version minimale de GCC prise en charge par le noyau (actuellement, pour construire le noyau, il faut au moins la version GCC 5.1).
Architectures, puces et extensions qui sont proposées pour suppression du noyau :
- ARMv3 â le support a dĂ©jĂ Ă©tĂ© arrĂȘtĂ© dans GCC 9.
- ARMv4 â utilisĂ© pour des processeurs StrongARM et FA526 encore en usage, les plus rĂ©cents de ces puces ayant Ă©tĂ© lancĂ©es il y a environ 20 ans. Le support d'ARMv4 a Ă©tĂ© arrĂȘtĂ© dans Debian 5.0. Il est proposĂ© d'abord de mettre fin au support d'ARMv4 dans GCC, et dans quelques annĂ©es aussi dans le noyau.
- ARMv4T â 6 familles de SoC avec des cĆurs ARM720T, ARM920T et ARM922T sont plus courantes que les SoC basĂ©s sur ARMv4. Le support d'ARMv4T a Ă©tĂ© arrĂȘtĂ© dans Debian 9.0. Dans le noyau, la prise en charge d'ARMv4T est prĂ©vue d'ĂȘtre arrĂȘtĂ©e, pas avant que le support d'ARMv5 ne soit Ă©galement arrĂȘtĂ©.
- ARMv5 â utilisĂ© sur environ 1/3 de toutes les plateformes prises en charge dans le noyau, mais la plupart de ces plateformes sont proches de la fin de leur cycle de vie. Debian continue de supporter ARMv5, mais en raison de l'absence de FPU et d'opĂ©rations atomiques, maintenir le support devient de plus en plus difficile et, probablement dans un avenir proche, le port Debian pour ARMv5 sera dĂ©placĂ© vers la catĂ©gorie non officielle.
- Les premiĂšres gĂ©nĂ©rations ARMv6 â utilisĂ©es dans des SoC comme ARM1136r0p (NXP i.MX31) et OMAP24xx (Nokia N8xx), mais leur prise en charge nĂ©cessite des hacks pour fonctionner dans des noyaux SMP.
- ARMv6K â utilisĂ© dans ARM1176 (Raspberry Pi 1, AST2500) et ARM1136r1. Il n'y a pas d'obstacles dans le noyau Ă l'arrĂȘt du support, mais des difficultĂ©s surviennent dans les distributions en raison d'une inadĂ©quation avec le jeu d'instructions typique armv7-a+vfpv3-d16.
- ARMv7-M â utilisĂ© dans des microcontrĂŽleurs basĂ©s sur Cortex-M3/M4/M7, qui restent les derniers supports dans le noyau sans unitĂ© de gestion de mĂ©moire (MMU). Le travail sur les cĆurs pour des systĂšmes sans MMU a Ă©tĂ© arrĂȘtĂ© en 2017, aprĂšs un basculement vers le dĂ©veloppement d'RTOS comme Zephyr pour ces puces. La suppression du support ARMv7-M est prĂ©vue pour 2027, dix ans aprĂšs l'arrĂȘt du dĂ©veloppement, bien que le support dans GCC continue.
- iWMMXt â le support de la CPU ARMv7 PJ4 (MMP2, Berlin) a dĂ©jĂ Ă©tĂ© arrĂȘtĂ© dans le noyau, aprĂšs quoi il n'est plus restĂ© de systĂšmes en usage utilisant ce jeu d'instructions. Le support de iWMMXt a dĂ©jĂ Ă©tĂ© arrĂȘtĂ© dans Clang et il est proposĂ© de le retirer de GCC.
- BE32 (big endian ARMv5) â utilisĂ© uniquement dans un SoC Intel IXP4xx. Dans les anciennes versions de Debian, seul le mode little-endian Ă©tait supportĂ©, mais des problĂšmes non rĂ©solus demeurent dans les pilotes. Il est proposĂ© de supprimer le support de BE32 de GCC et du noyau, car personne n'a tentĂ© de rĂ©soudre les problĂšmes dans les pilotes depuis plusieurs annĂ©es.
- BE8 (big-endian ARMv7) â de nombreux pilotes prĂ©sentent des problĂšmes, les tests dâexploitation ont Ă©tĂ© arrĂȘtĂ©s et il n'y a pas d'informations sur les appareils encore en usage. Le mode BE8 pourrait ĂȘtre intĂ©ressant pour tester des composants en espace utilisateur sur des systĂšmes big-endian, donc le support de BE8 est prĂ©vu pour ĂȘtre conservĂ© dans le noyau et GCC pendant au moins quelques annĂ©es avant de commencer Ă poser des problĂšmes.
Fonctionnalités du noyau Linux proposées pour suppression :
- La structure param_struct, utilisĂ©e jusqu'aux ATAGS (ARM Tag-Area) â dĂ©clarĂ©e obsolĂšte dĂšs 2001, mais encore utilisĂ©e dans le code pour les plateformes RiscPC et Footbridge.
- Fichiers de paramĂštres basĂ©s sur la structure ATAGS (utilisĂ©e pour transmettre des informations de configuration avant Device Tree) â il reste 29 fichiers dans le noyau, liĂ©s Ă 10 plateformes SoC utilisant ATAGS.
- OABI (Ancien ABI, l'ancien ABI pour l'architecture ARM) â presque partout maintenant, l'EABI (ABI embarquĂ©) est utilisĂ©. OABI est Ă l'origine de nombreuses erreurs, car les dĂ©veloppeurs de pilotes ont cessĂ© de prendre en compte certaines de ses particularitĂ©s. Le support d'OABI lors de la compilation de composants pour l'espace utilisateur a Ă©tĂ© arrĂȘtĂ© dans GCC 4.8, mais pour le noyau, le drapeau « -mabi=apcs-gnu » a Ă©tĂ© conservĂ©. Il est suggĂ©rĂ© de conserver OABI pour l'instant, mais de compliquer son activation par inadvertance.
- Le mode de compatibilitĂ© avec OABI (OABI_COMPAT) â permet d'exĂ©cuter des fichiers exĂ©cutables compilĂ©s pour OABI en utilisant un noyau avec EABI. Des problĂšmes distincts dans les pilotes surviennent en raison d'incompatibilitĂ©s avec ioctl, mais le coĂ»t de maintenance de ce mode est nettement infĂ©rieur Ă celui de la maintenance des noyaux avec OABI. Pour conserver le support de StrongARM, il serait judicieux de maintenir le support d'OABI ou d'OABI_COMPAT.
- NWFPE (No Floating Point Emulator, Ă©mulateur pour effectuer des opĂ©rations Ă virgule flottante) â des patchs pour le retirer ont Ă©tĂ© proposĂ©s il y a 11 ans, mais NWFPE est nĂ©cessaire pour faire fonctionner certains composants de l'espace utilisateur compilĂ©s pour OABI, donc il est recommandĂ© de conserver le support de NWFPE tant que le noyau continue Ă prendre en charge OABI ou OABI_COMPAT.
- Highmem (utilisĂ© pour gĂ©rer la mĂ©moire dans les zones aprĂšs 1 Go) â la plupart des systĂšmes ARM peuvent fonctionner sans activer highmem ou peuvent utiliser CONFIG_VMSPLIT_2GB pour accĂ©der aux 2 premiers Go de mĂ©moire physique. Des travaux sont en cours pour organiser l'accĂšs Ă 4 Go de RAM sur les systĂšmes avec LPAE (Cortex-A7/A15), aprĂšs quoi le support de Highmem pourrait ĂȘtre supprimĂ©.
- Sparsemem â est requis pour les systĂšmes qui nĂ©cessitent highmem.
Plateformes proposées pour suppression :
- RiscPC â la plus ancienne des plateformes prises en charge par le noyau. Non prise en charge dans GCC Ă partir de la branche 9.x en raison de la suppression du support ARMv3. Le mainteneur continue de tester le fonctionnement du noyau sur cette plateforme, mais il n'y a apparemment plus d'utilisateurs rĂ©els, donc le support pourrait ĂȘtre arrĂȘtĂ© en cas de perte d'intĂ©rĂȘt du mainteneur.
- SA1100, Footbridge â plateformes obsolĂštes, conservĂ©es par pure nostalgie. Presque tous les fichiers dĂ©crivant les cartes pour ces plateformes ont Ă©tĂ© supprimĂ©s dans le noyau 6.3, seules les prises en charge des appareils ipaq h3600, assabet, netwinder et ebsa285 restent. La question de la suppression dĂ©pend des intentions du mainteneur.
- Gemini, Moxart â utilisent un CPU basĂ© sur ARMv4. Les puces ont Ă©tĂ© lancĂ©es il y a plus de 20 ans, mais leur support ne nĂ©cessite pas d'efforts supplĂ©mentaires en maintenance, il n'est donc pas utile de les supprimer avant la suppression de la plateforme StrongARM.
- Les fichiers de support de la plateforme PXA sont dĂ©sormais abandonnĂ©s et sont obsolĂštes. Si l'intĂ©rĂȘt ne revient pas, ils devraient ĂȘtre supprimĂ©s dĂ©but 2025.
- OMAP1 â d'une part, reste la seule plateforme basĂ©e sur ARMv4T/ARMv5 sans support de Device Tree et aucun mouvement n'est observĂ© pour passer Ă Device Tree, mais d'autre part, la plateforme a encore des utilisateurs.
- Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1 â utilisent un CPU basĂ© sur ARMv4T. Des efforts sont en cours pour migrer la description des plaques vers Device Tree, mais l'intĂ©rĂȘt de les maintenir demeure tant que le support ARMv5 est toujours d'actualitĂ©.
- OMAP24xx â est la seule plateforme basĂ©e sur ARMv6 ayant des utilisateurs actifs. Le maintien de son support dĂ©pendra de celui du CPU arm1136r0.
- iMX31 â il n'existe pas d'informations sur des utilisateurs actifs, mais il n'est pas utile de supprimer avant OMAP2.
- S3C64xx (Cragganmore) â est la seule plateforme sans support de Device Tree construite sur ARMv6K. La plateforme continue d'ĂȘtre utilisĂ©e pour tester des codecs audio, donc la suppression est reportĂ©e jusqu'Ă ce que les tests soient transfĂ©rĂ©s sur une autre plaque.
- Orion5x, mv78xx0 â la question de leur suppression devrait ĂȘtre examinĂ©e au dĂ©but de l'annĂ©e prochaine.
- iMX35, WM8750, AST2500, BCM2835 â bĂ©nĂ©ficient d'un bon soutien et ont des utilisateurs actifs, leur suppression n'est pas prĂ©vue pour le moment.
- stm32f4/f7/h7 â des microcontrĂŽleurs sans MMU, le support dans le noyau se poursuit et des utilisateurs actifs sont prĂ©sents. La question de leur suppression devrait ĂȘtre examinĂ©e en 2026.
Source : opennet.ru
