Los desarrolladores del proyecto XCP-NG, que desarrolla una plataforma libre para implementar y gestionar la infraestructura en la nube, han presentado el proyecto PV-IOMMU, que permite a los sistemas invitados acceder a funcionalidades limitadas de IOMMU, implementadas utilizando la infraestructura de paravirtualización de Xen. En la práctica, PV-IOMMU se puede utilizar para implementar la protección DMA en Dom0 o para garantizar el soporte de la subsistema del núcleo de Linux VFIO. Anteriormente, el hipervisor Xen utilizaba IOMMU para la asignación de acceso a dispositivos PCI y limitar el acceso de los dispositivos a la memoria, pero por razones de estabilidad y seguridad, los sistemas invitados no podían acceder directamente al bloque IOMMU proporcionado por el hardware.
IOMMU es un bloque especializado de gestión de memoria que realiza la traducción de direcciones virtuales, visibles para el dispositivo de hardware, a direcciones físicas, permitiendo ejecutar y filtrar operaciones DMA por direcciones virtuales, así como limitar y aislar operaciones de entrada y salida. En el contexto de la virtualización, IOMMU permite que los sistemas invitados accedan directamente a dispositivos periféricos, como adaptadores Ethernet, tarjetas gráficas y controladores de dispositivos de almacenamiento. La implementación de IOMMU por parte de Intel se ofrece bajo el nombre de VT-d ("Virtualization Technology for Directed I/O"), AMD — AMD-Vi (I/O Virtualization), y ARM — SMMU (System Memory Management Unit).
La implementación paravirtualizada propuesta (PV-IOMMU) permite a los sistemas invitados utilizar las capacidades básicas de IOMMU, pero abstrae todos los detalles de hardware de bajo nivel. Se ha propuesto un nuevo hiperl llamado HYPERVISOR_iommu_op (análogo a las llamadas del sistema para hipervisores) para ser utilizado por los sistemas invitados para ejecutar operaciones de IOMMU. Entre otras cosas, los sistemas invitados ahora pueden crear y modificar dominios IOMMU (IOMMU domain), denominados en Xen contextos de IOMMU (IOMMU context) para evitar confusiones con el término "dominio" en Xen. Los contextos de IOMMU permiten organizar el acceso del sistema invitado a la memoria de los dispositivos y establecer operaciones de traducción de memoria aplicadas a uno o más dispositivos.
En la etapa actual de desarrollo, PV-IOMMU solo soporta la tecnología Intel VT-d, pero pronto se planea añadir soporte para AMD-Vi y SMMUv3.
Fuente: opennet.ru
