Confira !
Se você tiver começado a desabilitar o Intel Hyper Threading em seus sistemas devido a preocupações de segurança devido a MDS / Zombieload e outras vulnerabilidades que fazem com que o HT pareça cada vez mais inseguro, você deve ter notado que seu sistema não reinicia corretamente após a hibernação. Felizmente, uma correção está a caminho.
Mais sistemas operacionais vêm adicionando opções ou até mesmo no front do BSD, considerando um padrão em torno de desabilitar o Hyper Threading por questões de segurança. No Linux, o HT / SMT está habilitado por padrão, mas agora há a nova opção de mitigations = conveniente (também concedida outras formas de desabilitar o HT / SMT anteriormente, agora apenas sob o guarda-chuva "mitigations") e mesmo com o caso do openSUSE onde foi adicionado mitigação / opções HT ao seu instalador. Se você decidiu desativar o Hyper Threading, a retomada após a hibernação pode ter problemas e, provavelmente, apenas reinicializar o sistema, em vez de retomar com êxito.
Essa retomada após o problema de hibernação quando o Hyper Threading está desabilitado é agora descoberto e um patch está pendente para o kernel da linha principal e retornando para o kernel Linux 4.19.
A correção é fazer backup de todos os encadeamentos do SMT durante o processo de continuação antes de deliná-los novamente. A mensagem de commit abaixo explica a questão peculiar em mais detalhes.
Nós sempre, não importa o que aconteça, temos que trazer irmãos x86 HT durante a inicialização pelo menos uma vez para evitar que o MCE deixe o sistema de joelhos. Isso significa que sempre que 'nosmt' é fornecido na linha de comando do kernel, todos os irmãos HT ficam como resultado no mwait ou no cpudile depois de passar pelo ciclo online-offline pelo menos uma vez.
Isso causa um problema sério, embora quando um kernel, que viu 'nosmt' em sua linha de comando, execute um retorno da hibernação: se o resumo da imagem hibernada for bem-sucedido, o cr3 será invertido para apontar para o espaço de endereço do kernel que está sendo retomado, o que, por sua vez, significa que todos os irmãos HT estão, de repente, esperando no endereço que não é mais válido.
Isso resulta em falha tripla logo após a mudança de cr3 e reinicialização da máquina.
Corrigir isso sempre acordando todos os irmãos SMT antes de iniciar o processo 'restaurar da hibernação'; isso garante que todos os irmãos HT sejam transportados corretamente para o kernel retomado aguardando em resume_play_dead (), e atuados apropriadamente depois disso, com base na configuração do kernel de destino. Simetricamente, o kernel reiniciado tem que empurrar os irmãos SMT para aguardar novamente no caso de ter SMT desativado; Isto significa que tem que on-line todos os irmãos quando retomar (para que eles saem do hlt) e desligue-os novamente para deixá-los atingir o mwait.
Fonte
Até a próxima !!
Nenhum comentário:
Postar um comentário