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

Nova, Rust

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.