“Sessão de debug do inferno”: Linus Torvalds usa IA para corrigir bug no driver Intel Xe

Linus Torvalds usou inteligência artificial para ajudar a encontrar um bug no driver gráfico Intel Xe que provocava corrupção de memória e podia deixar o Linux com a tela preta. A solução acabou sendo quase trivial: trocar round_up() por round_down() em uma linha de código. Encontrar essa linha, porém, exigiu 24 patches de depuração e 18 inicializações do kernel.

O criador do Linux descreveu a investigação como uma “sessão de debug do inferno” e afirmou que a IA foi de grande ajuda ao assumir parte do trabalho braçal. A experiência também teve um detalhe curioso: segundo Torvalds, a ferramenta afirmou várias vezes que o problema era impossível de resolver e sugeriu que eles simplesmente escrevessem um relatório sobre o caso.

Torvalds insistiu. A IA continuou adicionando código de depuração e analisando os resultados conforme solicitado. No fim, ele deu crédito à ferramenta e afirmou que até deixou a IA escrever a mensagem do commit.

Apenas 2 KiB de VRAM eram suficientes para causar o problema

O defeito estava no gerenciamento da VRAM pelo driver Xe. A função get_flat_ccs_offset() calculava onde começava uma região reservada ao armazenamento CCS, usada pelo hardware de compressão da GPU. O driver arredondava esse limite para cima em blocos de 128 KiB.

Esse arredondamento fazia uma pequena parte da memória reservada aparecer para o sistema como VRAM disponível.

Na máquina investigada por Torvalds, equipada com uma GPU Intel Battlemage G21 de 16 GiB, apenas os últimos 2 KiB de uma página acabavam indevidamente no conjunto de memória disponível para alocação. O problema surgia quando dados importantes eram colocados justamente nessa página.

Foi exatamente o que ocorreu. Uma tabela de páginas de uma máquina virtual do Mesa era alocada ali durante inicializações a frio. O hardware de compressão sobrescrevia parte dela, fazendo a primeira submissão do compositor falhar. O GDM então reiniciava repetidamente, deixando a máquina em uma tela preta apesar de o restante do sistema continuar funcionando. Reiniciar manualmente o GDM podia eliminar o sintoma porque as novas tabelas eram alocadas em outro lugar.

Torvalds também acredita que o mesmo defeito possa explicar corrupções gráficas aleatórias que havia observado anteriormente.

Correção troca round_up() por round_down()

A solução foi impedir que qualquer pedaço da região reservada ao CCS fosse entregue como VRAM utilizável. Para isso, o cálculo passou a arredondar o limite para baixo, respeitando o tamanho de página utilizado pelo alocador.

O patch foi registrado no commit 818bebeb63dd, com o título “drm/xe: Don’t hand out the flat CCS storage as usable VRAM”, e também foi marcado para inclusão nas versões estáveis do kernel.

O episódio deixa uma demonstração incomum de como Torvalds está usando IA no desenvolvimento do Linux: não como substituta da investigação técnica, mas como ferramenta para gerar instrumentação e analisar resultados. Neste caso, a máquina chegou a querer desistir antes do programador.

Ver Mais

William R. Plaza: Editor-chefe no Hardware.com.br, aficionado por tecnologias que realmente funcionam. Segue lá no Insta: @plazawilliam Elogios, críticas e sugestões de pauta: william@hardware.com.br
Postagem relacionada