Gli sviluppatori del progetto XCP-NG, che sviluppa una piattaforma libera per il dispiegamento e la gestione dell'infrastruttura cloud, hanno presentato il progetto PV-IOMMU, che consente ai sistemi guest di accedere a funzionalità IOMMU limitate implementate utilizzando l'infrastruttura di paravirtualizzazione Xen. Nella pratica, il PV-IOMMU può essere utilizzato per implementare la protezione DMA in Dom0 o per garantire il supporto al sottosistema del kernel Linux VFIO. In passato, l'ipervisor Xen utilizzava l'IOMMU per instradare l'accesso alle periferiche PCI e limitare l'accesso della memoria, ma per motivi di stabilità e sicurezza i sistemi guest non potevano accedere direttamente all'unità IOMMU fornita dall'hardware.
L'IOMMU è un'unità di gestione della memoria specializzata che esegue la traduzione degli indirizzi virtuali visibili alle periferiche hardware in indirizzi fisici, permettendo di eseguire e filtrare operazioni DMA su indirizzi virtuali, oltre a limitare e isolare le operazioni di input/output. Nel contesto della virtualizzazione, l'IOMMU consente ai sistemi guest di accedere direttamente alle periferiche, come adattatori Ethernet, schede grafiche e controller di memoria. L'implementazione dell'IOMMU da parte di Intel è nota come VT-d (Virtualization Technology for Directed I/O), AMD la chiama AMD-Vi (I/O Virtualization), e ARM utilizza SMMU (System Memory Management Unit).
L'implementazione paravirtualizzata proposta (PV-IOMMU) consente ai sistemi guest di utilizzare le funzionalità di base dell'IOMMU, ma astrae tutti i dettagli hardware a basso livello. Per integrarsi in Xen è stato proposto un nuovo ipervettore (simile a una chiamata di sistema per ipervisori) HYPERVISOR_iommu_op, che può essere utilizzato dai sistemi guest per eseguire operazioni IOMMU. Tra l'altro, i sistemi guest possono ora creare e modificare domini IOMMU (dominio IOMMU), denominati contesti IOMMU in Xen per evitare confusione con il termine 'dominio' in Xen. I contesti IOMMU consentono di organizzare l'accesso del sistema guest alla memoria delle periferiche e di specificare le operazioni di traduzione della memoria applicabili a una o più periferiche.
Nella fase attuale di sviluppo, il PV-IOMMU supporta solo la tecnologia Intel VT-d, ma è prevista a breve l'aggiunta del supporto per AMD-Vi e SMMUv3.
Fonte: opennet.ru
