Os engenheiros da Red Hat propuseram a inclusão no núcleo do Linux do primeiro conjunto de patches com a implementação do driver Nova. O driver é projetado para uso com GPUs NVIDIA equipadas com firmwares GSP, que são utilizados a partir da série NVIDIA GeForce RTX 2000 baseada na microarquitetura Turing. Nessas GPUs, as operações de inicialização e gerenciamento são realizadas no firmware por meio de um microcontrolador separado, o GSP (GPU System Processor). A expectativa é que, a longo prazo, a Nova substitua o driver Nouveau para GPUs com suporte a GSP.
O novo driver foi escrito na linguagem Rust e, como a infraestrutura para o desenvolvimento de drivers Rust ainda está em desenvolvimento, o código da Nova será transferido para o núcleo principal em etapas, à medida que as ligações necessárias para a linguagem Rust se tornem disponíveis. Na primeira fase, foi proposto para inclusão no núcleo o driver 'nova-core', composto por 232 linhas de código. O nova-core implementa um nível básico de abstrações sobre as interfaces de software dos firmwares GSP e fornece uma API independente das versões dos firmwares.
Na próxima fase, planeja-se incluir no núcleo o driver DRM nova-drm (Direct Rendering Manager) para interação com a GPU a partir do espaço do usuário, assim como um driver VFIO com um gerenciador de vGPU, permitindo a utilização de GPUs virtuais NVIDIA em sistemas de virtualização.
A principal razão para a promoção do novo driver Nova é a possibilidade de eliminar as complexidades associadas ao driver Nouveau e alcançar uma simplificação significativa, devido ao uso dos manipuladores prontos fornecidos pelo firmware GSP e à eliminação da necessidade de suporte a GPUs antigas. A Nova também permitirá resolver problemas arquitetônicos que no Nouveau exigem uma reestruturação significativa da base de código, como as questões de bloqueios no código VMM/MMU. A linguagem Rust foi escolhida para reduzir a probabilidade de erros ao trabalhar com memória, além de possibilitar a combinação do trabalho em um driver funcional com a criação de ligações e abstrações para o desenvolvimento de drivers em Rust.

Quanto ao progresso da adição de suporte ao desenvolvimento de drivers em Rust no núcleo do Linux, a ramificação 6.14 aceitou as ligações Rust para PCI, plataformas, Open Firmware, dispositivos de caractere e algumas funções de entrada/saída. Greg Kroah-Hartman, responsável pelo suporte à ramificação estável do núcleo Linux, descreveu o estado atual em um pull request com a atualização dos drivers para o núcleo 6.14 como "quase pronto para a escrita de um driver real em Rust."
Fonte: opennet.ru
