Nova: Novi Rust drajver za NVIDIA GPU dolazi na Linux 6.15

Nova, Rust

Prije godinu dana objavio je Red Hatna njihov rad na novom open source drajveru za upravljanje NVIDIA GPU-ovima na Linux sistemima,Novo». Za razliku od svog prethodnika, Nouveaua, Nova se oslanja na delegiranje operacija inicijalizacije i kontrole na GSP (GPU sistemski procesor) mikrokontroler integrisan u samu grafičku karticu.

I sada, za nekoliko mjeseci (za razliku od drugih novih projekata), čini se da je drajver stekao dovoljno zrelosti da bude predložen kao skup zakrpa koje će se integrirati u jezgro Linuxa 6.15, što je početna verzija drajvera na Linuxu.

Nova, jeste dizajniran kao Linux kernel modul, koji se oslanja na DRM podsistem za upravljanje interakcijom sa GPU-om iz korisničkog prostora. Njegov razvoj se vidi kao evolucija Nouveau-a, s ključnom razlikom što je isključivo usmjeren na GPU-ove sa GSP firmverom, koji pokriva modele iz NVIDIA GeForce RTX 2000 serije zasnovane na Turing mikroarhitekturi.

Razlike sa Nouveauom 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čavanje koda. Za razliku od Nouveaua, Nova koristi NVIDIA GSP firmver kako bi pojednostavila inicijalizaciju i kontrolu GPU-a, smanjujući složenost koda i eliminišući potrebu za rukovanjem starijim karticama.

Kod Nove napisano je u Rustu, jezik koji ne samo da poboljšava sigurnost minimiziranjem grešaka u upravljanju memorijom, već i omogućava kreiranje slojeva za višekratnu upotrebu i apstrakcija za razvoj drugih drajvera.

Projekat Podržavaju ga razne paralelne inicijative, kao što je rust-device za kreiranje drajvera, rust-pci za interakciju sa PCI sabirnicom i rust-drm za integraciju sa DRM i GEM podsistemima. Ovi alati se takođe koriste u razvoju drm-asahi, Rust drajvera za Apple M1 i M2 GPU, što sugeriše konvergenciju u infrastrukturi grafičkih drajvera napisanih u Rustu.

Upotreba jezika Rđa u ovom razvoju nije slučajnost, budući da Rust nudi mehanizme koji olakšavaju pregled i refaktorisanje, što doprinosi većoj stabilnosti projekta. Usvajanje ovog jezika u Linux kernelu je odgovor na širu strategiju koja nastoji da modernizuje pisanje modula i učini razvoj pristupačnijim novim suradnicima.

Ovo nije jedini stalni napor da se Rust integriše u kernel. Drugi drajveri i sistemi se trenutno razvijaju na ovom jeziku, kao što su Apple AGX GPU drajver, podrška za NVMe skladište, PuzzleFS sistem datoteka i razne implementacije bezbednosti i upravljanja uređajima. Trend ka Rustu nastavlja da dobija zamah u Linux ekosistemu, označavajući značajan pomak u načinu na koji se bezbednost i stabilnost rešavaju u razvoju kernela operativnog sistema.

Faze implementacije

Trenutno, Nova je u prvoj fazi implementacije, ugrađena nova-core, modul sa približno 400 linija koda koji uspostavlja apstrakcije neophodne za komunikaciju sa GSP firmverom. Uz nova-core, dodane su i bitne veze za integraciju sa NVIDIA firmverom.

Vrijedi napomenuti da, Nova je prvobitno bila planirana za Linux 6.14 sa modulom nova-core koji se sastoji od 232 linije koda, ali na kraju nije bio 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 kontroler preći na sljedeće faze u koji se planira dodati:

  • nova-drm: drajver DRM (Direct Rendering Manager) za upravljanje interakcijom sa GPU-om iz korisničkog prostora.
  • VFIO sa vGPU menadžerom: će omogućiti korištenje NVIDIA virtuelnih GPU-a u virtualizacijskim okruženjima.

Na kraju, važno je pojasniti da Nova eU svom trenutnom stanju, on nije funkcionalni kontroler i to zakrpe su poslane Oni su samo osnova za početak razvoja kontrolera, odnosno koda koji će postaviti temelje budućeg razvoja.