Inżynierowie z firmy Red Hat zaproponowali do włączenia do jądra Linux pierwszy zestaw patchy implementujących sterownik Nova. Sterownik jest przeznaczony do użycia z GPU NVIDIA wyposażonymi w firmware GSP, stosowanymi począwszy od serii NVIDIA GeForce RTX 2000 opartej na mikroarchitekturze Turing. W takich GPU operacje inicjalizacji i zarządzania są realizowane w firmware i wykonywane przez oddzielny mikrokontroler GSP (GPU System Processor). Zakłada się, że w dłuższej perspektywie Nova zastąpi sterownik Nouveau dla GPU z obsługą GSP.
Nowy sterownik został napisany w języku Rust i, ponieważ infrastruktura do opracowywania sterowników w Rust dopiero się rozwija, kod Nova ma być stopniowo przenoszony do głównego jądra w miarę pojawiania się potrzebnych powiązań dla języka Rust. Na pierwszym etapie do włączenia do jądra zaproponowano sterownik „nova-core”, składający się z 232 linii kodu. Nova-core realizuje podstawowy poziom abstrakcji nad interfejsami programowymi firmware GSP i oferuje API, niezależne od wersji firmware.
Na następnej etapie planuje się włączyć do jądra sterownik DRM nova-drm (Direct Rendering Manager) do interakcji z GPU z przestrzeni użytkownika, a także sterownik VFIO z menedżerem vGPU, umożliwiający wykorzystanie wirtualnych GPU NVIDIA w systemach wirtualizacji.
Głównym powodem promowania nowego sterownika Nova jest możliwość pozbycia się komplikacji związanych z sterownikiem Nouveau oraz osiągnięcie znaczącego uproszczenia dzięki wykorzystaniu gotowych obsług, dostarczanych przez firmware GSP i odrzuceniu ciężaru wsparcia starszych GPU. Nova pozwoli również rozwiązać problemy architektoniczne, które w Nouveau wymagają znacznej przebudowy kodu, takie jak problemy z blokadami w kodzie VMM/MMU. Język Rust został wybrany, aby zmniejszyć ryzyko popełnienia błędów podczas pracy z pamięcią, a także jako możliwość połączenia pracy nad działającym sterownikiem z tworzeniem powiązań i abstrakcji do opracowywania sterowników w Rust.

Jeśli chodzi o postęp w dodawaniu do rdzenia Linuxa możliwości tworzenia sterowników w języku Rust, do gałęzi 6.14 przyjęto powiązania Rust dla PCI, platform, Open Firmware, urządzeń symbolicznych oraz niektórych funkcji wejścia/wyjścia. Greg Kroah-Hartman, odpowiedzialny za wsparcie stabilnej gałęzi rdzenia Linuxa, w pull requeście z aktualizacją sterowników dla rdzenia 6.14 scharakteryzował obecny stan jako „prawie gotowość do pisania rzeczywistego sterownika w Rust.”
Źródło: opennet.ru
