Essentiellement cette fonction permet d'utiliser directement les périphériques PCI physiques sur l'hôte par le client, même si l'hôte ne dispose pas de pilotes pour ce dispositif particulier. Les deux, PCI régulière et certaines cartes PCI Express, sont pris en charge. AGP et certaines cartes PCI Express ne sont pas pris en charge pour le moment si elles reposent sur GART (Graphics Address Remapping Table) programmation de l'unité de gestion de la texture comme il le fait plutôt des opérations non triviales avec des pages remappage interférer avec IOMMU. Cette limitation peut être levée dans les prochaines versions.
Pour être pleinement fonctionnel, PCI support passthrough dans VirtualBox dépend d'une unité matérielle IOMMU qui est pas encore trop largement disponible. Si l'appareil utilise le contrôle du bus (il exécute DMA à la mémoire OS sur son propre), puis un IOMMU est nécessaire, sinon ces opérations DMA peuvent écrire à l'adresse de mémoire physique erronée que le moteur DMA de l'appareil est programmé à l'aide d'un dispositif spécifique protocole pour effectuer des transactions de mémoire. Les fonctions IOMMU que la cartographie des unités de traduction demandes d'accès de la mémoire physique de l'appareil en utilisant la connaissance de l'adresse physique invité à accueillir les adresses physiques des règles de traduction.
La solution d'Intel pour IOMMU est commercialisé comme «Intel Virtualization Technology pour Directed I / O" (VT-d), et celui de AMD est appelée AMD-Vi. Donc, s'il vous plaît vérifier si votre carte mère fiche dispose d'une technologie appropriée. Même si votre matériel n'a pas de IOMMU, certaines cartes PCI peuvent travailler (tels que les adaptateurs série PCI), mais l'invité affichera un avertissement au démarrage et l'exécution VM prendra fin si le pilote invité tentera d'activer le bus de carte mastering .
Il est très fréquent que le BIOS ou le système d'exploitation hôte désactive l'IOMMU par défaut. Donc, avant toute tentative de l'utiliser s'il vous plaît assurez-vous que
Votre carte mère dispose d'une unité IOMMU.
Votre CPU prend en charge l'IOMMU.
Le IOMMU est activé dans le BIOS.
La VM doit fonctionner avec VT-x / AMD-V et la pagination imbriquée activée.
Votre noyau Linux a été compilé avec le support IOMMU (y compris DMA remappage, voir l'option de compilation CONFIG_DMAR du noyau). Le pilote PCI stub (CONFIG_PCI_STUB) est nécessaire aussi bien.
Votre noyau Linux reconnaît et utilise l'unité IOMMU (intel_iommu = sur option de démarrage pourrait être nécessaire). Rechercher DMAR et PCI-DMA dans le journal de démarrage du noyau.
Une fois que vous vous êtes assuré que le noyau hôte prend en charge l'IOMMU, l'étape suivante consiste à sélectionner la carte PCI et le joindre à l'invité. Pour comprendre la liste des périphériques de PCI, utilisez la commande lspci. La sortie ressemblera à ceci:
contrôleur compatible 00.0 VGA: 01 ATI Technologies Inc Cedar PRO [Radeon HD 5450]
01: 00.1 dispositif audio: ATI Technologies Inc Manhattan HDMI Audio [Mobility Radeon HD 5000 Series]
02: 00.0 contrôleur Ethernet: Realtek Semiconductor Co., Ltd RTL8111 / 8168B PCI Express Gigabit
contrôleur Ethernet (rev 03)
03: 00.0 contrôleur SATA: JMicron Technology Corp. JMB362 / JMB363 Serial ATA Controller (rev 03)
03: 00.1 interface IDE: contrôleur ATA JMicron Technology Corp. JMB362 / JMB363 série (rev 03)
contrôleur compatible 00.0 VGA: 06 nVidia Corporation G86 [GeForce 8500 GT] (rev a1)
La première colonne est une adresse de PCI (en format bus: device.function). Cette adresse peut être utilisée pour identifier le périphérique pour d'autres opérations. Par exemple, pour joindre un contrôleur de réseau PCI sur le système mentionné ci-dessus au second bus PCI dans l'invité, en tant que dispositif 5, fonction 0, utilisez la commande suivante:
"Nom VM" de VBoxManage --pciattach 02: 00.0@01: 05.0
Pour détacher un même dispositif, utiliser
"Nom VM" de VBoxManage --pcidetach 02: 00.0
S'il vous plaît noter que l'hôte et invité pouvaient librement attribuer une adresse différente de PCI à la carte ci-jointe lors de l'exécution, de sorte que ces adresses sont applicables uniquement à l'adresse de la carte au moment de la fixation (hôte), et pendant BIOS PCI init (guest).
Si la machine virtuelle a un périphérique PCI ci-joint, certaines limitations applicables:
Seules les cartes PCI avec des interruptions non partagées (comme l'utilisation de MSI sur l'hôte) sont pris en charge pour le moment.
Aucun état d'invité peut être fiable sauvé / restauré (comme l'état interne de la carte PCI ne pouvait pas être récupéré).
Téléportation (migration en direct) ne fonctionne pas (pour la même raison).
Aucune allocation de mémoire physique paresseux. L'hôte preallocate l'ensemble RAM nécessaire pour la machine virtuelle au démarrage (comme nous ne pouvons pas attraper matériel physique accède à la mémoire physique).
Partager