Nova, o novo driver escrito em Rust da Red Hat para GPUs NVIDIA

nova

Nova, um novo driver de kernel Direct Rendering Manager (DRM) escrito em Rust

Desde que a Nvidia lançou seus módulos de kernel GPU como código aberto, parecia que tanto o driver proprietário da Nvidia quanto o driver de código aberto Nouveau teriam grandes melhorias com as contribuições que a comunidade poderia fazer e até mesmo isso em algum momento Nouveau poderia estar à altura da tarefa.

Depois de vários meses e O desenvolvimento do Nouveau irá desacelerar, a Red Hat tomou medidas sobre o assunto e recentemente anunciou a notícia de que está trabalhando no projeto Nova, que se apresenta como um novo driver aberto para GPUs NVIDIA que está sendo desenvolvido em Rust.

Este motorista inclui inicialização de GPU e operações de controle no firmware, usando um microcontrolador GSP independente. Nova foi projetado como um módulo para o kernel Linux e usa o subsistema DRM (Direct Rendering Manager). Este projeto é considerado uma continuação do desenvolvimento do driver Nouveau para GPUs com firmware GSP.

Danilo Krummrich (Red Hat) explica:

Com o Nova temos a oportunidade de reduzir significativamente a complexidade em comparação com o Nouveau, por dois motivos principais. Em primeiro lugar, a arquitetura histórica Nouveau, especialmente em torno do nvif/nvkm, é bastante complicada e inflexível e requer uma grande revisão para resolver alguns problemas. A seguir, também queremos aproveitar a oportunidade para contribuir com os esforços do Rust no kernel e nos beneficiar do aumento da segurança de memória oferecida pela linguagem de programação Rust.

Além disso, é mencionado que com o desenvolvimento da Nova, A Red Hat pretende aproveitar a oportunidade para contribuir com os esforços da Rust no kernel, já que como mencionado o código do driver é escrito em Rust e utiliza diversas camadas para desenvolver drivers de vídeo nesta linguagem. Por exemplo, o driver usa abstrações da ramificação Rust-Device para criar drivers, componentes da ramificação Rust-Pci para trabalhar com o barramento PCI e ligações para os subsistemas DRM e GEM da ramificação Rust-DRM.

Também é mencionado o desenvolvimento do driver drm-asahi Rust para GPUs de chip Apple M1 e M2. Espera-se que o uso do Rust aumente a segurança e confiabilidade do driver, reduzindo a probabilidade de erros ao trabalhar com memória e permitindo a combinação do trabalho no driver de vídeo com o desenvolvimento de componentes comuns no Rust.

O objetivo de Nova é eventualmente se tornará um driver de código aberto para NVIDIA Linux, voltado para GPUs Turing e modelos mais recentes (especialmente na série RTX 2000) que suportam GSP. Este novo controlador está sendo desenvolvido em Rust para obter maior leveza e flexibilidade, o que se apresenta como uma opção promissora.

Um as razões para criar um novo controlador é simplificar o processo em comparação com Nouveau, graças ao uso de drivers prontos para uso fornecidos pelo firmware GSP. Isso evita complexidade desnecessária no código do driver Nouveau, que precisa suportar GPUs NVIDIA mais antigas e introduz problemas como travamentos no código VMM/MMU. Ao desenvolver o Nova do zero e focar apenas em GPUs baseadas em GSP, espera-se evitar esses problemas e complicações.

Por outro lado, a Red Hat também menciona alguns dos pontos que precisa abordar, dizendo que com a escolha do Rust, o primeiro problema a resolver é a falta de abstrações de ligação C para infraestrutura de kernel ponta a ponta:

"por exemplo, abstrações de dispositivo/driver... precisamos de um usuário para as abstrações upstream, mas também precisamos das abstrações para criar um driver - queremos desenvolver o Nova upstream e começar com apenas um stub que faz uso apenas de algumas abstrações Rust Fundamentos.

finalmente se você está interessado em saber mais sobre o assunto, você pode verificar os detalhes No link a seguir, bem como consultar o desenvolvimento e consultar o código fonte deste em seu repositório.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.