Разработчиците на проекта XCP-NG, които развиват свободна платформа за развертане и управление на облачната инфраструктура, представиха проекта PV-IOMMU, който позволява на гостуващите системи да получат достъп до ограничена функционалност на IOMMU, реализирана с инфраструктурата на паравиртуализацията Xen. На практика PV-IOMMU може да се използва за реализиране на защита на DMA в Dom0 или за осигуряване на поддръжка на подсистемата на ядрото Linux VFIO. По-рано хипервизорът Xen използваше IOMMU за пренасочване на достъпа до PCI устройства и ограничаване на достъпа на устройствата до паметта, но поради съображения за стабилност и сигурност, гостуващите системи не можеха да получават директен достъп до предоставяния от хардуера IOMMU блок.
IOMMU представлява специализиран блок за управление на паметта, който извършва преобразуване на виртуални адреси, видими за хардуерното устройство, във физически адреси, позволяващ изпълнение и филтриране на операции DMA по виртуални адреси, както и ограничаване и изолиране на операции за въвеждане-извеждане. В контекста на виртуализацията IOMMU позволява на гостуващите системи да получават директен достъп до периферни устройства, като Ethernet адаптери, графични карти и контролери за съхранение на данни. Реализацията на IOMMU от Intel се предоставя под името VT-d („Virtualization Technology for Directed I/O), от AMD — AMD-Vi (I/O Virtualization), а от ARM — SMMU (System Memory Management Unit).
Предложената паравиртуализирана реализация (PV-IOMMU) позволява на гостуващите системи да използват основните възможности на IOMMU, но абстрахира всички нискоуровневи хардуерни детайли. За включване в Xen е предложен нов хипервизорен повик (аналог на системен повик за хипервизори) HYPERVISOR_iommu_op, който гостуващите системи могат да използват за изпълнение на операции с IOMMU. Освен това, гостуващите системи вече могат да създават и изменят домейни IOMMU (IOMMU domain), наречен в Xen контексти IOMMU (IOMMU context), за да се избегне объркване с термина "домен" в Xen. Контекстите IOMMU позволяват организиране на достъпа на гостуващата система до паметта на устройствата и задаване на операции за преобразуване на паметта, които се прилагат към едно или повече устройства.
На текущата фаза на развитие, PV-IOMMU поддържа само технологията Intel VT-d, но в близко бъдеще се планира добавяне на поддръжка за AMD-Vi и SMMUv3
Източник: opennet.ru
