Red Hat revela um driver 'Nova' baseado em Rust: um novo melhor para GPUs Nvidia

Red Hat revela um driver 'Nova' baseado em Rust: um novo melhor para GPUs Nvidia

Um driver Nvidia baseado em Rust? Parece emocionante!

O futuro do driver Nouveau parecia promissor depois que a NVIDIA lançou módulos de kernel de GPU de código aberto.

Enquanto isso refletia no progresso da Nouveau, o desenvolvimento desacelerou, especialmente, com o mantenedor da Nouveau renunciando no ano passado logo após habilitar o suporte a GSP (GPU System Processor) com a Nvidia.

E, parece agora que a equipe de drivers da Red Hat está de volta à pista com algo mais interessante: Nova, um substituto moderno para o Nouveau. Danilo Krummrich, engenheiro de software da Red Hat, anunciou o projeto em uma lista de discussão.

Nova: um driver baseado em Rust para a equipe verde

Nova é um driver GSP baseado em Rust para GPUs Nvidia. Pretende ser o sucessor do Nouveau quando estiver pronto.

Claro, uma das razões para a Red Hat pensar em um sucessor é porque o principal mantenedor do Nouveau renunciou.

Danilo mencionou que com este projeto eles querem trabalhar para um driver simplificado (mas moderno) quando comparado ao Nouveau:

Com o Nova vemos a chance de diminuir significativamente a complexidade do driver em comparação com o Nouveau por dois motivos. Primeiro, a arquitetura histórica do Nouveau, especialmente em torno de nvif/nvkm, é bastante complicada e inflexível e requer um grande retrabalho para resolver certos problemas (como bloquear a hierarquia no código VMM / MMU para VM_BIND atualmente sendo resolvido com uma solução alternativa) e segundo, com um driver somente GSP, não há necessidade de manter a compatibilidade com o código pré-GSP.

Além disso, a Red Hat parece estar constantemente trabalhando em mais código Rust e otimizações em suas ofertas Linux.

Então, não é uma surpresa para eles querer o driver construído com Rust agora que o kernel Linux está adicionando lentamente componentes Rust.

Claro, considerando como um projeto ambicioso, ele tem seus defeitos, o grande deles é:

Com a escolha de Rust, o primeiro problema a ser resolvido são as abstrações de ligação C ausentes para a infraestrutura integral do kernel (por exemplo, abstrações de dispositivo/driver). Como este é um pouco um problema de galinha e ovo - precisamos de um usuário para abstrações upstream, mas também precisamos das abstrações para criar um driver - queremos desenvolver Nova upstream e começar com apenas um stub de driver que só faz uso de algumas abstrações básicas de Rust.

Assim, a abordagem para o projeto será através de três ramificações primárias onde o driver Nova stub (um módulo) depende de PCI e ramificações de dispositivos.

Driver Nova

Você pode dar uma olhada no repositório hospedado na seção de desenvolvimento gráfico do kernel do Freedesktop.

Embora tudo isso pareça legal, é uma tarefa desafiadora para os desenvolvedores oferecer um driver completo baseado em Rust. Claro, os benefícios de segurança de memória, segurança e desempenho serão o resultado com esses projetos.

No entanto, quando e como isso acontece (sem qualquer inconveniente para a adoção) continua sendo um fator decisivo.

O driver Nouveau veio para ficar. E ele existirá para GPUs Nvidia mais antigas mesmo quando o driver Nova chegar como sucessor.

O que achou do driver Nova? Compartilhe sua opinião nos comentários abaixo!

Última atualização deste artigo: 22 de march de 2024