Les développeurs du projet XCP-NG, qui développe une plateforme libre pour le déploiement et la gestion d'infrastructures cloud, ont présenté le projet PV-IOMMU, permettant aux systèmes invités d'accéder à une fonctionnalité IOMMU limitée, réalisée à l'aide de l'infrastructure de paravirtualisation Xen. En pratique, PV-IOMMU peut être utilisé pour mettre en œuvre une protection DMA dans Dom0 ou assurer le support du sous-système noyau Linux VFIO. Auparavant, l'hyperviseur Xen utilisait l'IOMMU pour transmettre l'accès aux périphériques PCI et limiter l'accès des dispositifs à la mémoire, mais pour des raisons de stabilité et de sécurité, les systèmes invités ne pouvaient pas accéder directement au bloc IOMMU fourni par le matériel.
L'IOMMU est un bloc de contrôle de mémoire spécialisé, effectuant la traduction des adresses virtuelles visibles par le dispositif matériel en adresses physiques, permettant d'exécuter et de filtrer les opérations DMA via des adresses virtuelles, ainsi que de limiter et d'isoler les opérations d'entrée-sortie. Dans le contexte de la virtualisation, l'IOMMU permet aux systèmes invités d'accéder directement aux périphériques, tels que les adaptateurs Ethernet, les cartes graphiques et les contrôleurs de stockage. L'implémentation IOMMU d'Intel est connue sous le nom de VT-d (Virtualization Technology for Directed I/O), AMD - AMD-Vi (I/O Virtualization), et ARM - SMMU (System Memory Management Unit).
La mise en œuvre paravirtualisée proposée (PV-IOMMU) permet aux systèmes invités d'utiliser les fonctionnalités de base de l'IOMMU, tout en abstraisant les détails matériels de bas niveau. Pour l'inclure dans Xen, un nouvel hyperappel (analogique aux appels système pour les hyperviseurs) HYPERVISOR_iommu_op a été proposé, que les systèmes invités peuvent utiliser pour effectuer des opérations IOMMU. Entre autres choses, les systèmes invités peuvent désormais créer et modifier domaines IOMMU (domaine IOMMU), appelés dans Xen contextes IOMMU pour éviter toute confusion avec le terme « domaine » dans Xen. Les contextes IOMMU permettent d'organiser l'accès d'un système invité à la mémoire des dispositifs et de définir les opérations de traduction de mémoire appliquées à un ou plusieurs dispositifs.
À ce stade du développement, PV-IOMMU ne supporte que la technologie Intel VT-d, mais le support d'AMD-Vi et de SMMUv3 est prévu prochainement.
Source : opennet.ru
