Pred letom dni je Red Hat objavilnjihovemu delu na novem odprtokodnem gonilniku za upravljanje grafičnih procesorjev NVIDIA v sistemih Linux,novo». Za razliko od svojega predhodnika, Nouveau, se Nova zanaša na delegiranje operacij inicializacije in nadzora mikrokrmilniku GSP (GPU System Processor), ki je vgrajen v samo grafično kartico.
In zdaj, v nekaj mesecih (za razliko od drugih novih projektov), se zdi, da je gonilnik dovolj zrel, da ga lahko predlagamo kot nabor popravkov za integracijo v jedro Linuxa 6.15, saj je to začetna različica gonilnika za Linux.
Nova, je zasnovan kot modul jedra Linuxa, ki sloni na podsistemu DRM za upravljanje interakcije z GPE iz uporabniškega prostora. Njegov razvoj je zamišljen kot evolucija Nouveauja, s ključno razliko, da je namenjen izključno GPE z vdelano programsko opremo GSP, ki pokriva modele iz serije NVIDIA GeForce RTX 2000, ki temeljijo na mikroarhitekturi Turing.
Razlike z Nouveaujem in prednosti Nove
Nova poskuša rešiti strukturne probleme Nouveauja, ki zahteva temeljito prenovo na področjih, kot sta upravljanje pomnilnika (VMM/MMU) in ključavnice v kodi. Za razliko od Nouveauja Nova izkorišča vdelano programsko opremo NVIDIA GSP za poenostavitev inicializacije in nadzora GPE, zmanjšuje zapletenost kode in odpravlja potrebo po podpori starejših kartic.
Kodeks Nova napisano je v Rustu, jezik, ki ne le izboljšuje varnost z zmanjševanjem napak pri upravljanju pomnilnika, ampak tudi omogoča ustvarjanje slojev in abstrakcij za ponovno uporabo za razvoj drugih gonilnikov.
Projekt Podpirajo ga različne vzporedne pobude, kot je rust-device za ustvarjanje gonilnikov, rust-pci za interakcijo z vodilom PCI in rust-drm za integracijo s podsistema DRM in GEM. Ta orodja se uporabljajo tudi pri razvoju drm-asahi, gonilnika Rust za grafične procesorje Apple M1 in M2, kar kaže na konvergenco v infrastrukturi za grafične gonilnike, napisane v Rustu.
Uporaba jezika Rust v tem razvoju ni naključje, saj Rust ponuja mehanizme, ki olajšajo pregled in preoblikovanje, kar prispeva k večji stabilnosti projekta. Sprejetje tega jezika v jedru Linuxa je odziv na širšo strategijo, ki želi posodobiti pisanje modulov in narediti razvoj bolj dostopen novim sodelavcem.
To ni edino trenutno prizadevanje za integracijo Rusta v jedro. V tem jeziku se trenutno razvijajo drugi gonilniki in sistemi, kot so gonilnik Apple AGX GPU, podpora za shranjevanje NVMe, datotečni sistem PuzzleFS ter različne izvedbe za varnost in upravljanje naprav. Trend v smeri Rust še naprej pridobiva zagon v ekosistemu Linux, kar označuje pomemben premik v tem, kako se obravnava varnost in stabilnost pri razvoju jedra operacijskega sistema.
Faze izvajanja
Trenutno Nova je v prvi fazi izvajanja, vključen nova-core, modul s približno 400 vrsticami kode, ki vzpostavlja abstrakcije, potrebne za komunikacijo z vdelano programsko opremo GSP. Skupaj z nova-core so bile dodane tudi bistvene povezave za integracijo z vdelano programsko opremo NVIDIA.
Omeniti velja, da Sprva je bilo načrtovano, da bo Nova prišla na Linux 6.14 z modulom nova-core, sestavljenim iz 232 vrstic kode, vendar na koncu ni bil vključen, ker je Greg Kroah-Hartman omenil nekaj podrobnosti ki je bilo potrebno poliranje.
Z novo potrditvijo, da bo zdaj vključen, Zdaj bo krmilnik prešel na naslednje faze v katerem je predvideno dodati:
- nova-drm: gonilnik DRM (Direct Rendering Manager) za upravljanje interakcije z GPE iz uporabniškega prostora.
- VFIO z upraviteljem vGPU: bo omogočil uporabo virtualnih grafičnih procesorjev NVIDIA v virtualizacijskih okoljih.
Na koncu je pomembno pojasniti, da Nova eV trenutnem stanju ni funkcionalen krmilnik in da je poslanih popravkov So le osnova za začetek razvoja krmilnika, torej koda, ki bo postavila temelje za prihodnji razvoj.