Prije godinu dana Red Hat je najavionjihovom radu na novom upravljačkom programu otvorenog koda za upravljanje NVIDIA GPU-ovima na Linux sustavima,Novi". Za razliku od svog prethodnika, Nouveau, Nova se oslanja na delegiranje operacija inicijalizacije i upravljanja GSP (GPU System Processor) mikrokontroleru integriranom u samu grafičku karticu.
I sada, u roku od nekoliko mjeseci (za razliku od drugih novih projekata), čini se da je upravljački program stekao dovoljno zrelost da se predloži kao skup zakrpa koje će se integrirati u jezgru Linuxa 6.15, jer je ovo početna verzija upravljačkog programa za Linux.
Nova, jest dizajniran kao Linux kernel modul, koji se oslanja na DRM podsustav za upravljanje interakcijom s GPU-om iz korisničkog prostora. Njegov se razvoj smatra evolucijom Nouveaua, s ključnom razlikom što je isključivo usmjeren na GPU-ove s GSP firmwareom, koji pokriva modele iz NVIDIA GeForce RTX 2000 serije temeljene na Turing mikroarhitekturi.
Razlike u odnosu na Nouveau i prednosti Nove
Nova nastoji riješiti strukturne probleme Nouveaua, što zahtijeva veliku reviziju u područjima kao što su upravljanje memorijom (VMM/MMU) i zaključavanja koda. Za razliku od Nouveaua, Nova koristi NVIDIA GSP firmware za pojednostavljenje GPU inicijalizacije i kontrole, smanjujući složenost koda i eliminirajući potrebu za rukovanjem starijim karticama.
Nova šifra napisano je u Rustu, jezik koji ne samo da poboljšava sigurnost minimiziranjem pogrešaka u upravljanju memorijom, već također dopušta stvaranje višekratnih slojeva i apstrakcija za razvoj drugih pokretačkih programa.
Projekt Podržavaju ga razne paralelne inicijative, kao što je rust-device za izradu drajvera, rust-pci za interakciju s PCI sabirnicom i rust-drm za integraciju s DRM i GEM podsustavima. Ovi se alati također koriste u razvoju drm-asahi, Rust upravljačkog programa za Apple M1 i M2 GPU-ove, što sugerira konvergenciju u infrastrukturi grafičkih upravljačkih programa napisanih u Rustu.
Upotreba jezika Rust u ovom razvoju nije slučajnost, budući da Rust nudi mehanizme koji olakšavaju pregled i refaktoriranje, što doprinosi većoj stabilnosti projekta. Usvajanje ovog jezika u jezgri Linuxa odgovara široj strategiji koja nastoji modernizirati pisanje modula i učiniti razvoj pristupačnijim novim suradnicima.
Ovo nije jedini tekući pokušaj da se Rust integrira u kernel. Drugi upravljački programi i sustavi trenutno se razvijaju na ovom jeziku, kao što je Apple AGX GPU upravljački program, NVMe podrška za pohranu, sustav datoteka PuzzleFS i razne implementacije sigurnosti i upravljanja uređajima. Trend prema Rustu nastavlja dobivati zamah u Linux ekosustavu, označavajući značajan pomak u načinu na koji se sigurnost i stabilnost rješavaju u razvoju kernela operativnog sustava.
Faze implementacije
Trenutno, Nova je u prvoj fazi implementacije, ugrađen nova-core, modul s približno 400 redaka koda koji uspostavlja apstrakcije potrebne za komunikaciju s GSP firmwareom. Uz nova-core, dodane su i bitne poveznice za integraciju s NVIDIA firmwareom.
Vrijedi spomenuti da, Nova je isprva planirana da stigne na Linux 6.14 s nova-core modulom koji se sastoji od 232 linije koda, ali na kraju nije uključen jer je Greg Kroah-Hartman spomenuo neke detalje koje je trebalo polirati.
Uz novu potvrdu da će sada biti uključen, Sada će regulator prijeći na sljedeće faze u kojem se planira dodati:
- nova-drm: DRM (Direct Rendering Manager) upravljački program za upravljanje interakcijom s GPU-om iz korisničkog prostora.
- VFIO s vGPU upraviteljem: omogućit će korištenje NVIDIA virtualnih GPU-ova u virtualizacijskim okruženjima.
Na kraju, važno je pojasniti da Nova eU trenutnom stanju nije funkcionalni regulator i da je poslane zakrpe Oni su samo osnova za početak razvoja kontrolera, odnosno kod koji će postaviti temelje budućeg razvoja.