PV-IOMMU, un mecanism de paravirtualizare Xen IOMMU

Logo-ul Xen

L au anunțat dezvoltatorii proiectului XCP-NG Recent, lucrează la un nou proiect care poartă numele «PV-IOMMU» și care permite sistemelor oaspeți să acceseze funcții limitate ale IOMMU implementate prin paravirtualizare în mediul Xen.

Practic, PV-IOMMU promite că va permite lui Dom0 să utilizeze un IOMMU paravirtualizat, care oferă mai multe avantaje, cum ar fi protecție DMA pentru Dom0 și suport pentru Linux VFIO.

Ce este IOMMU?

IOMMU cunoscut sub diferite nume în funcție de producător (VT-d în Intel, AMD-Vi în AMD, SMMU în ARM, printre altele), Este un dispozitiv special implementat a cărui funcţie principală este traduceți sau filtrați solicitările DMA (Acces direct la memorie) de la dispozitive la memoria fizică a aparatului. În virtualizare, este folosit pentru a permite sistemelor oaspeți să acceseze direct dispozitive periferice, cum ar fi adaptoare Ethernet, plăci grafice și controlere de stocare.

Ce beneficii se obțin cu paravirualizarea IOMMU?

anterior, hypervisorul Xen a folosit IOMMU pentru a redirecționa accesul de dispozitive PCI și controlați accesul acestor dispozitive la memorie. In orice caz, Din motive de stabilitate și securitate, oaspeții nu au putut accesa direct blocul IOMMU furnizate de hardware.

Vă prezentăm un nou IOMMU paravirtualizat numit simplu PV-IOMMU. Practic implementează caracteristicile pe care oaspetele le așteaptă de la un IOMMU, abstragând toate detaliile interne ale hardware-ului. În Xen, am adăugat un nou hypercall pentru astfel de operațiuni (care este HYPERVISOR_iommu_op) care oferă diverse operațiuni IOMMU pe care oaspete le poate folosi (dacă este permis).

În ciuda acestui fapt, s-a putut oferi oaspeților o interfață pentru a vă permite să accesați IOMMU, folosind o infrastructură paravirtualizată Xen simplificată, în timp ce ascund detalii hardware de nivel scăzut. Această interfață, numită PV-IOMMU, extrage toate detaliile interne ale hardware-ului și oferă un set de operațiuni IOMMU pe care oaspetele le poate accesa, dacă este permis. Operațiunile din PV-IOMMU sunt expuse ca sub-operații în hiperapelul HYPERVISOR_iommu_op și sunt concepute într-un mod convenabil pentru oaspete.

Una dintre principalele caracteristici pe care gazda le așteaptă de la un IOMMU este capacitatea de a crea și modifica „Domenii IOMMU” care este un set de traduceri care fac contextul memoriei și care poate fi aplicat unui dispozitiv (sau mai multor dispozitive). Aceste domenii sunt numite „Contexte IOMMU” în Xen pentru a evita confuzia cu domeniile Xen care sunt mașini virtuale.

Dintre diferitele beneficii care ies în evidență din paravirtualizarea IOMMU, sunt menționate următoarele:

  • Protecție DMA pentru Dom0: Paravirtualizarea IOMMU permite protecția accesului direct la memorie (DMA) pentru domeniul de management (Dom0) în mediile de virtualizare. Acest lucru ajută la îmbunătățirea securității și stabilității sistemului, împiedicând dispozitivele să acceseze direct memoria sistemului, ceea ce ar putea compromite integritatea Dom0.
  • Suport Linux VFIO: Paravirtualizarea IOMMU facilitează suportul pentru infrastructura I/O flexibilă virtualizată pentru dispozitivele utilizatorului (VFIO) în mediile de virtualizare, permițând aplicațiilor utilizatorului și mașinilor virtuale să acceseze direct dispozitivele hardware.
  • Ușurează implementarea SPDK cu Xen: Paravirtualizarea IOMMU face, de asemenea, parte dintr-un efort continuu de a sprijini SPDK cu Xen. Acest lucru deschide ușa către o nouă cale de date rapidă pentru stocarea mașinilor virtuale, care poate crește performanța stocării în medii virtualizate.

Pe lângă asta, de asemenea una dintre problemele lui Xen este planificată să fie rezolvată cu IOMMU, din moment cesau permite existența mai multor contexte IOMMU într-un singur domeniu Xen. Cu toate acestea, se ia în considerare o reproiectare a subsistemului Xen IOMMU pentru a lua în considerare mai multe contexte IOMMU și pentru a modifica caracteristicile existente pentru a le folosi. Deși a fost implementat un PoC funcțional care implementează prima abordare, cu anumite limitări și suport incomplet, se menționează că se lucrează la o reproiectare completă a subsistemului pentru viitor.

În cele din urmă, trebuie menționat că În faza actuală de dezvoltare, PV-IOMMU acceptă doar Intel VT-d, dar suportul pentru AMD-Vi și SMMUv3 este planificat să fie adăugat în curând. Dacă sunteți interesat să aflați mai multe despre acesta, puteți consulta detaliile în următorul link.