Linux 7.3 prepara una maxi pulizia ARM: centinaia di driver a rischio

Linux 7.3 manda in pensione numerose piattaforme ARM a 32 bit, ormai quasi inutilizzate. Il codice non sparisce, ma la futura rimozione potrebbe rendere superflui centinaia di vecchi driver.
Linux 7.3 prepara una maxi pulizia ARM: centinaia di driver a rischio

Il kernel Linux continua ad allargare il supporto all’hardware più recente, ma nello stesso tempo deve fare i conti con oltre 20 anni di codice accumulato per piattaforme ormai quasi scomparse. Il prossimo ciclo di sviluppo si muove quindi in una doppia direzione: da una parte arrivano nuovi SoC e nuove schede, dall’altra prende forma una delle pulizie più estese del vecchio supporto ARM a 32 bit. Linux 7.3 introduce infatti il supporto per piattaforme come Apple M3 Pro, M3 Max e M3 Ultra, Samsung Exynos 1580, Sophgo SG2000 e Qualcomm Shikra; parallelamente, numerose architetture ARM storiche vengono formalmente accantonate.

Non si tratta ancora di una rimozione vera e propria. Il codice resta infatti presente nel kernel, ma i manutentori hanno segnalato quali componenti potrebbero sparire nei cicli successivi se nessuno dimostrerà di usarli e mantenerli.

Dietro la decisione c’è un problema concreto: alcune di queste piattaforme risalgono all’epoca precedente alla diffusione del Device Tree e trascinano con sé board file, driver, workaround e configurazioni che oggi complicano modifiche più generali al kernel.

Il dato più significativo riguarda proprio la quantità di codice coinvolta. Dei 28 vecchi board file ARM ancora presenti, 22 entrano tra i candidati alla rimozione; secondo il manutentore Arnd Bergmann, una volta eliminate le piattaforme prive di utenti potrebbero diventare inutili anche centinaia di driver. In pratica, il kernel non sta semplicemente cancellando vecchie macchine: sta cercando di liberarsi di intere catene di dipendenze che non hanno più un utilizzatore reale.

Linux 7.3 segna il confine tra supporto storico e hardware ancora utilizzato

Arnd Bergmann spiega che l’obiettivo non consiste semplicemente nel ridurre le dimensioni dei sorgenti. Il problema nasce quando il mantenimento di hardware con un numero di utenti prossimo allo zero ostacola modifiche più generali, semplificazioni architetturali o l’adozione di nuove funzioni.

Destinatari dell’intervento a livello di kernel Linux sono in gran parte di piattaforme Intel e Marvell precedenti alla migrazione verso Device Tree. Nel vecchio modello, il kernel conteneva codice C che specificava direttamente quali dispositivi fossero presenti sulla scheda, quali indirizzi utilizzassero, gli interrupt e altre caratteristiche dell’hardware.

Con il Device Tree, le caratteristiche hardware della scheda non devono più essere descritte direttamente nel codice C del kernel. Processore, controller, periferiche, indirizzi di memoria, linee di interrupt e collegamenti tra i componenti sono rappresentati attraverso una struttura dati separata, che il kernel legge durante l’avvio. Lo stesso kernel può supportare molte schede differenti semplicemente caricando il Device Tree appropriato, senza richiedere per ciascun modello una serie di inizializzazioni e condizioni specifiche sparse nel sorgente. È anche per questo che il Device Tree è diventato uno degli elementi fondamentali del supporto ARM in Linux.

Anche ARM1136r0 e i Cortex-M entrano nella lista dei componenti abbandonati

Linux 7.3 segna come “deprecated” anche il supporto per alcune classi di chip particolarmente vecchie: ARM1136r0 e i core Cortex-M3, Cortex-M4 e Cortex-M7.

Il caso ARM1136r0 è tecnicamente interessante: durante il lavoro preliminare, Bergmann aveva già evidenziato alcune difficoltà nella convivenza tra queste prime revisioni ARMv6 e le configurazioni odierne del kernel. Le revisioni iniziali di ARM1136 non implementano tutte le estensioni ARMv6K utilizzate per aspetti fondamentali del multiprocessing.

Tra i dispositivi interessati figurano prodotti diventati quasi storici, come i tablet Nokia N800 e N810, oltre a varie schede di sviluppo Freescale/NXP, TI e ARM.

Candidati alla futura eliminazione sono anche OABI, BE8, BE32 e iWMMXt: si tratta di nomi che raccontano fasi differenti dell’evoluzione ARM su Linux.

Linux 7.3 aggiunge contemporaneamente una nuova generazione di SoC

La stessa tornata di modifiche mostra molto bene come funziona il ricambio. Mentre alcune piattaforme ARM storiche si avvicinano all’uscita, il kernel amplia il supporto per l’hardware recente.

Come accennato in precedenza, Linux 7.3 introduce descrizioni e componenti necessari per Samsung Exynos 1580, Canaan K210, Sophgo SG2000, Qualcomm Shikra e Altera Agilex72, oltre alla famiglia Apple M3 più potente.

Shikra è particolarmente curioso perché Qualcomm non ha ancora divulgato molti dettagli pubblici sul prodotto. Le patch Linux indicano l’impiego di core Cortex-A78C e il lavoro di abilitazione è iniziato prima del debutto commerciale.

Il kernel 7.3 introduce inoltre il supporto MSM DRM per le GPU Qualcomm Adreno 704 e Adreno 722. La prima compare in piattaforme embedded come UNO-Q; la seconda accompagna, tra gli altri prodotti, Snapdragon 7 Gen 4.

Sono tutti esempi di un comportamento ormai radicato: il lavoro di integrazione può iniziare prima o durante l’arrivo dell’hardware, riducendo la dipendenza da kernel profondamente modificati dai produttori.

Apple M3 Pro, Max e Ultra: per ora Linux si ferma alla console

Sul versante Apple il progresso è reale, ma sarebbe sbagliato parlare di piena compatibilità dei Mac M3 con Linux mainline. Linux 7.2 aveva introdotto le basi Device Tree per il SoC M3 standard; con Linux 7.3 la stessa impostazione raggiunge M3 Pro, M3 Max e M3 Ultra.

Il livello di supporto resta iniziale. Si può arrivare al boot del kernel e a una console, ma mancano ancora componenti indispensabili per l’uso quotidiano, a cominciare dall’accelerazione GPU. Anche altre parti hardware devono essere collegate correttamente ai driver mainline prima che un Mac di ultima generazione possa offrire un’esperienza paragonabile alle macchine Apple Silicon più mature.

Il progetto Asahi Linux rimane il punto di riferimento indiscusso per il lavoro su Apple Silicon, ma anche lì la serie M3 presenta ancora diverse funzioni incomplete.

L’ingresso dei Device Tree nel kernel ufficiale ha comunque un valore importante: porta le fondamenta direttamente nel “nocciolo” del sistema, riducendo gradualmente la quantità di modifiche da mantenere separatamente.

Linux 7.3 migliora anche i consumi degli Apple M1

Il lavoro sui SoC non riguarda soltanto nuove piattaforme. Sui sistemi M1 Pro, M1 Max e M1 Ultra, Linux 7.3 introduce il driver apple-pmgr-misc, originariamente sviluppato da Hector Martin nell’ambito del progetto Asahi.

PMGR è il componente che sui SoC Apple coordina una parte della gestione energetica a basso livello. Non si occupa semplicemente di ridurre la frequenza della CPU: controlla anche stati di alimentazione che coinvolgono blocchi più ampi del chip, compresi l’interconnessione interna tra i vari componenti – il cosiddetto fabric – e il sottosistema di memoria.

Con Linux 7.3, apple-pmgr-misc permette al kernel di sfruttare meglio questi meccanismi anche durante suspend-to-idle, la modalità di sospensione nella quale il sistema resta tecnicamente acceso ma cerca di portare CPU e periferiche negli stati di consumo più bassi possibili. Prima, alcuni blocchi dei SoC M1 Pro, M1 Max e M1 Ultra potevano rimanere in condizioni energetiche meno efficienti del necessario; il nuovo supporto consente invece di applicare impostazioni più vicine a quelle previste dall’hardware Apple.

Secondo le misurazioni effettuate durante lo sviluppo, il guadagno può arrivare a circa 1 W durante suspend-to-idle. Preso da solo sembra un valore modesto, ma su un MacBook lasciato sospeso per molte ore significa ridurre sensibilmente il consumo della batteria. Se, per esempio, il sistema resta in sospensione per 10 ore, un watt in meno equivale teoricamente a circa 10 Wh risparmiati.

Ti consigliamo anche

Link copiato negli appunti