PV-IOMMU, paravirtualizační mechanismus Xen IOMMU

Logo Xen

L oznámili vývojáři projektu XCP-NG V poslední době pracují na novém projektu, který má název "PV-IOMMU" a to umožňuje hostujícím systémům přístup k omezeným funkcím IOMMU implementovaným prostřednictvím paravirtualizace v prostředí Xen.

V podstatě PV-IOMMU slibuje, že umožní Dom0 používat paravirtualizovanou IOMMU, který nabízí několik výhod, jako je ochrana DMA pro Dom0 a podpora pro Linux VFIO.

Co je IOMMU?

IOMMU známá pod různými názvy v závislosti na výrobci (mimo jiné VT-d v Intelu, AMD-Vi v AMD, SMMU v ARM), Jedná se o speciální implementované zařízení jehož hlavní funkcí je překládat nebo filtrovat požadavky DMA (Přímý přístup do paměti) ze zařízení do fyzické paměti stroje. Ve virtualizaci se používá k umožnění hostující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ště.

Jaké výhody přináší paraviralizace IOMMU?

Dříve, hypervizor Xen používal IOMMU k přesměrování přístupu PCI zařízení a řídit přístup těchto zařízení do paměti. Nicméně, Z důvodů stability a bezpečnosti neměli hosté přímý přístup do bloku IOMMU poskytované hardwarem.

Představujeme novou paravirtualizovanou IOMMU jednoduše nazvanou PV-IOMMU. V podstatě implementuje funkce, které host od IOMMU očekává, abstrahuje všechny vnitřní detaily hardwaru. V Xenu jsme přidali nový hypercall pro takové operace (který je HYPERVISOR_iommu_op), který poskytuje různé IOMMU operace, které může host používat (pokud je to povoleno).

Navzdory tomu bylo možné nabídnout rozhraní pro hosta abychom vám umožnili přístup k IOMMU, pomocí zjednodušené paravirtualizované infrastruktury Xen, přičemž skrývá detaily hardwaru nízké úrovně. Toto rozhraní, nazývané PV-IOMMU, abstrahuje všechny interní detaily hardwaru a poskytuje sadu operací IOMMU, ke kterým má host přístup, pokud je to povoleno. Operace v PV-IOMMU jsou vystaveny jako dílčí operace v hypercall HYPERVISOR_iommu_op a jsou navrženy způsobem, který je pro hosta pohodlný.

Jednou z hlavních funkcí, které hostitel od IOMMU očekává, je schopnost vytvářet a upravovat „domény IOMMU“, což je sada překladů, které vytvářejí paměťový kontext a které lze použít na zařízení (nebo více zařízení). Tyto domény se v Xenu nazývají „IOMMU Contexts“, aby se předešlo záměně s doménami Xen, které jsou virtuálními stroji.

Mezi různými výhodami, které vynikají z paravirtualizace IOMMU, jsou zmíněny následující:

  • Ochrana DMA pro Dom0: Paravirtualizace IOMMU umožňuje ochranu přímého přístupu do paměti (DMA) pro doménu správy (Dom0) ve virtualizačních prostředích. To pomáhá zlepšit zabezpečení a stabilitu systému tím, že zabrání zařízením v přímém přístupu k systémové paměti, což by mohlo ohrozit integritu Dom0.
  • Podpora Linux VFIO: Paravirtualizace IOMMU usnadňuje podporu virtualizované flexibilní I/O infrastruktury pro uživatelská zařízení (VFIO) ve virtualizačních prostředích a umožňuje uživatelským aplikacím a virtuálním strojům přímý přístup k hardwarovým zařízením.
  • Usnadňuje implementaci SPDK pomocí Xen: Paravirtualizace IOMMU je také součástí pokračujícího úsilí o podporu SPDK pomocí Xen. To otevírá dveře nové rychlé datové cestě pro úložiště virtuálních strojů, což může potenciálně zvýšit výkon úložiště ve virtualizovaných prostředích.

Kromě toho také jeden z problémů Xenu se plánuje řešit s IOMMU, od současnostinebo umožňuje existenci více kontextů IOMMU v jedné doméně Xen. Zvažuje se však přepracování subsystému Xen IOMMU, který by zohlednil více kontextů IOMMU a upravil stávající funkce, aby je využíval. Přestože byl implementován funkční PoC, který implementuje první přístup, s určitými omezeními a neúplnou podporou, je zmíněno, že se do budoucna pracuje na kompletním přepracování subsystému.

Na závěr je třeba zmínit, že V současné fázi vývoje PV-IOMMU podporuje pouze Intel VT-d, ale brzy se plánuje přidání podpory pro AMD-Vi a SMMUv3. Máte-li zájem dozvědět se o něm více, podrobnosti můžete konzultovat v následující odkaz.