Rust no Kernel Linux 7.1: o plano da Red Hat para tornar a virtualização PCI à prova de falhas

Abstrações Rust para SR-IOV visam segurança em virtualização de alta performance no Kernel Linux!

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...
  • O patch introduz suporte nativo em Rust para SR-IOV, permitindo gerenciar funções virtuais PCI com segurança de memória.
  • A mudança foca em prevenir kernel panics ao evitar a remoção de drivers físicos enquanto houver funções virtuais ativas.
  • A proposta é de autoria de Peter Colberg, da Red Hat, e representa a terceira revisão técnica (v3) do código na LKML.
  • O código torna obrigatória a flag managed_sriov em drivers Rust, garantindo a limpeza automática de recursos de virtualização.
  • Status: Patch submetido para avaliação na LKML; expectativa de integração no ciclo do Kernel Linux 7.1.

O desenvolvedor Peter Colberg, da Red Hat, submeteu recentemente a terceira versão (v3) de uma série de patches que trazem abstrações da linguagem Rust para a funcionalidade Single Root I/O Virtualization (SR-IOV) em dispositivos PCI. O objetivo é permitir que drivers escritos em Rust gerenciem a criação de funções virtuais de hardware com as garantias de segurança de memória típicas da linguagem, impactando diretamente como as futuras versões do Kernel Linux lidarão com virtualização de alta performance.

A proposta introduz métodos para habilitar e desabilitar VFs (Virtual Functions), além de garantir que uma função física (PF) permaneça vinculada ao driver enquanto houver funções virtuais ativas. Essa mudança é um passo fundamental para tornar o subsistema Rust para Linux capaz de lidar com hardware de nível empresarial de forma nativa e segura.

O que isso significa na prática

A tecnologia SR-IOV permite que um único dispositivo físico PCI, como uma placa de rede de 100Gbps, seja dividido em várias “placas virtuais” menores que podem ser entregues diretamente a máquinas virtuais (VMs). Atualmente, a grande maioria desses drivers é escrita em C.

A introdução dessas abstrações em Rust significa que novos drivers de hardware poderão ser escritos com uma camada de proteção adicional contra erros de lógica de gerenciamento de dispositivos. O patch evita um problema crítico onde o sistema tenta remover o driver da placa física enquanto as placas virtuais ainda estão em uso, uma situação que costuma causar “kernel panic”. Para o administrador de sistemas, isso se traduz em servidores de nuvem mais resilientes.

Vale lembrar que, como acompanhamos anteriormente no SempreUpdate, a integração do Rust com o SR-IOV já é uma realidade em desenvolvimento para as GPUs Intel Xe3, mostrando que o kernel está pavimentando o caminho para uma virtualização de hardware mais robusta e segura em várias frentes.

Detalhes da implementação

O patch estende a trait pci::Driver em Rust utilizando o atributo #[vtable], adicionando o callback opcional sriov_configure. Esse callback é o que permite ao administrador do sistema alterar o número de funções virtuais escrevendo no arquivo sriov_numvfs via sysfs.

A implementação técnica introduz uma flag chamada managed_sriov na estrutura de drivers PCI do kernel. Enquanto em drivers C essa flag é opcional por questões de compatibilidade, nos novos drivers Rust ela é obrigatória. Isso garante que o Kernel Linux desabilite todas as funções virtuais automaticamente antes que o driver principal seja desconectado.

RecursoImplementação em CImplementação em Rust (Proposta)
Gerenciamento de SR-IOVManual/Opcional via managed_sriovObrigatório e automático
Acesso a dados da PFPonteiros brutos (Risco de Use-after-free)Referências seguras garantidas pelo compilador
Configuração sysfsImplementada via callback sriov_configureImplementada via Trait com suporte a VTable

Curiosidades e bastidores da discussão

Esta é a terceira revisão (v3) do código, o que demonstra um diálogo intenso entre os mantenedores de PCI e o time do Rust for Linux. Um ponto fascinante do debate na LKML é como o Rust está “forçando” melhorias no código C legiado: para garantir a segurança prometida pelo Rust, a infraestrutura PCI básica do kernel precisou ser levemente ajustada para suportar a flag managed_sriov.

O autor menciona que este trabalho se baseia em séries de patches anteriores de Danilo Krummrich, que buscam garantir que o dispositivo “pai” (PF) nunca desapareça enquanto um dispositivo “filho” (VF) estiver ativo. É a “fofoca técnica” da vez: o Rust não está apenas entrando no kernel, ele está reformatando as regras de segurança de subsistemas que existem há décadas.

Quando isso chega no meu PC?

O status atual é de proposta em revisão (v3). Como o Kernel Linux 7.0 já está no segundo Release Candidate (7.0-rc2), a janela para novas funcionalidades está fechada. Se aprovado nas próximas semanas, este código deve entrar na janela de mesclagem do Kernel Linux 7.1, prevista para meados de abril de 2026, chegando às distribuições estáveis (como Fedora, Ubuntu e Arch) no segundo semestre de 2026.

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.