Os desenvolvedores do projeto XCP-NG anunciaram Recentemente, eles estão trabalhando em um novo projeto que tem o nome «PV-IOMMU» e isso permite que sistemas convidados acessem funções limitadas do IOMMU implementadas através de paravirtualização no ambiente Xen.
Basicamente, PV-IOMMU promete permitir que Dom0 use um IOMMU paravirtualizado, que oferece diversas vantagens como proteção DMA para Dom0 e suporte para Linux VFIO.
O que é o IOMMU?
IOMMU conhecido por nomes diferentes dependendo do fabricante (VT-d em Intel, AMD-Vi em AMD, SMMU em ARM, entre outros), É um dispositivo especial implementado cuja principal função é traduzir ou filtrar solicitações de DMA (Acesso direto à memória) dos dispositivos para a memória física da máquina. Na virtualização, é usado para permitir que sistemas convidados acessem diretamente dispositivos periféricos, como adaptadores Ethernet, placas gráficas e controladores de armazenamento.
Que benefícios são obtidos com a paravirualização do IOMMU?
anteriormente, o hipervisor Xen usou IOMMU para redirecionar o acesso de dispositivos PCI e controlar o acesso desses dispositivos à memória. Porém, Por razões de estabilidade e segurança, os convidados não puderam acessar diretamente o bloco IOMMU fornecido pelo hardware.
Apresentamos um novo IOMMU paravirtualizado simplesmente chamado PV-IOMMU. Basicamente implementa os recursos que o convidado espera de um IOMMU, abstraindo todos os detalhes internos do hardware. No Xen, adicionamos uma nova hiperchamada para tais operações (que é HYPERVISOR_iommu_op) que fornece várias operações IOMMU que o convidado pode usar (se permitido).
Apesar disto, foi possível oferecer uma interface ao hóspede para permitir que você acesse o IOMMU, usando uma infraestrutura paravirtualizada Xen simplificada, enquanto oculta detalhes de hardware de baixo nível. Essa interface, chamada PV-IOMMU, abstrai todos os detalhes internos do hardware e fornece um conjunto de operações do IOMMU que o convidado pode acessar, se permitido. As operações em PV-IOMMU são expostas como suboperações na hiperchamada HYPERVISOR_iommu_op e são projetadas de maneira conveniente para o convidado.
Uma das principais características que o host espera de um IOMMU é a capacidade de criar e modificar "Domínios IOMMU" que é um conjunto de traduções que contextualizam a memória e que podem ser aplicadas a um dispositivo (ou vários dispositivos). Esses domínios são chamados de “Contextos IOMMU” no Xen para evitar confusão com domínios Xen que são máquinas virtuais.
Entre os diversos benefícios que se destacam da paravirtualização do IOMMU, são mencionados os seguintes:
- Proteção DMA para Dom0: A paravirtualização IOMMU permite proteção de acesso direto à memória (DMA) para o domínio de gerenciamento (Dom0) em ambientes de virtualização. Isso ajuda a melhorar a segurança e a estabilidade do sistema, evitando que os dispositivos acessem diretamente a memória do sistema, o que poderia comprometer a integridade do Dom0.
- Suporte Linux VFIO: A paravirtualização IOMMU facilita o suporte para infraestrutura de E/S flexível virtualizada para dispositivos de usuário (VFIO) em ambientes de virtualização, permitindo que aplicativos de usuário e máquinas virtuais acessem diretamente dispositivos de hardware.
- Facilita a implementação do SPDK com Xen: A paravirtualização do IOMMU também faz parte de um esforço contínuo para apoiar o SPDK com o Xen. Isso abre a porta para um novo caminho rápido de dados para armazenamento de máquinas virtuais, que pode potencialmente aumentar o desempenho do armazenamento em ambientes virtualizados.
Além disso, também um dos problemas de Xen está planejado para ser resolvido com a IOMMU, já que atualmenteou permite a existência de múltiplos contextos IOMMU em um único domínio Xen. No entanto, um redesenho do subsistema Xen IOMMU está sendo considerado para dar conta de vários contextos IOMMU e modificar os recursos existentes para fazer uso deles. Embora tenha sido implementado um PoC funcional que implementa a primeira abordagem, com certas limitações e suporte incompleto, é mencionado que um redesenho completo do subsistema está sendo trabalhado para o futuro.
Finalmente, deve ser mencionado que Na atual fase de desenvolvimento, o PV-IOMMU suporta apenas Intel VT-d, mas o suporte para AMD-Vi e SMMUv3 está planejado para ser adicionado em breve. Se você estiver interessado em saber mais sobre o assunto, pode consultar os detalhes no link a seguir