Há um ano a Red Hat anuncioupara seu trabalho em um novo driver de código aberto para gerenciar GPUs NVIDIA em sistemas Linux,Novo". Diferentemente de seu antecessor, o Nouveau, o Nova depende da delegação de operações de inicialização e controle a um microcontrolador GSP (GPU System Processor) integrado à própria placa de vídeo.
E agora, em questão de poucos meses (ao contrário de outros novos projetos), parece que o driver ganhou maturidade suficiente para ser proposto como um conjunto de patches a serem integrados ao kernel Linux 6.15, sendo esta a versão inicial do driver no Linux.
Nova, é isso projetado como um módulo do kernel Linux, que depende do subsistema DRM para gerenciar a interação com a GPU do espaço do usuário. Seu desenvolvimento é visto como uma evolução do Nouveau, com a principal diferença de ser voltado exclusivamente para GPUs com firmware GSP, que abrange modelos da série NVIDIA GeForce RTX 2000 baseados na microarquitetura Turing.
Diferenças com Nouveau e Vantagens de Nova
nova busca resolver problemas estruturais do Nouveau, o que requer uma grande reformulação em áreas como gerenciamento de memória (VMM/MMU) e bloqueios no código. Ao contrário do Nouveau, o Nova utiliza o firmware GSP da NVIDIA para simplificar a inicialização e o controle da GPU, reduzindo a complexidade do código e eliminando a necessidade de lidar com placas mais antigas.
O Código Nova está escrito em Rust, uma linguagem que não só melhora a segurança minimizando erros no gerenciamento de memória, mas também permite a criação de camadas e abstrações reutilizáveis para o desenvolvimento de outros drivers.
O projeto É apoiado por várias iniciativas paralelas, como o rust-device para criar drivers, rust-pci para interação com o barramento PCI e rust-drm para integração com subsistemas DRM e GEM. Essas ferramentas também estão sendo usadas no desenvolvimento do drm-asahi, o driver Rust para GPUs Apple M1 e M2, sugerindo uma convergência na infraestrutura de drivers gráficos escritos em Rust.
O uso da linguagem A ferrugem neste desenvolvimento não é coincidência, pois o Rust oferece mecanismos que facilitam a revisão e a refatoração, o que contribui para maior estabilidade do projeto. A adoção dessa linguagem no kernel Linux responde a uma estratégia mais ampla que busca modernizar a escrita de módulos e tornar o desenvolvimento mais acessível a novos colaboradores.
Este não é o único esforço contínuo para integrar o Rust ao kernel. Outros drivers e sistemas estão sendo desenvolvidos atualmente nesta linguagem, como o driver de GPU Apple AGX, suporte de armazenamento NVMe, o sistema de arquivos PuzzleFS e várias implementações de segurança e gerenciamento de dispositivos. A tendência em direção ao Rust continua ganhando força no ecossistema Linux, marcando uma mudança significativa na forma como a segurança e a estabilidade são abordadas no desenvolvimento do kernel do sistema operacional.
Fases de implementação
Atualmente, Nova está em sua primeira fase de implementação, incorporou o nova-core, um módulo com aproximadamente 400 linhas de código que estabelece as abstrações necessárias para se comunicar com o firmware GSP. Junto com o nova-core, links essenciais para integração com o firmware NVIDIA também foram adicionados.
Cabe mencionar que, O Nova foi inicialmente planejado para chegar no Linux 6.14 com um módulo nova-core consistindo de 232 linhas de código, mas no final não foi incluído porque Greg Kroah-Hartman mencionou alguns detalhes que precisava de polimento.
Com a nova confirmação de que agora será incluído, Agora o controlador passará para as próximas fases no qual está previsto adicionar:
- nova-drm: um driver DRM (Direct Rendering Manager) para gerenciar a interação com a GPU a partir do espaço do usuário.
- VFIO com gerenciador de vGPU: permitirá o uso de GPUs virtuais NVIDIA em ambientes de virtualização.
Por fim, é importante esclarecer que a Nova eEm seu estado atual, não é um controlador funcional e que o patches enviados Eles são apenas a base para iniciar o desenvolvimento do controlador, ou seja, é o código que estabelecerá as bases para o desenvolvimento futuro.