Proxmox [Mémo] Configurer son iGPU en Passthrough dans une VM Proxmox

EVO

Administreur
Membre du personnel
25 Novembre 2019
8 277
1 588
278
/var/run/docker.sock
[Mémo] Configurer son IGPU en Passthrough dans une VM Proxmox
/!\ Cela a était réalisé sous Proxmox 7 avec un i3-10100T ( iGPU UHD 630 ), je suis encore en phase d'expérimentation.

En SSH, sur l'hote Proxmox :

On edit le grub
`nano /etc/default/grub`

On remplace la ligne : GRUB_CMDLINE_LINUX_DEFAULT="quiet"
Par : GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=vesafb:off,efifb:off"

Puis, on update le grup : update-grub

Maintenant, on edit le fichier de modules :
nano /etc/modules

Pour y indiquer ceci :
Code:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

On execute la commande suivante :
dmesg | grep 'remapping'

Vous devais avoir une ligne indiquant "DMAR-IR: Enabled IRQ remapping in x2apic mode"
Note : x2apic peut etre différent sur des plus anciens CPU.

Puis on exécute la commande : find /sys/kernel/iommu_groups/ -type l
Celle-ci doit nous retourner des lignes, sinon rebooter Proxmox et recommencer, si la commande ne sort rien, vérifier que VT-d est actif dans le bios de votre carte-mere.

Puis on fait : lspci pour trouver le numero de notre iGPU
Dans mon cas, j'ai :
00:02.0 VGA compatible controller: Intel Corporation CometLake-S GT2 [UHD Graphics 630] (rev 03)

L'adresse de mon iGPU est donc : 00:02.0

On réutilise l'adresse trouvé au dessus dans la commande suivante :
`lspci -n -s 00:02`
Cela me donne : 00:02.0 0300: 8086:9bc8 (rev 03)

On réutilise 8086:9bc8 ( trouvé au dessus ) dans la commande suivante :
`echo "options vfio-pci ids=8086:9bc8" > /etc/modprobe.d/vfio.conf`

Nous allons editer le fichier blacklist.conf :
nano /etc/modprobe.d/blacklist.conf

Et on y rajoute les lignes suivante :
Code:
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915

A partir de la, on reboot notre machine hote Proxmox.

Maintenant, nous sommes prêt a intégrer le iGPU dans un VM, par exemple la VM 100 ( a adapter suivant le numero de votre VM )

Toujours en SSH sur l'hote Proxmox, on ouvre le fichier de configuration de la VM ( ici 100 ) :
nano /etc/pve/qemu-server/100.conf

En derniere ligne, on rajoute :
hostpci0: 00:02.0,x-vga=on
Attention : ici 00:02.0 est a adapter suivant l'adresse de votre iGPU que vous avez trouvé quelques étapes plus haut avec la commande lspci

Une fois, le fichier éditer, on démarre la VM, et c'est bon :)

2022-01-26 - Ajout de l'indication de modification du fichier /etc/modprobe.d/vfio.conf

Source : https://pve.proxmox.com/wiki/Pci_passthrough
:)
 
Dernière édition:
  • J'aime
Réactions: MilesTEG et FX Cachem
Salut,
Pour l'édition de la VM, il est possible de le faire via l'interface.

GPU Primaire correspond au paramètre x-vga=on
 
Salut ,
@EVOTk , un petit retour depuis la mise en place ?
La console de l'hôte et de la VM est toujours accessible ? J'ai pu lire que non ?
Je tenterai bien sur Proxmox V8 juste pour que Frigate est accès au iGPU
Merci
 
Salut,
La console de l'hote n’était plus accessible lors de mes tests. Par contre, j'ai abandonné cette idée, car pas asser stable a mon gout, de plus la perte de performance n'est pas négligeable.
 
Merci pour le retour, je garde ce tuto sous le coude des fois que, a voir si c'est bénéfique pour mon utilisation ;)
 
  • J'aime
Réactions: EVO
Bonjour,

Ma page Github donne des subtilités pour de meilleur performance.


Je suis actuellement en VFIO avec ma RX 6700XT et sa marche du tonnerre .

NVME 2 x 1 To
4 x 6 TO
RX 6750XT
Ryzen 7 3700X
 
Bonjour,

Ma page Github donne des subtilités pour de meilleur performance.


Je suis actuellement en VFIO avec ma RX 6700XT et sa marche du tonnerre .

NVME 2 x 1 To
4 x 6 TO
RX 6750XT
Ryzen 7 3700X
Bonsoir @Drthrax74
Merci pour le lien, mais comme le dit @EVOTk, le sujet ici concerne l'iGPU.
Cela étant dit, j'ai quand même regardé ce qui est présent dans ton GH, car j'ai installé Proxmox sur mon ordi, et installé une MV Win11 pour laquelle j'aimerais bien avoir le GPU Passthrough de ma GTX1060.
Mais tes documents manquent quand même d'explications...
Si on est débutant avec Proxmox, c'est impossible de suivre tes consignes... ni de savoir vraiment ce que font ces consignes ou les .md dans lesquelles elles sont (pour certaines).

On parle iGPU ici,. Pour les GPU c'est différents
En effet.
Question : est-il possible d'utiliser l'iGPU pour une MV, et le GPU pour une autre ?
J'aimerais avoir l'iGPU pour une MV linux, et le GPU pour la MV Windows.
Question bis : ça ne posera pas de souci pour continuer à utiliser le GTX avec le windows qui n'est pas une MV ? Car j'ai un dual boot Proxmox / Windows 10 ^^
 
Bonjour,
L'interruption matériel ou VFIO permet de réattribuer un matériel physique au module VFIO puis de pouvoir attribuer à terme le GPU.
Il faut comprendre que si le iGPU utilise le même pilote GPU, sa peux poser problème.

Ensuite ma Documentation est plus des prises de note pour un niveau confirmé sous Linux car la mise en place requiert de comprendre pas mal de chose. Simple en soit mais si on les possèdes pas , sa va être dur.

Si tu le souhaites, je pourrais t'aider à réaliser un VFIO .
 
@EVOTk
Pour l'iGPU que je souhaiterais fournir à ma MV linux :
1689269027226.png
Ce sont ces deux lignes ? (en haut)
 
Bonjour,

Pour l'iGPU, on n'y touchera pas.
En fait j’ai deux MV :
Une Windows pour laquelle je veux passthrough la carte graphique nvidia.
Une Linux pour laquelle je veux passthrough le igpu Intel.
Mais d’abord la nvidia dans l’autre sujet 😊
 
Depuis les dernières releases du noyaux linux, l'édition des fichiers semblent plus nécessaires.
 
Bonjour,

J'ai installé une VM sous Proxmox de Plex Serveur. Je suis parvenu à faire reconnaître mon iGPU par la VM grâce à ce tuto (merci à vous). Plex-Serveur reconnait bien l'iGPU dans le paramétrage. Par contre, lorsque je fais du transcodage, je souhaiterais savoir à quelle pourcentage est sollicité l'iGPU. Existe-t-il un moyen de mesure la sollicitation de l'iGPU (sous proxmox, en ligne de comannde, dans la VM, sous Plex...) ?
 
Ok du coup, on a pas vraiment moyen de voir si c'est bien l'iGPU qui fait le taf de transcodage plutôt que le CPU.
Merci pour la réponse