mycket utvecklare av XCP-NG-projektet tillkännagav Nyligen håller de på med ett nytt projekt som har namnet «PV-IOMMU» och som tillåter gästsystem att komma åt begränsade funktioner i IOMMU implementerade genom paravirtualisering i Xen-miljön.
I grund och botten, PV-IOMMU lovar att göra det möjligt för Dom0 att använda en paravirtualiserad IOMMU, som erbjuder flera fördelar som DMA-skydd för Dom0 och stöd för Linux VFIO.
Vad är IOMMU?
IOMMU känd under olika namn beroende på tillverkare (VT-d i Intel, AMD-Vi i AMD, SMMU i ARM, bland annat), Det är en speciell enhet implementerad vars huvudsakliga funktion är översätta eller filtrera DMA-förfrågningar (Direkt minnesåtkomst) från enheter till maskinens fysiska minne. I virtualisering används det för att ge gästsystem direkt åtkomst till kringutrustning som Ethernet-adaptrar, grafikkort och lagringskontroller.
Vilka fördelar får man med IOMMU paravirualisering?
Tidigare, Xen-hypervisorn använde IOMMU för att omdirigera åtkomst av PCI-enheter och styr åtkomsten av dessa enheter till minnet. Dock, Av stabilitets- och säkerhetsskäl kunde gäster inte direkt komma åt IOMMU-blocket tillhandahålls av hårdvaran.
Vi presenterar en ny paravirtualiserad IOMMU helt enkelt kallad PV-IOMMU. Den implementerar i princip de funktioner som gästen förväntar sig av en IOMMU, och abstraherar alla interna detaljer i hårdvaran. I Xen lade vi till ett nytt hypercall för sådana operationer (som är HYPERVISOR_iommu_op) som tillhandahåller olika IOMMU-operationer som gästen kan använda (om tillåtet).
Trots detta det har varit möjligt att erbjuda ett gränssnitt till gästen för att ge dig åtkomst till IOMMU, med hjälp av en förenklad Xen-paravirtualiserad infrastruktur, samtidigt som de döljer hårdvarudetaljer på låg nivå. Detta gränssnitt, som kallas PV-IOMMU, abstraherar alla interna detaljer i hårdvaran och tillhandahåller en uppsättning IOMMU-operationer som gästen kan komma åt, om det tillåts. Verksamheten i PV-IOMMU exponeras som underoperationer i hypercall HYPERVISOR_iommu_op och är utformade på ett sätt som är bekvämt för gästen.
En av huvudfunktionerna som värden förväntar sig av en IOMMU är möjligheten att skapa och modifiera "IOMMU Domains" som är en uppsättning översättningar som skapar minneskontext och som kan appliceras på en enhet (eller flera enheter). Dessa domäner kallas "IOMMU Contexts" i Xen för att undvika förväxling med Xen-domäner som är virtuella maskiner.
Bland de olika fördelarna som sticker ut från IOMMU paravirtualisering nämns följande:
- DMA-skydd för Dom0: IOMMU paravirtualisering möjliggör direkt minnesåtkomst (DMA) skydd för hanteringsdomänen (Dom0) i virtualiseringsmiljöer. Detta hjälper till att förbättra systemets säkerhet och stabilitet genom att förhindra enheter från att direkt komma åt systemminnet, vilket kan äventyra integriteten hos Dom0.
- Linux VFIO-stöd: IOMMU paravirtualisering underlättar stöd för virtualiserad flexibel I/O-infrastruktur för användarenheter (VFIO) i virtualiseringsmiljöer, vilket tillåter användarapplikationer och virtuella maskiner att direkt komma åt hårdvaruenheter.
- Gör det enkelt att implementera SPDK med Xen: IOMMU paravirtualisering är också en del av ett pågående arbete för att stödja SPDK med Xen. Detta öppnar dörren till en ny snabb dataväg för virtuell maskinlagring, som potentiellt kan öka lagringsprestanda i virtualiserade miljöer.
Utöver det också ett av Xens problem planeras att lösas med IOMMU, sedan för närvarandeeller tillåter förekomsten av flera IOMMU-kontexter i en enda Xen-domän. En omdesign av Xen IOMMU-delsystemet övervägs dock för att ta hänsyn till flera IOMMU-kontexter och modifiera befintliga funktioner för att använda dem. Även om en funktionell PoC har implementerats som implementerar det första tillvägagångssättet, med vissa begränsningar och ofullständigt stöd, nämns det att man arbetar med en fullständig omdesign av delsystemet för framtiden.
Slutligen bör det nämnas att I den nuvarande utvecklingsfasen stöder PV-IOMMU endast Intel VT-d, men stöd för AMD-Vi och SMMUv3 planeras läggas till snart. Om du är intresserad av att lära dig mer om det, kan du konsultera detaljerna i följande länk.