Le VFIO 1) PASSTHROUGH consiste à décharger le pilote d'un matériel (Carte graphique , usb , souris …) pour ensuite l'assigner à une machine virtuelle par exemple.
Cette technique demande des pré-requis, et nécessite du matériel plus ou moins facile à réaliser. mettre en place ou il faut le fabriquer?
: Intérêt concret?
Il existe 2 Types d'adresse :
Saisissez dans un terminal la commande suivante:
dmesg | grep "AMD-Vi\|Intel VT-d"
Vous devriez obtenir
AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40
Qui indique que le module IOMMU a bien été trouvé
AMD-Vi: Interrupt remapping enabled
L'interruption de l'assignement du matériel est activée (Enable), sans ce paramètre on ne pourra pas faire le VFIO.
Saisissez dans un terminal la commande suivante:
lscpu | grep "Virtualisation"
Devrait répondre
Virtualisation : AMD-V
Tous les Pré-Requis sont donc bons.
Lister tout, en saisissant dans un terminal la commande suivante:
lspci -nnv | grep "VGA\|Audio\|Kernel driver in use: snd_hda_intel\|Kernel driver in use: nouveau\|Kernel driver in use: nouveaufb\|Kernel driver in use: radeon"
Nvidia inclus: : Autant ne proposer que cette ligne, non?
lspci -nnv | grep "VGA\|Audio\|Kernel driver in use: snd_hda_intel\|Kernel driver in use: nouveau\|Kernel driver in use: nvidia\|Kernel driver in use: nouveaufb\|Kernel driver in use: radeon"
La Sortie HDMI à une seconde adresse VendorID:DeviceID
Slots | Type | Désignation | VendorID:DeviceID | Kernel Driver | Notes |
---|---|---|---|---|---|
00:14.2 | Audio device | AMD/ATI Intel HDA | 1002:4383 | snd_hda_intel | Carte-mère |
01:00.0 | VGA (GPU) | GTX-260 | 10de:05e2 | nouveau | Linux (HOTE) |
02:00.0 | VGA (GPU | R9-270x (Video) | 1002:6810 | radeon | VFIO (GUEST) |
02:00.1 | Audio HDMI1 | R9-270x (HDMI) | 1002:aab0 | snd_hda_intel | VFIO (GUEST) |
02:00.1 | Audio HDMI2 | R9-270x (HDMI) | 1043:aab0 | snd_hda_intel | VFIO (GUEST) |
Ici la carte graphique est branchée en HDMI et donc les signaux Vidéo / Son ont été séparés.
On ne pourra pas interdire le pilote " snd_hda_intel" car il est présent sur la carte son lié à la fois à la carte-mère et à la sortie son inclus dans le HDMI. (Sortie HDMI)
lscpu | grep name
pci_stub vfio vfio_iommu_type1 vfio_pci kvm kvm_amd kvm_intel <-- effacer cette ligne par exemple si vous avez un processeur AMD
sudo update-initramfs -u
Après avoir redémarrer votre machine, vérifier la bonne mise en place du vfio en saisissant dans un terminal:
lspci -v | grep "VGA\|Audio\|Kernel driver in use: snd_hda_intel\|Kernel driver in use: nouveau\|Kernel driver in use: nouveaufb\|Kernel driver in use: radeon\|Kernel driver in use: vfio-pci"
Vous devriez obtenir un tableau proche de:
Slots | Type | Désignation | VendorID:DeviceID | Kernel Driver | Notes |
---|---|---|---|---|---|
00:14.2 | Audio device | AMD/ATI Intel HDA | 1002:4383 | snd_hda_intel | Carte-mère |
01:00.0 | VGA (GPU) | GTX-260 | 10de:05e2 | nouveau | Linux (HOTE) |
02:00.0 | VGA (GPU | R9-270x (Video) | 1002:6810 | vfio-pci | VFIO (GUEST) |
02:00.1 | Audio HDMI1 | R9-270x (HDMI) | 1002:aab0 | vfio-pci | VFIO (GUEST) |
02:00.1 | Audio HDMI2 | R9-270x (HDMI) | 1043:aab0 | snd_hda_intel | VFIO (GUEST) |
Ici on peut voir que le "Kernel Driver" est "vfio-pci".
Ignorer le "Kernel Modules
Slots | Type | Désignation | VendorID:DeviceID | Kernel Driver | Notes |
---|---|---|---|---|---|
00:14.2 | Audio device | AMD/ATI Intel HDA | 1002:4383 | snd_hda_intel | Carte-mère |
01:00.0 | VGA (GPU) | GTX-260 | 10de:05e2 | nouveau | Linux (HOTE) |
02:00.0 | VGA (GPU | R9-270x (Video) | 1002:6810 | vfio-pci | VFIO (GUEST) |
02:00.1 | Audio HDMI1 | R9-270x (HDMI) | 1002:aab0 | vfio-pci | VFIO (GUEST) |
02:00.1 | Audio HDMI2 | R9-270x (HDMI) | 1043:aab0 | Encoursderedaction | VFIO (GUEST) |
Mise en forme
Exemple
options vfio-pci ids=1002:6810,1002:aab0 ,1043:aab0 #vfio-pci ids=<ADRESSE VendorID:DeviceID><Virgule><ADRESSE VendorID:DeviceID> #Aucune Guillemet #Exemple: 1002:6810 (R9-270x - GPU ) , 1002:aab0 (R9-270x - HDMI1) , 1043:aab0 (R9-270x - HDMI2) options vfio-pci ids=1002:6810,1002:aab0,1043:aab0
Exemple
DEVICES="0000:02:00.0 0000:02:00.1" #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) #Un espace entre chaque adresse (sauf la première collé à la guillemet)
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.
lspci | grep "SMBus\|IOMMU"
Slot | Type | Désignation | Code Erreur | Base | Erreur | Slot |
---|---|---|---|---|---|---|
00:00.2 | IOMMU | Advanced Micro Devices, Inc. [AMD/ATI] RD990 I/O Memory Management Unit | 10 | ivrs_ioapic | [10]= | 00:00.2 |
00:14.0 | SMBus | Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller (rev 42) | 9 | ivrs_ioapic | [9]= | 00:14.0 |
ivrs_ioapic[9]=00:14.0 ivrs_ioapic[10]=00:00.2
Éditer /etc/default/grub (Modifier la ligne selon votre cas) pour remplacer la ligne
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
par
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ivrs_ioapic[9]=00:14.0 ivrs_ioapic[10]=00:00.2"
en adaptant selon le résultat obtenu précédemment
Ensuite faire un :
update-grub
Redémarrer
dmesg | grep "Found IOMMU\|remapping\|vfio"
[ 1.597597] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40 [ 1.597598] AMD-Vi: Interrupt remapping enabled [ 1.597712] AMD-Vi: Lazy IO/TLB flushing enabled
Manque quelques infos. En cours
Fix Synergy: (Bouton Suivant / Précédent / touch alt+gr)
Éditer le fichier synergy.conf Chemin exact
altgr = alt
mousebutton(6) = keystroke(WWWBack) mousebutton(7) = keystroke(WWWForward)
Contributeurs: dexter74