- 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:
- 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. - 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_buddyfoi 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-nextpara 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_randomque 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 drivernova-coreseguirão em séries subsequentes assim que esta base estiver sólida no kernel principal.
