Noticia Nova: El nuevo controlador Rust para GPU NVIDIA llegará en Linux 6.15

Nova,Rust


Hace un año que Red Hat anunciaba sus trabajos en un nuevo controlador de código abierto destinado a gestionar GPU NVIDIA en sistemas Linux, «Nova». A diferencia de su predecesor, Nouveau, Nova se basa en la delegación de las operaciones de inicialización y control a un microcontrolador GSP (procesador del sistema GPU) integrado en la propia tarjeta gráfica.

Y ahora, en cuestión de pocos meses (a diferencia de otros proyectos nuevos), tal parece que el controlador ha ganado la madures suficiente para ser propuesto como un conjunto de parches para ser integrado en el kernel de Linux 6.15, siendo esta la versión inicial del controlador en Linux.

Nova, está diseñado como un módulo del kernel de Linux, que se apoya en el subsistema DRM para gestionar la interacción con la GPU desde el espacio de usuario. Su desarrollo se plantea como una evolución de Nouveau, con la diferencia clave de que está orientado exclusivamente a GPU con firmware GSP, lo que abarca modelos desde la serie NVIDIA GeForce RTX 2000 basada en la microarquitectura Turing.

Diferencias con Nouveau y Ventajas de Nova​


Nova busca resolver problemas estructurales de Nouveau, que requiere una revisión importante en áreas como el manejo de memoria (VMM/MMU) y bloqueos en el código. A diferencia de Nouveau, Nova aprovecha el firmware GSP de NVIDIA para simplificar la inicialización y el control de la GPU, reduciendo la complejidad del código y eliminando la necesidad de manejar tarjetas más antiguas.

El código de Nova está escrito en Rust, un lenguaje que no solo mejora la seguridad al minimizar los errores en la gestión de memoria, sino que también permite la creación de capas y abstracciones reutilizables para el desarrollo de otros controladores.

El proyecto se apoya en diversas iniciativas paralelas, como rust-device para la creación de drivers, rust-pci para la interacción con el bus PCI y rust-drm para la integración con los subsistemas DRM y GEM. Estas herramientas también están siendo empleadas en el desarrollo de drm-asahi, el controlador Rust para las GPU Apple M1 y M2, lo que sugiere una convergencia en la infraestructura de controladores gráficos escritos en Rust.

El uso del lenguaje Rust en este desarrollo no es casualidad, ya que Rust ofrece mecanismos que facilitan la revisión y refactorización, lo que contribuye a una mayor estabilidad del proyecto. La adopción de este lenguaje en el kernel de Linux responde a una estrategia más amplia, que busca modernizar la escritura de módulos y hacer más accesible el desarrollo para nuevos contribuyentes.

Este no es el único esfuerzo en curso para la integración de Rust en el kernel. Actualmente, se están desarrollando otros controladores y sistemas en este lenguaje, como el controlador para GPUs Apple AGX, el soporte para almacenamiento NVMe, el sistema de archivos PuzzleFS y diversas implementaciones relacionadas con la seguridad y la administración de dispositivos. La tendencia hacia Rust sigue ganando impulso en el ecosistema de Linux, marcando un cambio significativo en la forma en que se abordan la seguridad y la estabilidad en el desarrollo del núcleo del sistema operativo.

Fases de implementación​


Actualmente, Nova se encuentra en su primera fase de implementación, incorporada nova-core, un módulo con aproximadamente 400 líneas de código que establece las abstracciones necesarias para comunicarse con el firmware GSP. Junto con nova-core, también se han añadido enlaces esenciales para la integración con el firmware de NVIDIA.

Cabe mencionar que, Nova estaba previsto para llegar de manera inicial en Linux 6.14 con un módulo de nova-core compuesto por 232 líneas de código, pero al final no se incluyó debido a que Greg Kroah-Hartman menciono algunos detalles que se necesitaban pulir.

Con la nueva confirmación de que ahora si será incluido, ahora el controlador pasara a trabajar en las siguientes fases en las cuales se planea añadir:

  • nova-drm: un controlador DRM (Direct Rendering Manager) para gestionar la interacción con la GPU desde el espacio de usuario.
  • VFIO con administrador vGPU: permitirá el uso de GPU virtuales de NVIDIA en entornos de virtualización.

Finalmente, es importante aclarar que Nova en su estado actual, no es un controlador funcional y que los parches enviados solo son la base para el inicio del desarrollo del controlador, es decir, es que es el código que sentara las bases para el futuro desarrollo.

Continúar leyendo...