Vývojáři projektu XCP-NG, který vytváří otevřenou platformu pro nasazení a správu cloudové infrastruktury, představili projekt PV-IOMMU. Ten umožňuje hostitelským systémům přístup k omezené funkčnosti IOMMU, realizované pomocí infrastruktury paravirtualizace Xen. V praxi může být PV-IOMMU aplikováno pro implementaci ochrany DMA v Dom0 nebo pro zajištění podpory subsystému jádra Linux VFIO. Dříve hypervizor Xen používal IOMMU k přímému přístupu k PCI zařízením a omezení přístupu zařízení k paměti, ale z důvodů stability a bezpečnosti nemohly hostitelské systémy přímo přistupovat k IOMMU bloku poskytovanému hardwarem.
IOMMU je specializovaný blok pro správu paměti, který provádí překlad virtuálních adres viditelných hardwarovým zařízením na fyzické adresy. To umožňuje provádět a filtrovat operace DMA podle virtuálních adres a také omezovat a izolovat operace vstupu a výstupu. V kontextu virtualizace IOMMU umožňuje hostitelským systémům přímý přístup k periferním zařízením, jako jsou ethernetové adaptéry, grafické karty a řadiče úložišť. Realizace IOMMU od společnosti Intel se nazývá VT-d („Virtualization Technology for Directed I/O), AMD – AMD-Vi (I/O Virtualization), a ARM – SMMU (System Memory Management Unit).
Navržená paravirtualizovaná realizace (PV-IOMMU) umožňuje hostitelským systémům využívat základní možnosti IOMMU, ale zároveň abstrahuje všechny nízkoúrovňové hardwarové detaily. Pro zařazení do Xen byl navržen nový hypercall (analog system call pro hypervizory) HYPERVISOR_iommu_op, který mohou hostitelské systémy používat k provádění operací IOMMU. Mezi jinými věcmi mohou nyní hostitelské systémy vytvářet a měnit domény IOMMU (IOMMU domain), nazývané v Xen kontexty IOMMU (IOMMU context), aby se předešlo záměně s termínem „domen“ v Xen. Kontexy IOMMU umožňují organizovat přístup hostitelského systému k paměti zařízení a stanovovat operace překladu paměti, které se aplikují na jedno nebo více zařízení.
V současné fázi vývoje podporuje PV-IOMMU pouze technologii Intel VT-d, ale brzy se plánuje přidání podpory pro AMD-Vi a SMMUv3.
Zdroj: opennet.ru
