Raspberry Pi 5 guadagna un altro pezzo importante nel suo percorso verso il kernel Linux ufficiale, e questa volta il merito va al lavoro sul driver IOMMU del SoC BCM2712. Non è un dettaglio da poco, perché tocca la gestione della memoria delle periferiche e avvicina parecchio il sistema alla versione mantenuta dalla Raspberry Pi Foundation.
La Input-Output Memory Management Unit, questo il nome esteso, traduce gli indirizzi usati dalle periferiche durante le operazioni DMA. In pratica permette un accesso alla RAM più controllato ed efficiente, migliorando l’isolamento tra hardware e memoria di sistema. Il risultato è un coordinamento migliore delle risorse condivise tra processore e dispositivi collegati.
Su Raspberry Pi 5 la IOMMU torna utile soprattutto per il controller video. Il motivo è semplice: il desktop e le applicazioni accelerate richiedono continui mapping e unmapping della memoria grafica, e avere una gestione più ordinata di tutto questo fa una bella differenza nell’uso quotidiano.
Dal kernel downstream al mainline
Il driver in lavorazione parte dal codice già presente nel kernel downstream della Raspberry Pi Foundation, ma non è stato semplicemente copiato. Daniel Drake lo ha adattato perché rispettasse le convenzioni del kernel Linux principale. La base originaria è quella realizzata da Nick Hollinghurst, poi rielaborata con una serie di modifiche pensate per semplificare l’implementazione e renderla più allineata agli standard del progetto.
Tra gli interventi citati c’è l’uso di genericpt per le tabelle delle pagine, proprietà Device Tree più conformi e la rimozione di alcuni meccanismi temporanei legati alla gestione degli indirizzi DMA. Insomma, una ripulita generale per far entrare tutto nella logica del mainline.
Un aspetto interessante della patch riguarda l’integrazione della IOMMU con il controller display del Raspberry Pi 5. Dovrebbe rendere più pulita la gestione della memoria grafica e alleggerire il lavoro manuale richiesto al driver durante l’allocazione delle risorse. La serie di patch è già stata provata su una scheda reale in un ambiente desktop con accelerazione 3D attiva, quindi in uno scenario che mette parecchio sotto pressione il sottosistema grafico.
Il limite ancora aperto
C’è però un vincolo tecnico che verrà affrontato più avanti. Il BCM2712 lavora con pagine da 4 KB, mentre il kernel Raspberry Pi usa di norma PAGESIZE=16KB. Questo comporta uno spreco di circa 12 KB per ogni pagina destinata alle tabelle di traduzione. È un problema già noto, e lo sviluppatore ha detto chiaramente di voler ottimizzare la cosa con revisioni future del codice.
Adesso la serie di patch è in revisione. Se il processo filerà liscio, il driver BCM2712 IOMMU potrà entrare in una futura versione del kernel principale. Per chi usa distribuzioni basate solo sul kernel ufficiale il vantaggio sarebbe concreto: un supporto più completo e meno dipendente dal software personalizzato della Raspberry Pi Foundation. In prospettiva il lavoro rafforza anche il sottosistema grafico e consolida Raspberry Pi 5 come piattaforma più matura, adatta tanto al desktop quanto agli ambiti embedded e industriali.