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.