Red Hat presenta il driver Nova scritto in Rust per le schede video NVIDIA del futuro
Il futuro dei driver Nouveau sembrava promettente dopo che NVIDIA ha rilasciato i moduli del kernel della GPU in modalità open source. Ma ciò nonostante per i progressi dei driver Nouveau, lo sviluppo è rallentato, soprattutto con il manutentore di Nouveau che si è dimesso l’anno scorso subito dopo aver abilitato il supporto GSP (GPU System Processor) su Nvidia.
Ecco allora che il team dei driver video di Red Hat ha recentemente elaborato piani per sviluppare un nuovo driver open source del kernel Linux per il supporto delle schede grafiche NVIDIA come successore/sostituzione di Nouveau per le future generazioni di GPU NVIDIA. Il nuovo driver sarà scritto in Rust e si chiamerà Nova.
Nova mira a diventare un moderno driver Linux open source per le schede grafiche NVIDIA Turing e versioni successive (serie RTX 2000) in cui è presente il supporto GSP (GPU System Processor).
Il driver Nouveau ha recentemente integrato il supporto opzionale per GSP, o supporto obbligatorio a partire dall’ultima serie RTX 40, mentre Nova sarà un sostituto moderno, scritto in Rust e senza il peso accumulato negli anni da Nouveau nel supportare le GPU NVIDIA sin dall’inizio.
Danilo Krummrich di Red Hat ha detto che con questo progetto si vuole lavorare verso un driver semplificato (ma moderno) rispetto a Nouveau:
With Nova we see the chance to significantly decrease the complexity of the driver compared to Nouveau for mainly two reasons. First, Nouveau’s historic architecture, especially around nvif/nvkm, is rather complicated and inflexible and requires major rework to solve certain problems (such as locking hierarchy in VMM / MMU code for VM_BIND currently being solved with a workaround) and second, with a GSP-only driver there is no need to maintain compatibility with pre-GSP code.
Con Nova vediamo la possibilità di diminuire significativamente la complessità del driver rispetto a Nouveau principalmente per 2 ragioni. In primo luogo, l’architettura storica di Nouveau, in particolare attorno a nvif/nvkm, è piuttosto complicata e poco flessibile e richiede importanti rielaborazioni per risolvere alcuni problemi (come il blocco della gerarchia nel codice VMM/MMU per VM_BIND attualmente risolto con una soluzione alternativa) e in secondo luogo, con un solo driver GSP, non è necessario mantenere la compatibilità con il codice pre-GSP.
Questo driver solo GSP basato su Rust promette di guardare bene al futuro e si spera sia più performante e capace del driver Nouveau, simile al driver Intel Xe focalizzato sul futuro che elimina tutto il peso accumulato nel corso degli anni nel codice dell’i915 Direct Rendering Manager.
Scegliendo Rust, gli sviluppatori Red Hat coinvolti sperano che possa vantare una migliore sicurezza della memoria e di conseguenza una migliore manutenibilità e una barriera più bassa per il coinvolgimento di nuovi sviluppatori.
Concentrarsi solo sulle GPU compatibili con GSP semplifica inoltre lo sviluppo del driver, lasciando gran parte dell’inizializzazione/gestione dell’hardware al GSP e al suo firmware/microcodice anziché essere programmati dal driver del dispositivo. Il driver Nouveau continuerà ad esistere per chi utilizza schede grafiche NVIDIA più vecchie.
Con la scelta di Rust il primo problema da affrontare è la mancanza di astrazioni di collegamento con il linguaggio C, con cui è costruito il kernel Linux, per l’infrastruttura integrale del kernel (ad esempio astrazioni dispositivo/driver).
Sebbene il driver Apple Silicon sia in fase di sviluppo da parte del gruppo Asahi Linux in Rust, anche questo è fuori dagli schemi. Il problema dell’assenza di un driver Rust principale, o di altri importanti driver del kernel Linux in Rust con funzionalità complete, è la mancanza di varie astrazioni. Per alcune aree le astrazioni del kernel in Rust esistono, ma non sono ancora state rese disponibili nel ramo principale di sviluppo.
Per iniziare a lavorare sulle astrazioni necessarie per il driver Nova, Danilo Krummrich ha pubblicato un post in mailing list intitolato “Nova e le astrazioni Rust in fase di sviluppo“, per esaminare i diversi alberi Git con le astrazioni Rust per DRM, astrazioni di dispositivi, PCI, ecc.
Il codice di Nova nella fase iniziale continua a essere sviluppato tramite drm/nova su FreeDesktop.org. Sarà interessante vedere come Nova si svilupperà nel tempo.
Fonte: https://lore.kernel.org/dri-devel/Zfsj0_tb-0-tNrJy@cassiopeiae/
Fonte: https://www.phoronix.com/news/Red-Hat-Nova-Rust-Abstractions
Fonte: https://news.itsfoss.com/red-hat-nova-driver/
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.