Nova: El nou controlador Rust per a GPU NVIDIA arribarà a Linux 6.15

Nova,Rust

Fa un any que Red Hat anunciavaals seus treballs en un nou controlador de codi obert destinat a gestionar GPU NVIDIA en sistemes Linux, «Nova». A diferència del seu predecessor, Nouveau, Nova es basa en la delegació de les operacions d'inicialització i control a un microcontrolador GSP (processador del sistema GPU) integrat a la pròpia targeta gràfica.

I ara, en qüestió de pocs mesos (a diferència d'altres projectes nous), tal sembla que el controlador ha guanyat la madures suficient per ser proposat com un conjunt de pegats per ser integrat al nucli de Linux 6.15, sent aquesta la versió inicial del controlador a Linux.

Nova, està dissenyat com un mòdul del nucli de Linux, que es recolza al subsistema DRM per gestionar la interacció amb la GPU des de l'espai d'usuari. El seu desenvolupament es planteja com una evolució de Nouveau, amb la diferència clau que està orientat exclusivament a GPU amb firmware GSP, cosa que abasta models des de la sèrie NVIDIA GeForce RTX 2000 basada en la microarquitectura Turing.

Diferències amb Nouveau i Avantatges de Nova

Nou cerca resoldre problemes estructurals de Nouveau, que requereix una revisió important en àrees com el maneig de memòria (VMM/MMU) i bloquejos al codi. A diferència de Nouveau, Nova aprofita el firmware GSP de NVIDIA per simplificar la inicialització i el control de la GPU, reduint la complexitat del codi i eliminant la necessitat de manejar targetes més antigues.

El codi de Nova està escrit a Rust, un llenguatge que no només millora la seguretat en minimitzar els errors en la gestió de memòria, sinó que també permet la creació de capes i abstraccions reutilitzables per al desenvolupament d'altres controladors.

El Projecte es recolza en diverses iniciatives paral·leles, com rust-device per a la creació de drivers, rust-pci per a la interacció amb el bus PCI i rust-drm per a la integració amb els subsistemes DRM i GEM. Aquestes eines també estan sent emprades en el desenvolupament de drm-asahi, el controlador Rust per a les GPU Apple M1 i M2, cosa que suggereix una convergència en la infraestructura de controladors gràfics escrits a Rust.

L'ús del llenguatge Rust en aquest desenvolupament no és casualitat, ja que Rust ofereix mecanismes que faciliten la revisió i refactorització, cosa que contribueix a una major estabilitat del projecte. L'adopció d'aquest llenguatge al nucli de Linux respon a una estratègia més àmplia, que cerca modernitzar l'escriptura de mòduls i fer més accessible el desenvolupament per a nous contribuents.

Aquest no és l'únic esforç en curs per a la integració de Rust al nucli. Actualment, s'estan desenvolupant altres controladors i sistemes en aquest llenguatge, com el controlador per a GPU Apple AGX, el suport per a emmagatzematge NVMe, el sistema d'arxius PuzzleFS i diverses implementacions relacionades amb la seguretat i l'administració de dispositius. La tendència cap a Rust continua guanyant impuls a l'ecosistema de Linux, marcant un canvi significatiu en la manera com s'aborden la seguretat i l'estabilitat en el desenvolupament del nucli del sistema operatiu.

Fases d'implementació

Actualment, Nova es troba a la primera fase d'implementació, incorporada nova-core, un mòdul amb aproximadament 400 línies de codi que estableix les abstraccions necessàries per comunicar-se amb el microprogramari GSP. Juntament amb nova-core, també s'han afegit enllaços essencials per a la integració amb el microprogramari de NVIDIA.

cal esmentar que, Nova estava previst per arribar de manera inicial a Linux 6.14 amb un mòdul de nova-core compost per 232 línies de codi, però al final no es va incloure pel fet que Greg Kroah-Hartman esmento alguns detalls que es necessitaven polir.

Amb la nova confirmació que ara si serà inclòs, ara el controlador passarà a treballar en les fases següents a les quals es planeja afegir:

  • nova-drm: un controlador DRM (Direct Rendering Manager) per gestionar la interacció amb la GPU des de lespai dusuari.
  • VFI amb administrador vGPU: permetrà lús de GPU virtuals de NVIDIA en entorns de virtualització.

Finalment, és important aclarir que Nova en el seu estat actual, no és un controlador funcional i que els pegats enviats només són la base per a l'inici del desenvolupament del controlador, és a dir, és que és el codi que assentara les bases per al desenvolupament futur.