Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| vfio [Le 21/08/2016, 20:19] – [Étape 2: Obtentions des informations] 90.112.251.197 | vfio [Le 17/09/2026, 16:35] (Version actuelle) – Typo + orthographe (guillemet est masculin entre autres) nany | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== VFIO PASSTHROUGHT | + | {{tag> Virtualisation qemu dexter74 vfio}} |
| + | ---- | ||
| + | ====== | ||
| + | Le VFIO ((Virtual Function Input/ | ||
| - | {{tag> | + | Cette technique suppose des pré-requis. Elle nécessite du matériel plus ou moins facile à réaliser. FIXME Indiquer où il faut le fabriquer ? |
| - | ===== I) Informations: | + | |
| - | <note help>LE VFIO PASSTHROUGH consiste à décharger le pilote d'un matériel (Carte graphique , usb , souris ...) pour ensuite | + | L’intérêt du // |
| - | Il existe des pré-requis | + | |
| - | \\ | + | FIXME |
| - | + | < | |
| - | ====== II) Pré-Requis: | + | Article |
| - | + | ||
| - | < | + | |
| - | - La Prise en compte du IOMMU par linux. \\ | + | |
| - | - Un processeur ayant la prise en charge la virtualisation. \\ | + | |
| - | - Deux Carte-graphiques ou 1 Apu et une Carte-graphique \\ | + | |
| - | - 2 Entrée vidéo sur l' | + | |
| - | - Connaitre son matériel . (Référence des 2 GPU serait bien par exemple)</ | + | |
| - | \\ | + | |
| - | **Voilà pour les Pré-requis** | + | |
| - | + | ||
| - | + | ||
| - | ====== III) Obtentions des Informations Matériels | + | |
| - | + | ||
| - | <note important> | + | |
| - | - L' | + | |
| - | - L' | + | |
| </ | </ | ||
| - | ===== Étape 1: Vérification de la prise en charge de IOMMU / Virtualisation processeur | ||
| - | \\ | ||
| - | <note important> | ||
| - | **Fix AMD:** OUI trouvé par moi \\ | ||
| - | ** Fix Intel**: Non Trouvé car j'ai que des processeur AMD (dexter74)</ | ||
| - | \\ | ||
| - | === Prise en Charge de IOMMU=== | ||
| - | < | ||
| - | \\ | ||
| - | AMD-Vi:** Found IOMMU** at 0000: | ||
| - | AMD-Vi: **Interrupt remapping enabled** | ||
| - | \\ | ||
| - | L' | ||
| - | === Prise en Charge de la Virtualisation === | ||
| - | < | ||
| - | \\ | ||
| - | Virtualisation : | ||
| - | </ | ||
| - | Tous les Pré-Requis sont bons. | + | ===== Pré-requis ===== |
| - | ===== Étape 2: Obtentions des informations | + | * Avoir activé la fonction **IOMMU**((Input/ |
| + | * Avoir activé la prise en compte du IOMMU par Linux – donc au niveau du logiciel (le système d’exploitation hôte ici). | ||
| + | * Avoir activé la prise en charge de la virtualisation par le processeur – cela suppose que le processeur intègre un mode de virtualisation. | ||
| + | * Disposer de deux cartes graphiques, ou d’une paire formée d’une [[Wpfr> | ||
| + | * Disposer de deux entrées vidéo sur l’écran : une pour le système Linux hôte (//Host//) et une pour la machine virtuelle invitée (// | ||
| + | * Disposer des caractéristiques techniques de son matériel. En l’occurrence, | ||
| - | <note important> | + | ===== Obtention des informations sur le matériel ===== |
| - | **Port PCI Express 1:** Carte graphique réservée au système d' | + | |
| - | **Port PCI Express 2:** Carte graphique pour le système d' | + | Il existe deux types d’adresse : |
| + | | ||
| + | | ||
| - | <note help> | + | ==== Étape 1 : Vérification de la prise en charge de IOMMU / Virtualisation processeur |
| - | | + | |
| - | lspci -v | grep " | + | |
| - | + | ||
| - | Nvidia inclus: | + | |
| - | lspci -vv | grep " | + | |
| - | </note> | + | < |
| - | + | Cette page ne propose pour le moment que celui pour les processeurs **AMD**. \\ | |
| - | + | En effet, au moment de l' | |
| - | ^ | + | === Prise en Charge de IOMMU === |
| - | | 00:14.2 | Audio device | AMD/ATI Intel HDA | 1002:4383 | snd_hda_intel | Carte-mère | + | Saisissez dans un [[:terminal]] la [[:commande_bash|commande]] suivante : |
| - | | 01:00.0 | VGA (GPU) | GTX-260 | + | <code bash> |
| - | | | + | |
| - | | 02:00.1 | Audio device | R9-270x (HDMI) | + | |
| - | \\ | + | |
| - | **Ma Carte graphique est branchée en HDMI et donc les signaux Vidéo | + | |
| - | On ne pourra pas interdire le pilote ** " snd_hda_intel" | + | |
| + | Vous devriez obtenir | ||
| + | < | ||
| + | Qui indique que le module IOMMU a bien été trouvé | ||
| + | < | ||
| + | L' | ||
| + | === Prise en Charge de la Virtualisation === | ||
| + | Saisissez dans un [[: | ||
| + | <code bash> | ||
| - | ===== Étape 3: Activation des Modules | + | Devrait répondre |
| + | < | ||
| - | **Connaitre la marque de son processeur: | + | Tous les Pré-Requis sont donc bons. |
| - | lscpu | grep name | + | |
| - | \\ | + | |
| - | \\ | + | |
| + | ==== Étape 2 : Obtentions des informations ==== | ||
| + | <note important> | ||
| + | * **Port PCI Express 1 :** Carte graphique réservée au système d' | ||
| + | * **Port PCI Express 2 :** Carte graphique pour le système d' | ||
| + | </ | ||
| + | Lister tout, en saisissant dans un [[: | ||
| + | <code bash> | ||
| - | **Éditer / | + | Nvidia inclus : FIXME Autant |
| - | pci_stub | + | <code bash> |
| - | vfio | + | |
| - | vfio_iommu_type1 | + | |
| - | vfio_pci | + | |
| - | kvm | + | |
| - | kvm_amd | + | |
| - | kvm_intel | + | |
| - | === Redémarrage du pc === | + | |
| - | + | ||
| - | **Vérification:** \\ | + | :!: La Sortie HDMI à une seconde adresse VendorID:DeviceID |
| - | lspci -v | grep " | + | |
| + | ^ | ||
| + | | 00:14.2 | Audio device | AMD/ATI Intel HDA | ||
| + | | 01:00.0 | VGA (GPU) | GTX-260 | ||
| + | | 02:00.0 | VGA (GPU | R9-270x (Video) | ||
| + | | 02:00.1 | Audio HDMI1 | R9-270x (HDMI) | ||
| + | | 02:00.1 | Audio HDMI2 | R9-270x (HDMI) | ||
| - | \\ | + | Ici la carte graphique est branchée en HDMI et donc les signaux Vidéo |
| - | ^ | + | On ne pourra pas interdire |
| - | | 00:14.2 | Audio device | AMD/ATI Intel HDA | 1002: | + | |
| - | | 01:00.0 | VGA (GPU) | GTX-260 | + | |
| - | | 02:00.0 | VGA (GPU | R9-270x (Video) | + | |
| - | | 02:00.1 | Audio device | R9-270x (HDMI) | + | |
| - | \\ | + | |
| - | On peut voir que le " | + | |
| - | \\ | + | |
| + | ==== Étape 3 : Activation des Modules ==== | ||
| + | - Connaître la marque de son processeur : | ||
| + | lscpu | grep name</ | ||
| + | - [[: | ||
| + | vfio | ||
| + | vfio_iommu_type1 | ||
| + | vfio_pci | ||
| + | kvm | ||
| + | kvm_amd | ||
| + | kvm_intel | ||
| + | </ | ||
| + | - Mettre à jour le chargement des modules : < | ||
| + | ==== Étape 4 : Redémarrage et vérification ==== | ||
| + | Après avoir redémarré votre machine, vérifiez la bonne mise en place du vfio en saisissant dans un [[: | ||
| + | <code bash> | ||
| + | lspci -v | grep " | ||
| + | </ | ||
| + | Vous devriez obtenir un tableau proche de : | ||
| + | ^ | ||
| + | | 00:14.2 | Audio device | AMD/ATI Intel HDA | ||
| + | | 01:00.0 | VGA (GPU) | GTX-260 | ||
| + | | 02:00.0 | VGA (GPU | R9-270x (Video) | ||
| + | | 02:00.1 | Audio HDMI1 | R9-270x (HDMI) | ||
| + | | 02:00.1 | Audio HDMI2 | R9-270x (HDMI) | ||
| + | Ici on peut voir que le " | ||
| + | :!: Ignorer le " | ||
| + | ===== VFIO ===== | ||
| - | /!\ Ignorer le "**Kernel | + | ^ |
| - | ====== | + | | 00:14.2 | Audio device | AMD/ATI Intel HDA |
| + | | 01:00.0 | VGA (GPU) | GTX-260 | ||
| + | | 02:00.0 | VGA (GPU | R9-270x (Video) | ||
| + | | 02:00.1 | Audio HDMI1 | R9-270x (HDMI) | ||
| + | | 02:00.1 | Audio HDMI2 | R9-270x (HDMI) | ||
| - | ^ | + | FIXME Mise en forme |
| - | | 00:14.2 | Audio device | AMD/ATI Intel HDA | 1002: | + | <note help>#################### |
| - | | 01:00.0 | VGA (GPU) | GTX-260 | + | |
| - | | 02:00.0 | VGA (GPU | R9-270x (Video) | + | < |
| - | | 02:00.1 | Audio device | R9-270x (HDMI) | + | |
| - | + | ||
| - | + | ||
| - | <note help>#################### | + | |
| - | | + | |
| #vfio-pci ids=< | #vfio-pci ids=< | ||
| - | #Aucune | + | #Aucun Guillemet |
| - | #Exemple: options | + | # |
| + | | ||
| + | </ | ||
| </ | </ | ||
| <note help>#################### | <note help>#################### | ||
| - | Exemple: DEVICES=" | + | Exemple |
| - | #Attention au Guillemet (Début et fin de toutes les adresse) | + | < |
| - | #Chaque début d'adresse commence par __**0000:**__ (Attention au : après les 0000) | + | #Attention au Guillemet (Début et fin de toutes les adresse) |
| - | #Un espace entre chaque adresse (sauf la première | + | #Chaque début d’adresse commence par 0000: (Attention au : après les 0000) |
| + | #Une espace entre chaque adresse (sauf la première | ||
| + | </ | ||
| </ | </ | ||
| + | ===== FIX IOMMU ===== | ||
| + | ==== AMD ==== | ||
| + | <code bash >dmesg | grep AMD-Vi</ | ||
| + | < | ||
| + | [0.251399] [Firmware Bug]: AMD-Vi: IOAPIC[9] not in IVRS table <= SouthBridge Inconnus (Erreur 9) \\ | ||
| + | [0.251403] [Firmware Bug]: AMD-Vi: IOAPIC[10] not in IVRS table <= Northbridge Inconnus (Erreur 10) \\ | ||
| + | </ | ||
| + | L’erreur 9 correspond au SMBus et l’erreur 10 au IOMMU. | ||
| + | <code bash> | ||
| + | ^ Slot ^ Type ^ Désignation | ||
| + | |00:00.2 | IOMMU | Advanced Micro Devices, Inc. [AMD/ATI] RD990 I/O Memory Management Unit | 10 | ivrs_ioapic | ||
| + | |00:14.0 | SMBus | Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller (rev 42) | 9 | ivrs_ioapic | ||
| + | < | ||
| - | ====== FIX IOMMU ====== | + | **Éditer / |
| + | < | ||
| + | par | ||
| + | < | ||
| + | en adaptant selon le résultat obtenu précédemment | ||
| - | **AMD:** | + | Ensuite faire un : |
| - | <note>dmesg | grep AMD-Vi | + | <code>update-grub</code> |
| - | [0.251399] [Firmware Bug]: AMD-Vi: IOAPIC[9] not in IVRS table <= SouthBridge Inconnus (Erreur 9) \\ | + | Redémarrer |
| - | [0.251403] [Firmware Bug]: AMD-Vi: IOAPIC[10] not in IVRS table <= Northbridge Inconnus (Erreur 10) \\ | + | |
| - | L' | + | |
| - | </note> | + | |
| - | + | ==== Intel ==== | |
| - | < | + | FIXME |
| - | ^ Slot ^ Type ^ Désignation | + | |
| - | |00:00.2 | IOMMU | Advanced Micro Devices, Inc. [AMD/ATI] RD990 I/O Memory Management Unit | 10 | | + | |
| - | |00:14.0 | SMBus | Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller (rev 42) | 9 | | + | |
| - | \\ | + | |
| - | ^Base | + | |
| - | | ivrs_ioapic | + | |
| - | | ivrs_ioapic | + | |
| - | \\ | + | |
| - | **Ce qui donne : ivrs_ioapic[9]=00:14.0 ivrs_ioapic[10]=00:00.2** | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | **Éditer / | + | |
| - | Avant: | + | |
| - | GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" | + | |
| - | Après : \\ | + | |
| - | GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ivrs_ioapic[9]=00:14.0 ivrs_ioapic[10]=00: | + | |
| - | \\ | + | |
| - | Ensuite faire un : | + | |
| - | update-grub | + | |
| - | \\ | + | |
| - | Redémarrer | + | |
| - | \\ | + | |
| | | ||
| - | ====== Vérification Finale | + | ===== Vérification Finale ===== |
| - | \\ | + | <code bash>dmesg | grep "Found IOMMU\|remapping\|vfio" |
| - | **dmesg | grep "Found IOMMU\|remapping\|vfio" | + | < |
| - | [ 1.597597] AMD-Vi: Found IOMMU at 0000: | + | [ 1.597597] AMD-Vi: Found IOMMU at 0000: |
| - | [ 1.597598] AMD-Vi: Interrupt remapping enabled | + | [ 1.597598] AMD-Vi: Interrupt remapping enabled |
| - | [ 1.597712] AMD-Vi: Lazy IO/TLB flushing enabled | + | [ 1.597712] AMD-Vi: Lazy IO/TLB flushing enabled |
| - | | + | </ |
| - | <Manque quelque infos de ma part ! | + | |
| - | \\ | + | |
| - | ====== Script VFIO avec Qemu (Samba & Synergy) ====== | + | FIXME Manque quelques infos. En cours |
| - | Script | + | ===== Script |
| - | http:// | + | |
| - | \\ | + | [[https:// |
| Fix Synergy: (Bouton Suivant / Précédent / touch alt+gr) | Fix Synergy: (Bouton Suivant / Précédent / touch alt+gr) | ||
| - | Éditer le fichier synergy.conf | + | Éditer le fichier |
| - | Dans la section " | + | |
| - | | + | |
| - | Dans la section " | + | mousebutton(6) = keystroke(WWWBack) |
| - | mousebutton(6) = keystroke(WWWBack) | + | mousebutton(7) = keystroke(WWWForward) |
| - | mousebutton(7) = keystroke(WWWForward) | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| + | ---- | ||
| + | // | ||
