Los ingenieros de Red Hat han propuesto la inclusión en el núcleo de Linux de un primer conjunto de parches que implementan el controlador Nova. Este controlador está diseñado para su uso con GPUs NVIDIA equipadas con firmware GSP, que se utilizan desde la serie NVIDIA GeForce RTX 2000 basada en la microarquitectura Turing. En estas GPUs, las operaciones de inicialización y gestión se implementan en el firmware y son realizadas por un microcontrolador GSP (GPU System Processor). Se espera que, a largo plazo, Nova reemplace al controlador Nouveau para GPUs compatibles con GSP.
El nuevo controlador está escrito en Rust y, dado que la infraestructura para desarrollar controladores en Rust aún se está desarrollando, el código de Nova se llevará a la base del núcleo progresivamente, a medida que surjan los envoltorios necesarios para el lenguaje Rust. En la primera etapa, se ha propuesto incluir en el núcleo el controlador 'nova-core', que consta de 232 líneas de código. Nova-core implementa un nivel básico de abstracciones sobre las interfaces de los firmwares GSP, y proporciona una API independiente de las versiones de firmware.
En la siguiente fase, se planea incluir en el núcleo el controlador DRM nova-drm (Direct Rendering Manager) para interactuar con las GPUs desde el espacio de usuario, así como un controlador VFIO con un gestor de vGPU, que permitirá el uso de GPUs virtuales NVIDIA en sistemas de virtualización.
La principal razón para promover el nuevo controlador Nova es la posibilidad de eliminar las complejidades inherentes al controlador Nouveau y lograr una simplificación significativa, gracias al uso de manejadores predefinidos proporcionados por el firmware GSP y desechando el peso de soportar GPUs antiguas. Nova también resolverá problemas arquitectónicos que en Nouveau requieren una reescritura significativa de la base de código, como los problemas de bloqueo en el código VMM/MMU. El lenguaje Rust se ha elegido para reducir la probabilidad de errores al trabajar con memoria, así como para combinar el trabajo en un controlador funcional con la creación de envoltorios y abstracciones para el desarrollo de controladores en Rust.

En cuanto al progreso de la adición de capacidades para el desarrollo de controladores en el núcleo de Linux utilizando el lenguaje Rust, se han aceptado enlaces de Rust para PCI, plataformas, Open Firmware, dispositivos de caracteres y algunas funciones de entrada/salida en la rama 6.14. Greg Kroah-Hartman, responsable del soporte de la rama estable del núcleo de Linux, en una solicitud de incorporación de cambios con la actualización de controladores para el núcleo 6.14, caracterizó el estado actual como "casi listo para escribir un controlador real en Rust".
Fuente: opennet.ru
