Для Xen развиваСтся ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠ°Ρ€Π°Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ IOMMU

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° XCP-NG, Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для развСртывания ΠΈ управлСния Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ инфраструктурой, прСдставили ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ PV-IOMMU, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ гостСвым систСмам ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ IOMMU, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ с использованиСм инфраструктуры ΠΏΠ°Ρ€Π°Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Xen. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ PV-IOMMU ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ DMA Π² Dom0 ΠΈΠ»ΠΈ обСспСчСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ подсистСмы ядра Linux VFIO. Π Π°Π½Π΅Π΅ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ Xen использовал IOMMU для проброса доступа ΠΊ PCI-устройствам ΠΈ ограничСния доступа устройств ΠΊ памяти, Π½ΠΎ ΠΈΠ· сообраТСний ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ бСзопасности гостСвыС систСмы Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ прСдоставляСмому ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±Π»ΠΎΠΊΡƒ IOMMU.

IOMMU прСдставляСт собой спСциализированный Π±Π»ΠΎΠΊ управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… адрСсов, Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ устройством, Π² физичСскиС адрСса, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ DMA ΠΏΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ адрСсам, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. Π’ контСкстС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ IOMMU позволяСт гостСвым систСмам Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΌ устройствам, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Ethernet-Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹, графичСскиС ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ устройств хранСния. РСализация IOMMU ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Intel прСдоставляСтся ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ VT-d («Virtualization Technology for Directed I/O), AMD — AMD-Vi (I/O Virtualization), Π° ARM — SMMU (System Memory Management Unit).

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Π°Ρ паравиртуализированная рСализация (PV-IOMMU) позволяСт гостСвым систСмам ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности IOMMU, Π½ΠΎ ΠΏΡ€ΠΈ этом абстрагируСт всС Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ. Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² состав Xen ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π³ΠΈΠΏΠ΅Ρ€Π²Ρ‹Π·ΠΎΠ² (Π°Π½Π°Π»ΠΎΠ³ систСмного Π²Ρ‹Π·ΠΎΠ²Π° для Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ΠΎΠ²) HYPERVISOR_iommu_op, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ гостСвыС систСмы для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ IOMMU. Π‘Ρ€Π΅Π΄ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, гостСвыС систСмы Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄ΠΎΠΌΠ΅Π½Ρ‹ IOMMU (IOMMU domain), ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹Π΅ Π² Xen контСкстами IOMMU (IOMMU context) для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ «Π΄ΠΎΠΌΠ΅Π½» Π² Xen. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Ρ‹ IOMMU ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ доступ гостСвой систСмы ΠΊ памяти устройств ΠΈ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ трансляции памяти, примСняСмыС ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ»ΠΈ нСскольким устройствам.

На Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ стадии развития Π² PV-IOMMU поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСхнология Intel VT-d, Π½ΠΎ Π² скором Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ планируСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ AMD-Vi ΠΈ SMMUv3

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru