Arnd Bergmann, Lo sviluppatore del kernel Linux del ramo arm-soc e responsabile dei pacchetti del kernel presso SUSE, ha rilasciato a proposta in cui mette sul tavolo il problema della rimozione del kernel basato su GCC e creare strumenti di codice per supportare le vecchie CPU ARM, gli ABI associati, i set di istruzioni e le funzionalità del kernel.
Arnd Bergmann, lo menziona la base della proposta di cessazione del sostegno per CPU ARM vecchio nel Kernel è dovuto all'interruzione nel GCC, poiché alcune delle CPU proposte per la rimozione non sono più supportate negli ultimi rami GCC e altre saranno rimosse nelle versioni future.
Ricorda che applicando questo, Verrà facilitata la modernizzazione e l'implementazione di nuove funzioni nel compilatore. ELa rimozione del supporto per un'architettura in GCC richiederà la sua rimozione dal kernel se la versione minima di GCC supportata dal kernel viene aumentata (attualmente, per compilare il kernel è richiesta almeno la versione 5.1 di GCC).
Tra architetture, chip ed estensioni che si propone di rimuovere dal kernel, vengono menzionati i seguenti:
- ARMv3: Rimosso in GCC-9, quindi verrà eventualmente rimosso dal kernel con l'aumento delle versioni minime del compilatore.
- ARMv4: Utilizzato per CPU StrongARM e FA526, ancora su alcune schede. Anche i chip più recenti hanno quasi 20 anni. L'ultima versione di Debian che li supportava era Lenny (5.0). Sono ancora supportate sei famiglie di SoC con core ARMv4T (ARM720T, ARM920T e ARM922T). Sebbene siano vecchi, hanno più utenti e sviluppatori di ARMv4. Debian Stretch (9.0) è stata l'ultima a supportarli.
- ARMv5: Circa un terzo delle piattaforme supportate utilizza ARMv5, ma la maggior parte è prossima alla fine del supporto.
- ARMv6 in anticipo: include ARM1136r0p in NXP i.MX31 e OMAP24xx, principalmente il tablet Nokia N8xx. Richiede hack speciali per supportare i kernel con SMP. Esiste una patch che modifica ARMv6 dalla compatibilità con ARMv7 alla compatibilità con ARMv5, ma necessita di ulteriore lavoro.
- ARMv6K
ARMv7-M: Cortex-M3/M4/M7 sono gli unici core supportati senza MMU, attualmente su 5 piattaforme microcontrollore. Potrebbero essere rimossi nel 2027, ma GCC dovrà comunque supportarli su altri sistemi operativi. - iWMMXt: non sono noti utenti rimanenti per iWMMXt e il supporto per le CPU ARMv7 PJ4 è stato rimosso. È supportato solo in Intel/Marvell PXA e MMP1.
- Kernel big endian ARMv5 (BE32): Lo utilizza solo un SoC, l'Intel IXP4xx. Debian lo supportava in modalità little-endian, ma i driver non funzionavano in LE.
- Kernel big endian ARMv7 (BE8)
- Param_struct pre-ATAGS: Questa è stata svalutata nel 2001, per essere eliminata in “5 anni”, cosa già avvenuta.
- File di piastre basati su ATAGS: Dopo la pulizia di cui sopra, sono rimasti 29 file della scheda su 10 piattaforme SoC.
- Kernel OABI: Praticamente tutti oggi usano EABI e il supporto OABI è stato rimosso come obiettivo in GCC-4.8. Il kernel consente ancora di essere compilato come OABI con -mabi=apcs-gnu, utilizzato per impostazione predefinita nei kernel ARMv4/ARMv5.
- Modalità compatibilità OABI: Ciò consente di eseguire i file binari OABI con un kernel EABI.
- NWFPE
- Highmem: La maggior parte delle macchine ARM può funzionare senza supporto highmem utilizzando CONFIG_VMSPLIT_2GB per indirizzare fino a 2 GB di memoria fisica. Macchine più grandi sono apparse con Cortex-A15 nel 2012, rapidamente sostituite da chip a 64 bit.
- Sparsi: C'è una discussione sulla rimozione del supporto per il tradizionale sparsemem. Ciò riguarda anche le macchine che necessitano di highmem per utilizzare tutta la RAM
- RiscPC: Questa è la piattaforma più vecchia supportata e verrà eventualmente rimossa, poiché non funziona con GCC-9 o versioni successive a causa della rimozione di ARMv3.
- SA1100, Passerella: altre piattaforme basate su StrongARM, rilevanti solo per la nostalgia.
- Gemelli, Moxart: Entrambi utilizzano il core CPU Faraday FA526, che come StrongARM implementa ARMv4 invece di ARMv4T con il pollice. Anche i chip hanno più di 20 anni, ma il codice del kernel è stato aggiornato e non rappresenta un onere di manutenzione.
- File della scheda PXA: Sono rimasti due file di targa nel codice PXA non rimossi due anni fa, sperando che questo possa aiutare la conversione in DT
- OMAP1: l'unica piattaforma ARMv4T/ARMv5 senza supporto DT, rendendola un bersaglio per la rimozione ad un certo punto.
- Nspire, AT91RM9200, CLPS711X, EP93xx, iMX1
- OMAP24xx
- iMX31, realview/integratore con 1136r0
- S3C64xx (Cragganmore): Questa è l'unica scheda ARMv6K senza supporto Devicetree e il file della scheda contiene una complessità simile a quella di tutti gli altri file della scheda messi insieme. arch/arm/mach-s3c/Kconfig.s3c64xx lo elenca per la rimozione all'inizio del prossimo anno, il che consentirebbe una grande pulizia dell'infrastruttura della piattaforma e dei driver.
- Orion5x, mv78xx0, file della scheda colomba: Come PXA, questi sono stati lasciati in attesa di progressi verso la conversione DT, ma non è successo nulla tranne alcune correzioni minori in mv78xx0. Al contrario, Debian ha rimosso il file binario del kernel orion5x citando la mancanza di utenti, quindi sembra molto meno probabile che venga completato.
- iMX35, WM8750, AST2500, BCM2835: Queste quattro sono tutte piattaforme ARMv6K e sono ben supportate, sebbene solo AST2500 e BCM2835 abbiano una base utenti attiva.
- Microcontrollori Stm32f4/f7/h7: Questi sono gli unici chip Arm non MMU a vedere uno sviluppo continuo mentre la ST continua a supportare i suoi clienti esistenti.
Infine, va detto che questo piano è ancora in fase RFC, cioè pubblicato per la discussione della comunità. Se approvato, si propone di iniziare la rimozione dei vecchi processori ARM nel kernel Linux 6.12, prevista per dicembre. I primi candidati a essere rimossi sono ARMv4 (senza rimuovere ARMv4T), iWMMXt, BE32 e OABI.
fonte: https://lkml.org