PV-IOMMU, Xen IOMMU paravirtualizacijski mehanizam

Xen logo

u objavili su programeri XCP-NG projekta Nedavno rade na novom projektu koji nosi ime «PV-IOMMU» i to omogućava gostujućim sistemima da pristupe ograničenim funkcijama IOMMU implementiranih kroz paravirtualizaciju u Xen okruženju.

U osnovi, PV-IOMMU obećava da će omogućiti Dom0 da koristi paravirtualizirani IOMMU, koji nudi nekoliko prednosti kao što su DMA zaštita za Dom0 i podrška za Linux VFIO.

Šta je IOMMU?

IOMMU poznat pod različitim nazivima u zavisnosti od proizvođača (VT-d u Intelu, AMD-Vi u AMD-u, SMMU u ARM-u, između ostalih), Radi se o posebnom uređaju koji je implementiran čija je glavna funkcija prevesti ili filtrirati DMA zahtjeve (Direktni pristup memoriji) sa uređaja u fizičku memoriju uređaja. U virtuelizaciji se koristi da omogući gostujućim sistemima da direktno pristupe perifernim uređajima kao što su Ethernet adapteri, grafičke kartice i kontroleri za skladištenje podataka.

Koje su prednosti IOMMU paravirualizacije?

Ranije Xen hipervizor je koristio IOMMU za preusmjeravanje pristupa PCI uređaja i kontrolirati pristup tih uređaja memoriji. Kako god, Iz razloga stabilnosti i sigurnosti, gosti nisu mogli direktno pristupiti IOMMU bloku koje obezbeđuje hardver.

Predstavljamo novi paravirtualizovani IOMMU jednostavno nazvan PV-IOMMU. U osnovi implementira karakteristike koje gost očekuje od IOMMU-a, apstrahujući sve unutrašnje detalje hardvera. U Xen-u smo dodali novi hiperpoziv za takve operacije (koji je HYPERVISOR_iommu_op) koji pruža različite IOMMU operacije koje gost može koristiti (ako je dozvoljeno).

Uprkos tome, bilo je moguće ponuditi interfejs gostu da vam omogući pristup IOMMU, koristeći pojednostavljenu Xen paravirtualiziranu infrastrukturu, dok skriva detalje hardvera niskog nivoa. Ovaj interfejs, nazvan PV-IOMMU, apstrahuje sve unutrašnje detalje hardvera i obezbeđuje skup IOMMU operacija kojima gost može da pristupi, ako je dozvoljeno. Operacije u PV-IOMMU su izložene kao podoperacije u hiperpozivu HYPERVISOR_iommu_op i dizajnirane su na način koji je pogodan za gosta.

Jedna od glavnih karakteristika koje domaćin očekuje od IOMMU-a je mogućnost kreiranja i modifikacije "IOMMU domena" koji je skup prijevoda koji čine memorijski kontekst i koji se mogu primijeniti na uređaj (ili više uređaja). Ove domene se u Xen-u nazivaju "IOMMU konteksti" kako bi se izbjegla zabuna sa Xen domenima koji su virtuelne mašine.

Među različitim prednostima koje se ističu od IOMMU paravirtualizacije, spominju se sljedeće:

  • DMA zaštita za Dom0: IOMMU paravirtualizacija omogućava zaštitu direktnog pristupa memoriji (DMA) za domen upravljanja (Dom0) u virtualizacijskim okruženjima. Ovo pomaže poboljšanju sigurnosti i stabilnosti sistema sprečavanjem uređaja da direktno pristupaju sistemskoj memoriji, što bi moglo ugroziti integritet Dom0.
  • Linux VFIO podrška: IOMMU paravirtualizacija olakšava podršku virtueliziranoj fleksibilnoj I/O infrastrukturi za korisničke uređaje (VFIO) u virtualizacijskim okruženjima, omogućavajući korisničkim aplikacijama i virtuelnim mašinama direktan pristup hardverskim uređajima.
  • Olakšava implementaciju SPDK-a sa Xen-om: IOMMU paravirtualizacija je također dio tekućih napora da se podrži SPDK sa Xen-om. Ovo otvara vrata novom brzom putu podataka za skladištenje virtuelnih mašina, što potencijalno može povećati performanse skladištenja u virtuelizovanim okruženjima.

Pored toga, takođe planirano je da se jedan od Xenovih problema riješi sa IOMMU, od trenutnoili dozvoljava postojanje više IOMMU konteksta u jednoj Xen domeni. Međutim, razmatra se redizajn Xen IOMMU podsistema kako bi se uzeli u obzir višestruki IOMMU konteksti i modifikovali postojeće karakteristike kako bi se one koristile. Iako je implementiran funkcionalni PoC koji implementira prvi pristup, uz određena ograničenja i nepotpunu podršku, spominje se da se radi na potpunom redizajniranju podsistema za budućnost.

Na kraju, to treba spomenuti U trenutnoj fazi razvoja, PV-IOMMU podržava samo Intel VT-d, ali je planirano da se uskoro doda podrška za AMD-Vi i SMMUv3. Ako ste zainteresirani da saznate više o tome, možete pogledati detalje u sljedeći link.