Nos últimos anos, Linus Torvalds não teve tempo de escrever muito novo código original para o kernel do Linux, atualmente gerenciando principalmente desenvolvedores, fornecendo postagens de lista de discussão perspicazes e revisando o código para mesclar na árvore do kernel junto com tarefas relacionadas. Para o Linux 6.4, porém, ele conseguiu escrever um novo código.
Na semana passada, Linus Torvalds fundiu sua própria ramificação”x86-rep-insns”ao kernel para a janela de mesclagem do Linux 6.4. O foco no código de Torvalds para Linux 6.4 está na limpeza do código de cópia de memória x86. Ele explicou em a fusão do Git:
“Isso limpa muito do nosso código de cópia de memória x86, principalmente para acessos de usuários. Há muito tempo venho pressionando por suporte de microarquitetura para uma boa cópia e limpeza de memória, e tem sido visível em como o kernel tem usado agressivamente’rep movs’e’rep stos’sempre que possível.
E esse suporte de microarquitetura vem melhorando ao longo dos anos, a ponto de a CPU moderna ser a melhor opção para uma cópia de memória que se tornaria uma chamada de função (em vez de ser algo que pode ser simplesmente transformado em instruções’mov’individuais) agora é para inline a sequência de instruções de string.
No entanto, isso só faz sentido quando temos os marcadores modernos para isso: os recursos x86 FSRM e FSRS (“Fast Short REP MOVS/STOS”).
Portanto, isso limpa muito do nosso código histórico, elimina o uso do marcador herdado (“REP_GOOD”e”ERMS”) dos casos memcpy/memset e substitui com essa realidade moderna. Observe que REP_GOOD e ERMS acabam sendo usados ainda pelos casos grandes conhecidos (ou seja, cópia e limpeza de página).
A razão pela qual muito disso acaba sendo sobre acessos à memória do usuário é que os casos normais no kernel são feitos pelo compilador (__builtin_memcpy() e __builtin_memset()) e chegamos ao ponto em que podemos usar nossa instrução reescrevendo para inline aquelas que serão instruções de string precisará de algum suporte do compilador.
Por outro lado, as funções do acessador do usuário são totalmente controladas pelo código do kernel, portanto, podemos alterá-las arbitrariamente.”
A janela de mesclagem do Linux 6.4 permanece aberta até próximo fim de semana com mais código de recurso continuando a ser publicado.