I-PV-IOMMU, i-Xen IOMMU paravirtualization mechanism

Ilogo ye-Xen

I-Los abathuthukisi bephrojekthi ye-XCP-NG bamenyezelwe Muva nje, basebenzela iphrojekthi entsha enegama "PV-IOMMU" futhi lokho kuvumela amasistimu wezihambeli ukuthi afinyelele imisebenzi ekhawulelwe ye-IOMMU esetshenziswa nge-paravirtualization endaweni ye-Xen.

Ngokuyisisekelo, i-PV-IOMMU ithembisa ukunika amandla i-Dom0 ukuthi isebenzise i-IOMMU ene-paravirtualized, enikeza izinzuzo ezimbalwa ezifana nokuvikelwa kwe-DMA ye-Dom0 nokusekelwa kwe-Linux VFIO.

Yini i-IOMMU?

I-IOMMU eyaziwa ngamagama ahlukene kuye ngomkhiqizi (i-VT-d ku-Intel, i-AMD-Vi ku-AMD, i-SMMU ku-ARM, phakathi kokunye), Kuyidivayisi ekhethekile eyenziwe umsebenzi wayo oyinhloko uyi Humusha noma hlunga izicelo ze-DMA (Ukufinyelela Inkumbulo Okuqondile) kusuka kumadivayisi kuya kumemori ebonakalayo yomshini. Ku-virtualization, isetshenziselwa ukuvumela amasistimu wezihambeli ukuthi afinyelele ngokuqondile kumadivayisi angaphandle njengama-adaptha e-Ethernet, amakhadi ezithombe, nezilawuli zesitoreji.

Yiziphi izinzuzo ezitholakala nge-IOMMU paravirualization?

Phambilini, i-Xen hypervisor isebenzise i-IOMMU ukuze iqondise kabusha ukufinyelela yamadivayisi e-PCI futhi ulawule ukufinyelela kwalawa madivayisi kumemori. Nokho, Ngenxa yezizathu zokuzinza nezokuphepha, izihambeli azikwazanga ukufinyelela ngokuqondile ibhulokhi ye-IOMMU ihlinzekwa yi-hardware.

Sethula i-IOMMU entsha ye-paravirtualized ebizwa ngokuthi i-PV-IOMMU. Isebenzisa izici ezilindelwe isivakashi ku-IOMMU, ikhipha yonke imininingwane yangaphakathi yezingxenyekazi zekhompuyutha. Ku-Xen, sengeze i-hypercall entsha yemisebenzi enjalo (okuyi-HYPERVISOR_iommu_op) ehlinzeka ngemisebenzi ehlukahlukene ye-IOMMU isivakashi esingayisebenzisa (uma ivunyelwe).

Ngaphandle kwalokhu, kube nokwenzeka ukunikeza isivakashi isixhumi esibonakalayo ukukuvumela ukuthi ufinyelele ku-IOMMU, kusetshenziswa ingqalasizinda eyenziwe lula ye-Xen, ngenkathi ufihla imininingwane yezingxenyekazi zekhompuyutha ezisezingeni eliphansi. Lesi sixhumanisi, esibizwa nge-PV-IOMMU, sikhipha yonke imininingwane yangaphakathi yezingxenyekazi zekhompuyutha futhi sinikeza isethi yemisebenzi ye-IOMMU isivakashi esingafinyelela kuyo, uma sivunyelwe. Imisebenzi ku-PV-IOMMU ivezwa njengemisebenzi engaphansi ku-HYPERVISOR_iommu_op hypercall, futhi yakhelwe ngendlela elungele isivakashi.

Esinye sezici eziyinhloko umsingathi azilindele ku-IOMMU yikhono lokudala nokuguqula "Izizinda ze-IOMMU" okuyisethi yokuhumusha okwenza umongo wememori futhi ongasetshenziswa kudivayisi (noma amadivayisi amaningi). Lezi zizinda zibizwa ngokuthi "IOMMU Contexts" ngesi-Xen ukugwema ukudideka nezizinda ze-Xen eziyimishini ebonakalayo.

Phakathi kwezinzuzo ezahlukene ezigqamayo ku-IOMMU paravirtualization, okulandelayo kubaluliwe:

  • Ukuvikelwa kwe-DMA kwe-Dom0: I-IOMMU paravirtualization inika amandla ukuvikeleka kwememori eqondile (i-DMA) yesizinda sokuphatha (i-Dom0) ezindaweni ze-virtualization. Lokhu kusiza ukuthuthukisa ukuvikeleka kwesistimu nokuzinza ngokuvimbela amadivayisi kusukela ekufinyeleleni ngokuqondile kumemori yesistimu, engafaka engozini ubuqotho be-Dom0.
  • Ukusekelwa kwe-Linux VFIO: I-IOMMU paravirtualization isiza usekelo lwengqalasizinda eguquguqukayo ye-I/O yamadivayisi omsebenzisi (VFIO) ezindaweni zokwenza izinto ezibonakalayo, okuvumela izinhlelo zokusebenza zabasebenzisi nemishini ebonakalayo ukuthi ifinyelele ngokuqondile kumadivayisi wehadiwe.
  • Kwenza kube lula ukusebenzisa i-SPDK nge-Xen: I-IOMMU paravirtualization futhi iyingxenye yomzamo oqhubekayo wokusekela i-SPDK nge-Xen. Lokhu kuvula umnyango wendlela entsha yedatha esheshayo yokugcinwa komshini obonakalayo, okungase kube namandla okuthuthukisa ukusebenza kwesitoreji ezindaweni ezingokoqobo.

Ngaphezu kwalokho, futhi enye yezinkinga zika-Xen ihlelelwe ukuthi ixazululwe ne-IOMMU, kusukela manjenoma ivumela ukuba khona kokuqukethwe kwe-IOMMU okuningi kusizinda esisodwa se-Xen. Nokho, ukudizayina kabusha kwesistimu engaphansi ye-Xen IOMMU kucatshangelwa ukuthi kubhekelele okuqukethwe kwe-IOMMU okuningi futhi kuguqule izici ezikhona ukuze zisetshenziswe. Nakuba sekusetshenziswe i-PoC esebenzayo esebenzisa indlela yokuqala, enemikhawulo ethile nokusekelwa okungaphelele, kushiwo ukuthi ukuhlelwa kabusha okuphelele kwesistimu encane kusetshenzelwa ikusasa.

Ekugcineni, kufanele kushiwo lokho Esigabeni samanje sokuthuthuka, i-PV-IOMMU isekela i-Intel VT-d kuphela, kodwa ukusekelwa kwe-AMD-Vi ne-SMMUv3 kuhlelwe ukuthi kwengezwe maduze. Uma ungathanda ukufunda okwengeziwe ngakho, ungabheka imininingwane ku isixhumanisi esilandelayo.