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
Источник: http://www.opennet.ru/opennews/art.shtml?num=61029