Llancen una proposta per eliminar el suport ARM antic a Linux

eliminar suport ARM antic a Linux

Arnd Bergmann, desenvolupador del kernel de Linux de la branca arm-soc i encarregat dels paquets del kernel a SUSE, va donar a conèixer una proposta en la qual posa sobre la taula el tema d'eliminar el nucli basat en GCC i crear eines de codi per admetre CPU ARM més antigues, els seus ABI, conjunts d'instruccions i capacitats del nucli associats.

Arnd Bergmann, esmenta que la base de la proposta del cessament del suport per a les CPU ARM antigues al kernel és degut a la descontinuació a GCC, ja que algunes de les CPU proposades per a eliminació ja no són compatibles amb les darreres branques de GCC, i altres estan planejades per a ser eliminades en futures versions.

Esmenta que en aplicar això, es facilitarà la modernització i implementació de noves funcions al compilador. Eeliminar el suport per a una arquitectura en GCC requerirà la seva eliminació del nucli si s'augmenta la versió mínima de GCC suportada pel nucli (actualment, almenys la versió 5.1 de GCC és necessària per compilar el nucli).

Entre les arquitectures, xips i extensions que es proposen eliminar del nucli, s'esmenten les següents:

  • ARMv3: Eliminada a GCC-9, per la qual cosa eventualment serà eliminada del kernel en augmentar les versions mínimes de compiladors.
  • ARMv4: S'utilitza per a les CPU StrongARM i FA526, encara en algunes plaques. Fins i tot els xips més nous tenen prop de 20 anys. La darrera versió de Debian que els suportava va ser Lenny (5.0). Encara se suporten sis famílies de SoC amb nuclis ARMv4T (ARM720T, ARM920T i ARM922T). Tot i que són antics, tenen més usuaris i desenvolupadors que els ARMv4. Debian Stretch (9.0) va ser el darrer a suportar-los.
  • ARMv5: Aproximadament un terç de les plataformes suportades utilitzen ARMv5, però la majoria són a prop del final del suport.
  • ARMv6 early: inclou ARM1136r0p a NXP i.MX31 i OMAP24xx, principalment la tauleta Nokia N8xx. Requereix hacks especials per suportar nuclis amb SMP. Hi ha un pegat que canvia ARMv6 de ser compatible amb ARMv7 a ser compatible amb ARMv5, però necessita més feina.
  • ARMv6K
    ARMv7-M: Cortex-M3/M4/M7 són els únics nuclis suportats sense MMU, actualment a 5 plataformes de microcontroladors. Podrien eliminar-se el 2027, però GCC encara els haurà de suportar en altres sistemes operatius.
  • iWMMXt: no es coneixen usuaris restants per a iWMMXt, i es va eliminar el suport per a CPUs ARMv7 PJ4. Només queda suportat a Intel/Marvell PXA i MMP1.
  • Kernel ARMv5 big endian (BE32): Només un SoC ho fa servir, l'Intel IXP4xx. Debian ho suportava en mode little-endian, però els drivers estan trencats a LE.
  • Kernel ARMv7 big endian (BE8)
  • Param_struct pre-ATAGS: Això es va deprecar el 2001, per eliminar-se en «5 anys», cosa que ja va passar.
  • Fitxers de placa basats en ATAGS: Després de la neteja anterior, queden 29 arxius de plaques a 10 plataformes SoC.
  • Kernels OABI: Pràcticament, tots usen EABI avui, i el suport OABI es va eliminar com a objectiu a GCC-4.8. El nucli encara permet construir-se com a OABI amb -mabi=apcs-gnu, usat per defecte en nuclis ARMv4/ARMv5.
  • Mode compat OABI: Això permet executar binaris OABI amb un nucli EABI.
  • NWFPE
  • Highmem: La majoria de les màquines ARM poden funcionar sense suport highmem usant CONFIG_VMSPLIT_2GB per direccionar fins a 2GB de memòria física. Les màquines més grans van aparèixer amb Cortex-A15 el 2012, reemplaçades ràpidament per xips de 64 bits.
  • Sparsemem: Hi ha una discussió sobre eliminar el suport per sparsemem tradicional. Això també es relaciona amb màquines que necessiten highmem per utilitzar tota la seva RAM
  • RiscPC: Aquesta és la plataforma més antiga suportada, i eventualment s'eliminarà, ja que no funciona amb GCC-9 o superior a causa de l'eliminació d'ARMv3.
  • SA1100, Footbridge: altres plataformes basades en StrongARM, rellevants només per nostàlgia.
  • Gemini, Moxart: Totes dues utilitzen el nucli de CPU Faraday FA526, que com a StrongARM implementa ARMv4 en lloc d'ARMv4T amb thumb. Els xips també tenen més de 20 anys, però el codi del nucli s'ha actualitzat i no representa una càrrega de manteniment.
  • Fitxers de placa PXA: Queden dos fitxers de placa al codi PXA no eliminats fa dos anys, amb l'esperança que això ajudés a la conversió a DT
  • OMAP1: l'única plataforma ARMv4T/ARMv5 sense suport DT, cosa que la converteix en un objectiu per a la seva eliminació en algun moment.
  • Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1
  • OMAP24xx
  • iMX31, realview/integrator amb 1136r0
  • S3C64xx (Cragganmore): Aquesta és l'única placa ARMv6K sense suport devicetree, i el fitxer de placa conté una quantitat de complexitat similar a tots els altres fitxers de placa combinats. arch/arm/mach-s3c/Kconfig.s3c64xx llista la seva eliminació per a principis del proper any, cosa que permetria una gran neteja a la infraestructura de la plataforma i els controladors.
  • Fitxers de placa Orion5x, mv78xx0, dove: Com PXA, aquests van quedar tot esperant progressos cap a la conversió a DT, però no ha succeït res excepte alguns arranjaments menors en mv78xx0. Per contra, Debian ha eliminat el binari del nucli orion5x citant la manca d'usuaris, per la qual cosa sembla molt menys probable que es completi.
  • iMX35, WM8750, AST2500, BCM2835: Aquestes quatre són totes plataformes ARMv6K i estan ben suportades, encara que només AST2500 i BCM2835 tenen una base dusuaris activa.
  • Microcontroladors stm32f4/f7/h7: Aquests són els únics xips Arm sense MMU que veuen desenvolupament continu, ja que ST segueix recolzant els seus clients existents.

Finalment, cal esmentar que aquest pla encara és a l'etapa de RFC, és a dir, publicat per a discussió comunitària. Si s'aprova, es proposa iniciar l'eliminació de processadors ARM antics al nucli de Linux 6.12, que s'espera per al desembre. Els primers candidats a ser eliminats són ARMv4 (sense eliminar ARMv4T), iWMMXt, BE32 i OABI.

font: https://lkml.org