Rust no Kernel: Nova atualização prepara terreno para drivers de GPU mais seguros

Rust e GPUs: Linux prepara o terreno para drivers de vídeo mais seguros e modulares!

Escrito por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...
  • Promoção merecida: O alocador de memória "Buddy", antes restrito ao DRM, foi promovido a um recurso genérico (gpu_buddy), permitindo seu uso por outros subsistemas como virtualização (VFIO).
  • Ponte entre mundos: Novos bindings permitem que o código escrito em Rust (seguro) interaja diretamente com o alocador de memória escrito em C (legado), fundamental para o novo driver nova-core.
  • Correção crítica: O patch inclui uma solução para um kernel panic que afetava drivers de GPU compilados diretamente no kernel (built-in), ajustando a ordem de inicialização.
  • Foco na Nvidia: Todo esse trabalho de infraestrutura visa dar suporte ao nova-core, o futuro driver de código aberto para GPUs Nvidia baseado em GSP e escrito em Rust.
  • Debate de upstream: A série mostra a complexidade de mesclar código híbrido, com partes em C indo para a árvore de gráficos e partes em Rust aguardando janelas específicas de merge.

Uma nova série de patches submetida por Joel Fernandes em 18 de fevereiro de 2026 marca um passo importante na integração da linguagem Rust no gerenciamento de memória de GPUs no Linux. O objetivo é preparar o kernel para o nova-core, um driver moderno para GPUs Nvidia, focado em segurança e modularidade.

A série v10 promove a reutilização de código e cria pontes (bindings) para que o “mundo C” (o kernel tradicional) e o “mundo Rust” (a nova linguagem segura) possam conversar e compartilhar recursos de memória.

Para o iniciante: o organizador de caixas foi promovido

Imagine que o kernel Linux é um grande armazém logístico. Existe um funcionário muito eficiente chamado “Buddy Allocator”, cuja função é organizar caixas (memória da placa de vídeo) de forma rápida, juntando caixas pequenas em grandes ou dividindo as grandes conforme a necessidade.

Até hoje, esse funcionário trabalhava trancado dentro do escritório do departamento de vídeo (DRM). Se outro departamento, como o de Máquinas Virtuais (VFIO), precisasse organizar caixas, não podia chamar o Buddy.

O que esse patch faz:

  1. Promoção: Tira o “Buddy” do departamento de vídeo e coloca sua mesa no corredor principal (drivers/gpu/buddy.c), para que qualquer departamento de GPU possa usar seus serviços.
  2. Tradutor: O patch ensina o Buddy a entender pedidos feitos em uma nova língua, o Rust. Isso é vital porque o novo gerente (o driver nova-core) só fala Rust para evitar erros de segurança.

Detalhes técnicos

A série de 8 patches realiza mudanças estruturais significativas:

  • GPU Buddy Allocator: O antigo drm_buddy foi movido para um nível superior e renomeado. Agora ele é um recurso genérico de GPU, não mais restrito ao subsistema DRM.
  • Interoperabilidade (FFI): Foram criados módulos em Rust para interagir com as listas ligadas do C (list_head), permitindo que estruturas de dados complexas sejam manipuladas com segurança através da fronteira das linguagens.
  • Correção de Inicialização: Um patch de Koen Koning resolveu um kernel panic que ocorria quando drivers de GPU eram compilados diretamente no kernel (built-in), garantindo que o alocador Buddy seja inicializado (subsys_initcall) antes que qualquer driver tente usá-lo.

Bastidores da discussão

A lista de e-mails revelou a complexidade de coordenar mudanças que tocam em várias áreas do kernel ao mesmo tempo:

  • Onde mesclar? Houve um debate sobre qual árvore de desenvolvimento deveria aceitar os patches. Joel sugeriu a árvore do Rust, mas Danilo Krummrich (mantenedor) alertou que isso atrasaria a inclusão. A decisão pendeu para a árvore drm-misc-next para o código C, enquanto o código Rust aguarda sincronização.
  • Confusão com Changelogs: Danilo cobrou, pela terceira vez, um histórico de mudanças (changelog) detalhado entre as versões dos patches. Joel admitiu que interpretava o termo de forma diferente (como um resumo do recurso) e prometeu corrigir isso nas próximas, oferecendo pagar uma cerveja a Danilo no próximo congresso (LPC) como penitência.
  • Separação de Funções: A série foi elogiada por limpar a arquitetura, removendo dependências desnecessárias (como a biblioteca drm_random que foi “eliminada” por Dave Airlie em favor de testes mais localizados).

Status

  • Versão: v10
  • Data: 18 de fevereiro de 2026
  • Situação: A parte de infraestrutura em C (gpu_buddy) já está sendo integrada pelos mantenedores do subsistema gráfico. A parte em Rust e o driver nova-core seguirão em séries subsequentes assim que esta base estiver sólida no kernel principal.
Compartilhe este artigo
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre GNU/Linux, Software Livre e Código Aberto, dedica-se a descomplicar o universo tecnológico para entusiastas e profissionais. Seu foco é em notícias, tutoriais e análises aprofundadas, promovendo o conhecimento e a liberdade digital no Brasil.