Inginerii de la Red Hat au propus pentru includerea în nucleul Linux prima serie de patch-uri cu implementarea driverului Nova. Driverul este destinat utilizării cu GPU NVIDIA echipate cu firmware GSP, care sunt utilizate începând cu seria NVIDIA GeForce RTX 2000 bazată pe microarhitectura Turing. În aceste GPU, operațiile de inițializare și gestionare sunt implementate în firmware și sunt executate de un microcontroler GSP (GPU System Processor). Se preconizează că, pe termen lung, Nova va înlocui driverul Nouveau pentru GPU-uri cu suport GSP.
Noul driver este scris în limbajul Rust și, deoarece infrastructura pentru dezvoltarea driverelor în Rust este încă în dezvoltare, codul Nova va fi transferat în nucleul principal pe etape, pe măsură ce apar legăturile necesare pentru limbajul Rust. În prima etapă, pentru includerea în nucleu, a fost propus driverul „nova-core”, format din 232 de linii de cod. Nova-core implementează un nivel de bază de abstracții pentru interfețele software ale firmware-ului GSP și oferă un API care nu depinde de versiunile firmware-ului.
În etapa următoare, în nucleu se plănuiește includerea driverului DRM nova-drm (Direct Rendering Manager) pentru interacțiunea cu GPU-ul din spațiul utilizatorului, precum și un driver VFIO cu manager pentru vGPU, care permite utilizarea GPU-urilor virtuale NVIDIA în sistemele de virtualizare.
Principala motivare pentru promovarea noului driver Nova este posibilitatea de a scăpa de complexitățile asociate driverului Nouveau și de a obține o simplificare semnificativă, datorită utilizării handlerelor gata furnizate de firmware-ul GSP și eliminarea poverii suportului pentru GPU-uri mai vechi. Nova va permite, de asemenea, să rezolve problemele arhitecturale care în Nouveau necesită o revizuire semnificativă a codului, cum ar fi problemele de blocaj în codul VMM/MMU. Limbajul Rust a fost ales pentru a reduce probabilitatea apariției erorilor în gestionarea memoriei, precum și ca o oportunitate de a combina munca la driverul de producție cu crearea legăturilor și abstracțiilor pentru dezvoltarea driverelor în Rust.

În ceea ce privește progresul adăugării de funcționalități pentru dezvoltarea driverelor în limbajul Rust în nucleul Linux, versiunea 6.14 a inclus legăturile Rust pentru PCI, platforme, Open Firmware, dispozitive caracter și anumite funcții de intrare/ieșire. Greg Kroah-Hartman, responsabil pentru suportul versiunii stabile a nucleului Linux, a caracterizat starea actuală în cererea de modificare pentru actualizarea driverelor din nucleul 6.14 ca fiind „aproape gata pentru scrierea unui driver real în Rust”.
Sursa: opennet.ro
