XCP-NG projekti arendajad, kes loovad avatud platvormi pilveinfrastruktuuri juurutamiseks ja haldamiseks, esitlesid PV-IOMMU projekti, mis võimaldab külg-süsteemidel kasutada piiratud IOMMU funktsioone, rakendades Xen'i paravirtuaalset infrastruktuuri. Praktikas saab PV-IOMMU-d kasutada DMA kaitse rakendamiseks Dom0-s või Linuxi tuuma VFIO alamsüsteemi toe tagamiseks. Varem kasutas Xen hüperviisor IOMMU-d PCI-seadmete juurdepääsu edastamiseks ja seadmete juurdepääsu piiramiseks mälule, kuid stabiilsuse ja turvalisuse kaalutlustel ei saanud külgsüsteemid otse IOMMU-põhisesse seadmesse saadud juurdepääsu kasutada.
IOMMU on spetsialiseeritud mälu juhtimisseade, mis teostab virtuaalsete aadresside, millega riistvara ühendus liigub, ja füüsiliste aadresside tõlkimise, võimaldades DMA toimingute täitmist ja filtreerimist virtuaalsete aadresside kaudu ning piiravate ja isoleerivate sisend-väljund toimingute läbiviimist. Virtualiseerimise kontekstis võimaldab IOMMU külgsüsteemidel otse suhelda periferiaseadmetega, nagu Ethernet-adapterid, graafikakaardid ja salvestusseadmete kontrollerid. Intel'i IOMMU teostus on tuntud nime all VT-d (Virtualization Technology for Directed I/O), AMD oma - AMD-Vi (I/O Virtualization) ning ARM-i oma - SMMU (System Memory Management Unit).
Pakutud paravirtuaalne teostus (PV-IOMMU) võimaldab külgsüsteemidel kasutada IOMMU põhiomadusi, kuid abstraheerib kõik madala taseme riistvaradetailid. Xen'i koostamisel on ette nähtud uus hüperkäsk (sarnane süsteemi kutsuva funktsiooni hüperviisoris) HYPERVISOR_iommu_op, mida külgsüsteemid saavad kasutada IOMMU toimingute sooritamiseks. Muuhulgas saavad külgsüsteemid nüüd luua ja muuta domeenid IOMMU (IOMMU domeen), Xen'is nimetatakse IOMMU kontekstideks (IOMMU context), et vältida segadust termini „domeen” kasutamisega Xen'is. IOMMU kontekstid võimaldavad külgsüsteemil pääseda seadmete mälu juurde ja määrata mälutõlke toimingud, mida rakendatakse ühele või mitmele seadmele.
Praeguses arenguetapis toetab PV-IOMMU ainult Intel VT-d tehnoloogiat, kuid peagi on plaanis lisada AMD-Vi ja SMMUv3 toe.
Allikas: opennet.ru
