Houve muitos relatos na semana passada sobre o bug Bypass Translation Buffer (TLB) da AMD e seu impacto nos chips Opteron quad-core. De acordo com relatos da mídia estrangeira, a AMD está preparando um kernel para o conhecido Red Hat Enterprise Linux de 64 bits. como Atualização 4. Patches. Ao contrário das correções de BIOS (Basic Input Output System) e atualizações de microcódigo da AMD, que reduzem o desempenho em 10-20%, os patches do Linux apresentam uma perda de desempenho inferior a 1%. No entanto, também aprendemos que os usuários terão que assinar um acordo de confidencialidade para obter o patch.
Depois que a situação foi confirmada, a AMD divulgou o código-fonte do patch na lista de discussão x86-64.org. No entanto, este código é baseado na situação atual e não será modificado, com outro aviso de que não é totalmente adequado para sistemas convencionais:
Devido à poderosa natureza intrusiva deste patch e ao número muito pequeno de usuários afetados (você saberá disso se parte do seu sistema for afetado), não recomendamos o uso deste patch em sistemas Linux normais. Este patch não se destina a usuários comuns, nem é um produto Linux à venda! Este patch passou por testes funcionais mínimos. Cada usuário deve avaliá-lo antes do uso para garantir que atende aos padrões de qualidade necessários.
Em uma postagem publicada anteriormente na mesma lista de discussão, Elsie Wahlig, funcionária da AMD, também alertou que o patch “não é recomendado para produtos upstream”. Wahlig mencionou que o patch foi desenvolvido pelo grupo Operating System Research Center da AMD para Linux 2.6.23.8 e forneceu uma descrição detalhada do erro:
A descrição do erro 298 é a seguinte: "A operação do processador pode não ser atômica, alterando os bytes acessados ou sujos na entrada da tabela de tradução de páginas do endereço 0b para 1b no cache de segundo nível. Dentro de um pequeno intervalo de tempo, outras operações de cache pode fazer com que entradas inválidas da tabela de tradução de páginas sejam instaladas no cache L3 antes que os dados replicados modificados sejam retornados ao cache L2. Além disso, se a linha do cache for detectada durante esse intervalo, o processador não executará operações de cache não relacionadas ao acessar ou. bytes sujos e possivelmente dados errados O sistema pode reportar um erro de protocolo de cache de nível 3 por meio de um evento de detecção de máquina. o registro de endereço MC4 (MSR 0000_0412) será 26h ".
Wahlig descreveu como funciona o patch do Linux, que também ignora o espaço de trabalho do BIOS e emula “bytes acessados e sujos” para evitar que dados errados criem cabeçalhos de arquivos:
A solução de patch do kernel depende da causa raiz do problema de remoção do cache L2. O problema só é revelado quando o TLB precisa definir um bit A ou D em uma entrada da tabela de páginas. Se o TLB nunca precisar definir um bit A ou D, o erro não ocorrerá. Ao emular os bits A e D usando os bits atualmente graváveis, o patch garantirá que os bits A e D reais sejam frequentemente predefinidos. Isso é conseguido forçando uma página de erro quando uma página é acessada pela primeira vez para a qual o bit A de emulação não está definido, e quando uma página gravável é acessada pela primeira vez para gravação para a qual o bit D de emulação não está definido. Os bits A e D simulados são armazenados em registradores de bits, que geralmente estão disponíveis para o sistema operacional como entradas da tabela de páginas.
A AMD parou de lançar o patch em uma declaração mais diplomática do que o inicialmente esperado, mas a empresa não emitiu um “passe” para todos os usuários do Linux para evitar a perda de desempenho causada pela correção do BIOS.