Os desenvolvedores da Igalia retomaram o trabalho nos syscalls FUTEX para melhorar o suporte do Steam em arquitetura ARM64, com novas patches de get_robust_list2 e set_robust_list2 que fortalecem a compatibilidade entre o kernel Linux e o emulador FEX. O projeto visa permitir que jogos x86 e x86_64 rodem com melhor desempenho em dispositivos ARM, incluindo o Steam Deck com processadores alternativos. Essas mudanças são cruciais para os planos de expansão da Valve em gaming portátil.
O que é FUTEX e por que a Valve se importa
FUTEX é um mecanismo do kernel Linux que sincroniza operações entre threads e processos. A sigla vem de “fast userspace mutex” — um primitivo de sincronização otimizado para evitar chamadas ao kernel desnecessárias. Quando vários processos precisam acessar o mesmo recurso, FUTEX garante que apenas um execute a tarefa por vez, sem travamentos ou race conditions.
Para a Valve, FUTEX é crítico porque o Steam Play roda jogos x86/x86_64 (originalmente escritos para processadores Intel e AMD) em arquiteturas ARM64, como a encontrada no Steam Deck. O emulador FEX traduz as instruções em tempo real. Sem otimizações de FUTEX, essa tradução fica lenta e consome muita bateria — problema inaceitável num dispositivo portátil.
As novas patches de FUTEX
A Igalia propôs duas novas chamadas de sistema: get_robust_list2 e set_robust_list2. Elas substituem versões antigas de FUTEX que tinham limitações de design — especialmente na forma como lidam com listas robustas de mutex em processos de 32 e 64 bits rodando em ARM64.
As patches adicionam:
- Suporte melhor a processos híbridos (32/64 bits coexistindo).
- Compatibilidade nativa com endereçamento de 64 bits em ARM sem conversão custosa.
- Menos overhead ao sincronizar threads em emulação.
Segundo o histórico, esse trabalho começou no ano passado. A comunidade do kernel rejeitou as primeiras versões, pedindo refinamentos. Agora a Igalia resubmeteu as patches com correções de design após meses de revisão.
Impacto no Steam e no gaming portátil
Esses syscalls FUTEX não são apenas ajustes técnicos menores. Como o PratiqueTech acompanha regularmente, otimizações no kernel têm efeito cascata em toda a stack — afetam FPS, consumo de bateria e tempo de resposta. Para jogadores no Steam Deck, a diferença entre FUTEX otimizado e não otimizado pode ser a diferença entre rodar um jogo a 60 FPS ou 45 FPS.
A Valve também estuda expandir Steam para outros dispositivos ARM — rumores apontam para um possível Steam Deck 2 com arquitetura ARM64 nativa. Consolidar o suporte de FUTEX agora facilita essa transição futura. Além disso, o FEX emulator não é só para Valve; projetos de código aberto como o Asahi Linux (que coloca Linux no Apple Silicon) também dependem de syscalls robustos de FUTEX.
Cronograma das patches
| Milestone | Status | |———–|——–| | Primeiro envio das patches | Rejeitado (2023) | | Revisão e refinamento | Em andamento | | Resubmissão com correções | Julho de 2024 | | Esperado — aceitação no kernel | Incerto (depende de reviewers) |
A aceitação de patches no kernel Linux não é garantida. Os maintainers podem pedir mais refinamentos, mais testes ou mudanças arquiteturais. Por isso a Igalia já sinalizou que essa pode ser uma jornada longa — talvez seis meses ou mais até ver FUTEX get_robust_list2 em uma versão estável do kernel.
Perguntas frequentes
Por que FUTEX é específico para ARM64 e não afeta x86?
Não é específico para ARM64. O FUTEX existe em todas as arquiteturas, mas as limitações das versões antigas impactam desproporcionalmente ARM64 em cenários de emulação. Em x86 rodando x86, o overhead é menor porque não há tradução de instruções — o processador executa nativamente.
O Steam Deck vai ganhar desempenho imediatamente após essas patches?
Não. As patches precisam ser aceitas, integradas numa versão do kernel, testadas e depois incorporadas à imagem do SteamOS. Isso leva meses. Usuários atuais do Steam Deck não verão benefício imediato.
Posso aplicar essas patches agora no meu Deck?
Apenas se você compilar um kernel customizado do zero — operação técnica que anula a garantia do dispositivo. Não recomendamos para usuários normais.
Essas mudanças afetam jogos nativos do Linux?
Sim, potencialmente. Qualquer aplicação que rode em ARM64 e use threads vai se beneficiar de FUTEX melhorado. Mas o ganho prático para aplicações nativas é menor que para emulação.
Se as patches forem rejeitadas novamente, qual é o plano B da Valve?
Provavelmente implementar workarounds no próprio FEX, emulando comportamento de FUTEX em userspace — solução mais lenta, mas viável.
Se você trabalha com emulação ou otimização de kernel em ARM, o Validador de JSON pode ajudar na leitura de logs e métricas de desempenho que frequentemente vêm em formato estruturado — útil para debugar comportamento de syscalls em seu próprio ambiente.
