PV-IOMMU, mekanisme paravirtualisasi Xen IOMMU

Logo Xen

Los pengembang proyek XCP-NG mengumumkan Baru-baru ini, mereka sedang mengerjakan proyek baru yang diberi nama «PV-IOMMU» dan memungkinkan sistem tamu untuk mengakses fungsi terbatas IOMMU yang diimplementasikan melalui paravirtualisasi di lingkungan Xen.

Pada dasarnya, PV-IOMMU berjanji untuk memungkinkan Dom0 menggunakan IOMMU yang diparavirtualisasi, yang menawarkan beberapa keunggulan seperti perlindungan DMA untuk Dom0 dan dukungan untuk Linux VFIO.

Apa itu IOMMU?

IOMMU dikenal dengan nama berbeda tergantung pabrikannya (antara lain VT-d di Intel, AMD-Vi di AMD, SMMU di ARM), Ini adalah perangkat khusus yang diimplementasikan yang fungsi utamanya adalah menerjemahkan atau memfilter permintaan DMA (Akses Memori Langsung) dari perangkat ke memori fisik mesin. Dalam virtualisasi, ini digunakan untuk memungkinkan sistem tamu mengakses secara langsung perangkat periferal seperti adaptor Ethernet, kartu grafis, dan pengontrol penyimpanan.

Apa manfaat yang diperoleh dengan paravirualisasi IOMMU?

sebelumnya, hypervisor Xen menggunakan IOMMU untuk mengalihkan akses perangkat PCI dan mengontrol akses perangkat ini ke memori. Namun, Demi alasan stabilitas dan keamanan, tamu tidak dapat mengakses blok IOMMU secara langsung disediakan oleh perangkat keras.

Kami mempersembahkan IOMMU paravirtualisasi baru yang disebut PV-IOMMU. Ini pada dasarnya mengimplementasikan fitur-fitur yang diharapkan tamu dari IOMMU, mengabstraksi semua detail internal perangkat keras. Di Xen, kami menambahkan hypercall baru untuk operasi tersebut (yaitu HYPERVISOR_iommu_op) yang menyediakan berbagai operasi IOMMU yang dapat digunakan tamu (jika diizinkan).

Meskipun demikian, dimungkinkan untuk menawarkan antarmuka kepada tamu untuk memungkinkan Anda mengakses IOMMU, menggunakan infrastruktur paravirtualisasi Xen yang disederhanakan, sambil menyembunyikan detail perangkat keras tingkat rendah. Antarmuka ini, disebut PV-IOMMU, mengabstraksi semua detail internal perangkat keras dan menyediakan serangkaian operasi IOMMU yang dapat diakses oleh tamu, jika diizinkan. Operasi di PV-IOMMU diekspos sebagai sub-operasi di hypercall HYPERVISOR_iommu_op, dan dirancang sedemikian rupa sehingga nyaman bagi tamu.

Salah satu fitur utama yang diharapkan host dari IOMMU adalah kemampuan untuk membuat dan memodifikasi "Domain IOMMU" yang merupakan sekumpulan terjemahan yang membuat konteks memori dan dapat diterapkan ke satu perangkat (atau beberapa perangkat). Domain ini disebut “Konteks IOMMU” di Xen untuk menghindari kebingungan dengan domain Xen yang merupakan mesin virtual.

Di antara berbagai manfaat yang menonjol dari paravirtualisasi IOMMU, disebutkan sebagai berikut:

  • Perlindungan DMA untuk Dom0: Paravirtualisasi IOMMU memungkinkan perlindungan akses memori langsung (DMA) untuk domain manajemen (Dom0) di lingkungan virtualisasi. Hal ini membantu meningkatkan keamanan dan stabilitas sistem dengan mencegah perangkat mengakses memori sistem secara langsung, yang dapat membahayakan integritas Dom0.
  • Dukungan VFIO Linux: Paravirtualisasi IOMMU memfasilitasi dukungan untuk infrastruktur I/O fleksibel tervirtualisasi untuk perangkat pengguna (VFIO) dalam lingkungan virtualisasi, memungkinkan aplikasi pengguna dan mesin virtual mengakses perangkat keras secara langsung.
  • Memudahkan penerapan SPDK dengan Xen: Paravirtualisasi IOMMU juga merupakan bagian dari upaya berkelanjutan untuk mendukung SPDK dengan Xen. Hal ini membuka pintu bagi jalur data cepat baru untuk penyimpanan mesin virtual, yang berpotensi meningkatkan kinerja penyimpanan di lingkungan tervirtualisasi.

Selain itu, juga salah satu masalah Xen rencananya akan diatasi dengan IOMMU, sejak saat iniatau memungkinkan adanya beberapa konteks IOMMU dalam satu domain Xen. Namun, desain ulang subsistem Xen IOMMU sedang dipertimbangkan untuk mempertimbangkan beberapa konteks IOMMU dan memodifikasi fitur yang ada untuk memanfaatkannya. Meskipun PoC fungsional yang menerapkan pendekatan pertama telah diterapkan, dengan keterbatasan tertentu dan dukungan yang tidak lengkap, disebutkan bahwa desain ulang subsistem secara menyeluruh sedang dikerjakan di masa depan.

Akhirnya, harus disebutkan bahwa Pada tahap pengembangan saat ini, PV-IOMMU hanya mendukung Intel VT-d, namun dukungan untuk AMD-Vi dan SMMUv3 rencananya akan segera ditambahkan. Jika Anda tertarik untuk mempelajarinya lebih lanjut, Anda dapat melihat detailnya di link berikut.