Il supporto del Raspberry Pi 5 nel kernel Linux principale compie un altro passo avanti grazie al lavoro sul driver IOMMU del SoC BCM2712.
Si tratta di un tassello importante perché incide sulla gestione della memoria delle periferiche e rende il sistema più vicino alla versione mantenuta dalla Raspberry Pi Foundation.
La Input-Output Memory Management Unit traduce gli indirizzi usati dalle periferiche nelle operazioni DMA, permettendo un accesso alla RAM più controllato ed efficiente. Questo migliora l’isolamento tra hardware e memoria di sistema e aiuta a coordinare meglio le risorse condivise tra processore e dispositivi.
Sul Raspberry Pi 5 la IOMMU è particolarmente utile anche per il controller video, che ha bisogno di continui mapping e unmapping della memoria grafica durante l’uso del desktop e delle applicazioni accelerate.
Dal kernel downstream al mainline
Il driver in lavorazione deriva dal codice già usato nel kernel downstream della Raspberry Pi Foundation, ma Daniel Drake lo ha adattato per rispettare le convenzioni del kernel Linux principale. La base originaria è quella realizzata da Nick Hollinghurst, poi rielaborata con modifiche che semplificano l’implementazione e la rendono più allineata agli standard del progetto Linux. Tra gli interventi citati ci sono l’uso di generic_pt per le tabelle delle pagine, proprietà Device Tree più conformi e la rimozione di alcuni meccanismi temporanei legati alla gestione degli indirizzi DMA.
Una parte interessante della patch riguarda l’integrazione della IOMMU con il controller display del Raspberry Pi 5. Questo dovrebbe rendere più ordinata la gestione della memoria grafica e ridurre il lavoro manuale richiesto al driver durante l’allocazione delle risorse. La serie di patch è già stata testata su una scheda Raspberry Pi 5 in un ambiente desktop con accelerazione 3D attiva, quindi in uno scenario che stressa parecchio il sottosistema grafico.
Il limite ancora aperto
Resta però un vincolo tecnico da risolvere in una fase successiva. Il BCM2712 lavora con pagine da 4 KB, mentre il kernel Raspberry Pi usa di norma PAGE_SIZE=16KB, con uno spreco di circa 12 KB per ogni pagina destinata alle tabelle di traduzione. È un limite noto e lo sviluppatore ha già indicato l’intenzione di ottimizzarlo con revisioni future del codice.
La serie di patch è ora in revisione e, se il processo procederà senza intoppi, il driver BCM2712 IOMMU potrà entrare in una futura versione del kernel principale. Per chi usa distribuzioni basate solo sul kernel ufficiale, questo significherebbe un supporto più completo e meno dipendente dal software personalizzato della Raspberry Pi Foundation. In prospettiva, il risultato rafforza anche il sottosistema grafico e consolida il Raspberry Pi 5 come piattaforma più matura per desktop, embedded e industria.