Pular para o conteúdo

IOMMU

Referência de arquiteturaFeex

Uma IOMMU traduz e restringe acessos à memória originados por dispositivos. Seu comportamento de proteção e passthrough depende da topologia da plataforma, do firmware, do SO e da configuração de drivers.

O que você precisa saber

Uma IOMMU traduz e restringe acessos à memória originados por dispositivos. Seu comportamento de proteção e passthrough depende da topologia da plataforma, do firmware, do SO e da configuração de drivers.

Como funciona

Um dispositivo emite transações de DMA usando endereços interpretados por uma unidade de tradução de E/S. O SO ou hipervisor configura domínios e mapeamentos que associam essas solicitações à memória do sistema permitida. Identidades de dispositivos, limites de tradução compartilhados e tratamento de interrupções afetam o isolamento prático.

Onde é útil

Uma VM pode receber um dispositivo suportado por meio de uma estrutura que impõe seu grupo de isolamento IOMMU. Dispositivos que compartilham um grupo podem precisar ser atribuídos juntos porque a plataforma não consegue estabelecer isolamento independente no limite desejado.

Como verificar o suporte e a ativação

Inspecione a descrição de IOMMU da plataforma e o status ativado, grupos e requisitos de atribuição de dispositivos do SO/hipervisor. Na Intel, examine o VT-d; na AMD, use os recursos documentados de AMD I/O virtualization. Verifique o comportamento exato de redefinição e de driver do dispositivo.

Uma implantação virtualizada possui várias camadas: capacidade física, permissão do firmware, o hipervisor host ativo, capacidades expostas ao convidado e suporte do SO convidado. Verifique a camada em que a operação realmente é executada, incluindo virtualização aninhada quando relevante.

O que o recurso não estabelece

Uma flag de IOMMU não prova que todo periférico está isolado de forma independente ou que a proteção está ativa. Proteções de tabela de páginas da CPU isoladas não restringem todo o DMA de dispositivos. Substituições de topologia não suportadas podem enfraquecer o isolamento e não são uma correção de compatibilidade de rotina.

Compatibilidade e desempenho na prática

Execução de CPU, tradução de memória do convidado e remapeamento de DMA de dispositivos são recursos separados. Não deduza passagem direta ou isolamento a partir de um único campo de virtualização. Use os diagnósticos suportados do hipervisor e os requisitos exatos da plataforma/dispositivo.

Uma lista de verificação prática de verificação

  1. Registre o modelo exato do processador ou da plataforma e as versões envolvidas do aplicativo, SO e runtime. Mantenha o texto exato do erro ou requisito.
  2. Consulte a referência do fabricante para esse modelo exato e, em seguida, inspecione a capacidade efetiva e o estado ativado no ambiente em que o programa é executado.
  3. Compare cada requisito do binário ou backend selecionado. Um recurso com nome semelhante, alias ou rótulo genérico de tecnologia não é suficiente.
  4. Confirme se o aplicativo selecionou a implementação pretendida. Use seus diagnósticos documentados e um fallback suportado quando os requisitos não forem atendidos.
  5. Faça uma alteração suportada por vez e repita a mesma carga de trabalho. Mantenha a configuração original e o caminho de recuperação disponíveis.

Se o recurso estiver listado, mas o software não puder usá-lo

Comece pelo componente exato com falha. Um banco de dados de hardware descreve a capacidade registrada; o sistema operacional ou o hipervisor pode expor um ambiente efetivo diferente. Um erro de instrução ilegal também precisa de investigação da instrução falha real e da compilação do binário, porque corrupção ou uma instrução não suportada não relacionada pode produzir um sintoma semelhante.

Instale a versão do aplicativo, driver ou runtime suportada para a plataforma exata e use a compilação de linha de base ou fallback documentada do fornecedor, se necessário. Uma atualização de software não pode criar uma instrução que o processador não possui. As alterações de firmware e de política de segurança devem seguir o procedimento do fabricante do sistema e um plano de recuperação em vez de uma receita genérica de otimização.

Fontes e escopo desta explicação

Intel Virtualization Technology for Directed I/O Architecture Specification · Kernel do Linux: acesso a dispositivos VFIO e grupos IOMMU

Essas referências estabelecem o comportamento arquitetural e os requisitos de software. Elas não verificam de forma independente cada valor de recurso em uma página de modelo de hardware vinculada. Para obter suporte a modelos, use a evidência do fabricante dessa página e verifique a configuração efetiva do sistema. Este artigo não fornece um benchmark, certificação ou data de análise independente.

Fontes e verificação

Propriedade editorial: Feex. Nenhuma data de revisão independente foi registrada. Como pesquisamos.

Este artigo foi útil?

Um sim ou não é suficiente. Escolha um motivo se desejar, ou adicione uma breve observação.

Este artigo foi útil?