Acum un an a anunțat Red Hatla munca lor la un nou driver open source pentru gestionarea GPU-urilor NVIDIA pe sisteme Linux,Nou". Spre deosebire de predecesorul său, Nouveau, Nova se bazează pe delegarea operațiunilor de inițializare și control la un microcontroler GSP (GPU System Processor) integrat în placa grafică în sine.
Și acum, în câteva luni (spre deosebire de alte proiecte noi), se pare că driverul a căpătat suficientă maturitate pentru a fi propus ca un set de patch-uri care să fie integrate în kernel-ul Linux 6.15, aceasta fiind versiunea inițială a driverului pe Linux.
Nova, este conceput ca un modul kernel Linux, care se bazează pe subsistemul DRM pentru a gestiona interacțiunea cu GPU din spațiul utilizatorului. Dezvoltarea sa este văzută ca o evoluție a Nouveau, diferența cheie fiind că este destinat exclusiv GPU-urilor cu firmware GSP, care acoperă modele din seria NVIDIA GeForce RTX 2000 bazată pe microarhitectura Turing.
Diferențele cu Nouveau și Avantajele Nova
Nova caută să rezolve problemele structurale ale Nouveau, care necesită o revizuire majoră în domenii precum managementul memoriei (VMM/MMU) și blocarea codului. Spre deosebire de Nouveau, Nova folosește firmware-ul GSP al NVIDIA pentru a simplifica inițializarea și controlul GPU-ului, reducând complexitatea codului și eliminând nevoia de a manipula carduri mai vechi.
Codul Nova este scris în Rugină, un limbaj care nu numai că îmbunătățește securitatea prin minimizarea erorilor în gestionarea memoriei, dar permite și crearea de straturi și abstracții reutilizabile pentru dezvoltarea altor drivere.
Proiectul Este susținut de diverse inițiative paralele, cum ar fi rust-device pentru crearea de drivere, rust-pci pentru interacțiunea cu magistrala PCI și rust-drm pentru integrarea cu subsistemele DRM și GEM. Aceste instrumente sunt, de asemenea, folosite în dezvoltarea drm-asahi, driverul Rust pentru GPU-urile Apple M1 și M2, sugerând o convergență în infrastructura driverelor grafice scrise în Rust.
Utilizarea limbajului Rugina în această dezvoltare nu este o coincidență, deoarece Rust oferă mecanisme care facilitează revizuirea și refactorizarea, ceea ce contribuie la o mai mare stabilitate a proiectului. Adoptarea acestui limbaj în nucleul Linux răspunde unei strategii mai ample care urmărește să modernizeze scrierea modulelor și să facă dezvoltarea mai accesibilă pentru noii contribuitori.
Acesta nu este singurul efort în curs de a integra Rust în nucleu. Alte drivere și sisteme sunt în prezent dezvoltate în acest limbaj, cum ar fi driverul Apple AGX GPU, suportul pentru stocare NVMe, sistemul de fișiere PuzzleFS și diverse implementări de securitate și management al dispozitivelor. Tendința către Rust continuă să câștige avânt în ecosistemul Linux, marcând o schimbare semnificativă în modul în care securitatea și stabilitatea sunt abordate în dezvoltarea nucleului sistemului de operare.
Fazele de implementare
În prezent, Nova este în prima fază de implementare, a încorporat nova-core, un modul cu aproximativ 400 de linii de cod care stabilește abstracțiile necesare comunicării cu firmware-ul GSP. Odată cu nova-core, au fost adăugate și legături esențiale pentru integrarea cu firmware-ul NVIDIA.
Merită menționat că, Nova a fost planificat inițial să ajungă pe Linux 6.14 cu un modul nova-core format din 232 de linii de cod, dar în final nu a fost inclus deoarece Greg Kroah-Hartman a menționat câteva detalii care avea nevoie de lustruire.
Cu noua confirmare că va fi acum inclus, Acum controlerul va trece la etapele următoare în care se plănuiește adăugarea:
- nova-drm: un driver DRM (Direct Rendering Manager) pentru a gestiona interacțiunea cu GPU din spațiul utilizatorului.
- VFIO cu manager vGPU: va permite utilizarea GPU-urilor virtuale NVIDIA în medii de virtualizare.
În cele din urmă, este important să clarificăm faptul că Nova eÎn starea sa actuală, nu este un controler funcțional și că patch-uri trimise Ele sunt doar baza pentru începerea dezvoltării controlerului, adică este codul care va pune bazele dezvoltării viitoare.