William Roche, da Oracle, enviou uma correção importante para o subsistema de tratamento de erros de hardware (MCE) do kernel linux. O patch resolve uma falha crítica que causava o travamento completo (kernel panic) de máquinas virtuais (VMs) rodando em processadores AMD sob o QEMU/KVM. O problema ocorria especificamente durante a manipulação de “erros de memória adiados”, uma técnica usada para testar a resiliência do sistema a falhas de hardware.
A falha foi introduzida recentemente após uma tentativa de unificar os manipuladores de erros da AMD, mas não levou em conta que ambientes virtualizados podem não oferecer suporte a todos os recursos de hardware modernos.
Para o iniciante: o que é MCE e por que o sistema travava?
Imagine que o kernel do linux tem um “inspetor de segurança” interno chamado MCE (Machine Check Exception). A função dele é vigiar o processador e a memória em busca de fumaça (erros físicos). Se algo falha, o inspetor corre para um painel de controle para ler os detalhes do erro e tentar salvar o sistema.
O erro aqui era como se o inspetor tentasse abrir uma gaveta específica (um registro chamado MCA_DESTAT) que só existe em painéis de luxo novos (arquitetura SMCA da AMD). No entanto, em uma casa alugada (uma máquina virtual), esse painel é simplificado e a gaveta simplesmente não existe. Quando o inspetor tentava forçar a abertura dessa gaveta inexistente, ele entrava em pânico e desligava toda a casa para evitar um desastre imaginário, resultando no “Kernel panic”.
O que muda na prática: antes e depois do patch
A mudança foca na validação da presença do recurso antes de qualquer tentativa de acesso ao hardware virtualizado.
Detalhes técnicos e implementação
O problema técnico residia na função amd_clear_bank. Após o commit 7cb735d7c0cb, o código passou a tentar limpar o registro MCA_DESTAT para todos os erros adiados, mesmo aqueles registrados no status padrão. Em sistemas reais modernos da AMD, isso funciona bem, mas o QEMU/KVM muitas vezes emula arquiteturas mais simples onde esses registros não são mapeados.
O patch v2 introduz uma condicional robusta:
- O código agora verifica explicitamente a flag mce_flags.smca.
- O registro MCA_DESTAT só é limpo se o hardware for Scalable MCA.
- Garante que o registro MCA_STATUS continue sendo limpo corretamente para manter a compatibilidade com sistemas legados e máquinas virtuais.
Essa correção é vital para provedores de nuvem e desenvolvedores que utilizam injeção de erros de memória para validar softwares de alta disponibilidade, garantindo que o ambiente de teste seja tão estável quanto o hardware real.
Status de lançamento e disponibilidade
O patch foi enviado em 18 de fevereiro de 2026 e já recebeu o selo de revisão de Yazen Ghannam, mantenedor da AMD.
- Status atual: Enviado como v2 (revisado e aprovado em princípio).
- Previsão de lançamento: Deve ser integrado de forma prioritária ao ciclo do kernel 7.0-rcX e marcado para “backport” nas versões estáveis (LTS).
- Adoção: Usuários de Proxmox, AWS, Azure e Oracle Cloud que utilizam instâncias baseadas em AMD e kernels recentes serão os principais beneficiados pela correção automática via atualizações de segurança das distribuições.