Por dois anos, vimos vários patches de código aberto em torno das instruções ENQCMD para os compiladores de código e o kernel do Linux. Este suporte para Enqueue Stores é parte do Data Streaming Accelerator da Intel, que vem com o Xeon escalável "Sapphire Rapids". Mas mesmo com Sapphire Rapids não sendo lançado até o final deste ano, o código do kernel Linux já mesclado está desabilitando à força o suporte a instruções ENQCMD, já que o suporte ao kernel atual é considerado "quebrado além do reparo" e precisará ser retrabalhado.
Nos últimos meses, os bits do kernel do Linux têm se reunido para o DSA (Data Streaming Accelerator) da Intel e a manipulação das instruções ENQCMD junto com o trabalho do kernel relacionado, como nos estados de supervisor do XSAVES .
O ENQCMD permite enviar atomicamente um descritor de trabalho para um dispositivo e explicado mais detalhadamente por meio da documentação do kernel e do PRM da Intel .
Embora o código tenha feito parte do kernel da linha principal, enviado hoje como parte das correções x86 / urgentes para Linux 5.13 agora é a desativação forçada do código de recurso ENQCMD / ENQCMDS no kernel.
O patch de desabilitação forçada do suporte ao recurso ENQCMD explica, "Ao digerir os horrores relacionados ao XSAVE que foram introduzidos com a divisão supervisor / usuário, a recente adição de funcionalidade relacionada ao ENQCMD entrou no radar e acabou sendo quebrada de forma semelhante ... [Quando invocado por meio de uma chamada de função SMP do IOMMU / Código SMV] está quebrado além do reparo. O comentário no código afirma que é seguro invocar isso em um IPI, mas isso é apenas ilusão ... O commit ofensivo não é revertido de forma limpa, mas é suficiente para forçar a desabilitação de X86_FEATURE_ENQCMD e remover o código update_pasid () quebrado para tornar isso disfuncional em todo o lugar. Qualquer coisa mais complexa exigiria mais cirurgia e nenhuma das funções relacionadas fora do código do núcleo x86 está descaradamente errada, portanto, removê-las seria um exagero. Como nada habilita o bit PASID no IA32_XSS MSR ainda,"
O patch enviado como parte das correções x86 / urgentes para Linux 5.13 resumiu-se como," Forçar desabilitar instruções ENQCMD [S] suportam e remover update_pasid () devido à proteção insuficiente contra modificação de estado FPU em um contexto de interrupção, entre outros horrores estaduais que estão sendo enfrentados no momento. Este limita a precipitação até a ativação adequada. "
É importante observar que aqui o problema é com o código do kernel (software) sendo quebrado em torno de ENQCMD / ENQCMDS, em vez do hardware ainda não lançado. O código enviado pela Intel para habilitar o suporte acabou por não ser perfeito enquanto já tendo trabalhado seu caminho para o kernel da linha principal e agora precisando ser desabilitado até que possa ser retrabalhado.
Veremos quanto tempo leva para que o código do kernel seja retrabalhado para que o recurso ENQCMD seja reativado. O Sapphire Rapids será lançado ainda este ano, mas dada a cadência de lançamento do kernel e o novo código de recurso sendo limitado aos períodos da janela de fusão, veremos como as estrelas se alinham se o suporte do Data Streaming Accelerator estiver pronto para entrar em lançar com o kernel principal ou, se agora, talvez haja alguns atrasos com o suporte Linux normalmente de primeira linha da Intel no lançamento.
O comentário de código que desativa ENQCMD simplesmente o coloca como "Desativar forçado porque está quebrado além do reparo." Isso foi enviado como um patch para a janela de mesclagem do Linux 5.13 atual, mas também foi copiado para a estável, portanto, também será desabilitado para a série estável do kernel atual do Linux nos próximos dias.
Até a próxima !!
Nenhum comentário:
Postar um comentário