PV-IOMMU, механізм паравіртуалізації Xen IOMMU

Логотип Xen

L повідомили розробники проекту XCP-NG Останнім часом вони працюють над новим проектом, який має таку назву «ПВ-ІОММУ» і це дозволяє гостьовим системам отримувати доступ до обмежених функцій IOMMU, реалізованих через паравіртуалізацію в середовищі Xen.

По суті, PV-IOMMU обіцяє дозволити Dom0 використовувати паравіртуалізований IOMMU, який пропонує кілька переваг, таких як захист DMA для Dom0 і підтримку Linux VFIO.

Що таке IOMMU?

IOMMU відомий під різними назвами залежно від виробника (VT-d в Intel, AMD-Vi в AMD, SMMU в ARM тощо), Це реалізований спеціальний пристрій основною функцією якого є перекладати або фільтрувати запити DMA (Прямий доступ до пам’яті) від пристроїв до фізичної пам’яті машини. У віртуалізації він використовується, щоб дозволити гостьовим системам отримувати прямий доступ до периферійних пристроїв, таких як адаптери Ethernet, графічні карти та контролери зберігання.

Які переваги отримує паравіруалізація IOMMU?

Раніше гіпервізор Xen використовував IOMMU для перенаправлення доступу пристроїв PCI та контролюйте доступ цих пристроїв до пам’яті. однак, З міркувань стабільності та безпеки гості не могли отримати прямий доступ до блоку IOMMU забезпечується апаратним забезпеченням.

Ми представляємо новий паравіртуалізований IOMMU, просто названий PV-IOMMU. Він в основному реалізує функції, які гість очікує від IOMMU, абстрагуючи всі внутрішні деталі апаратного забезпечення. У Xen ми додали новий гіпервиклик для таких операцій (який є HYPERVISOR_iommu_op), який надає різні операції IOMMU, які може використовувати гость (якщо це дозволено).

Незважаючи на це, можна було запропонувати інтерфейс для гостя щоб дозволити вам отримати доступ до IOMMU, використання спрощеної паравіртуалізованої інфраструктури Xen, приховуючи апаратні деталі низького рівня. Цей інтерфейс, який називається PV-IOMMU, абстрагує всі внутрішні деталі апаратного забезпечення та надає набір операцій IOMMU, до яких гость може отримати доступ, якщо це дозволено. Операції в PV-IOMMU представлені як підоперації в гіпервиклику HYPERVISOR_iommu_op і розроблені таким чином, щоб це було зручно для гостя.

Однією з головних особливостей, яку хост очікує від IOMMU, є можливість створювати та змінювати «Домени IOMMU», які є набором перекладів, які створюють контекст пам’яті та які можна застосувати до пристрою (або кількох пристроїв). Ці домени в Xen називаються «контекстами IOMMU», щоб уникнути плутанини з доменами Xen, які є віртуальними машинами.

Серед різних переваг паравіртуалізації IOMMU згадуються наступні:

  • Захист DMA для Dom0: Паравіртуалізація IOMMU забезпечує захист прямого доступу до пам’яті (DMA) для домену керування (Dom0) у середовищах віртуалізації. Це допомагає покращити безпеку та стабільність системи, запобігаючи прямому доступу пристроїв до системної пам’яті, що може порушити цілісність Dom0.
  • Підтримка Linux VFIO: паравіртуалізація IOMMU сприяє підтримці віртуалізованої гнучкої інфраструктури вводу-виводу для пристроїв користувача (VFIO) у середовищах віртуалізації, дозволяючи програмам користувача та віртуальним машинам отримувати прямий доступ до апаратних пристроїв.
  • Спрощує впровадження SPDK з Xen: Паравіртуалізація IOMMU також є частиною поточних зусиль щодо підтримки SPDK з Xen. Це відкриває двері для нового швидкого шляху даних для зберігання віртуальних машин, що потенційно може підвищити продуктивність зберігання у віртуалізованих середовищах.

На додаток до цього також одну з проблем Xen планується вирішити за допомогою IOMMU, оскільки в даний часабо дозволяє існування кількох контекстів IOMMU в одному домені Xen. Однак розглядається перепроектування підсистеми Xen IOMMU з урахуванням кількох контекстів IOMMU та модифікації існуючих функцій для їх використання. Хоча було впроваджено функціональний PoC, який реалізує перший підхід, з певними обмеженнями та неповною підтримкою, згадується, що в майбутньому ведеться робота над повним перепроектуванням підсистеми.

Нарешті, слід зазначити, що На поточному етапі розробки PV-IOMMU підтримує лише Intel VT-d, але незабаром планується додати підтримку AMD-Vi та SMMUv3. Якщо вам цікаво дізнатися більше про це, ви можете переглянути подробиці в наступне посилання.