Qemu et VGAPassthrough "vfio: error, group 1 is not viable"

Demande d'aide : c'est ici.
Répondre
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5054
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Salut,
L'objectif est d'utiliser ma seconde carte (NVIDIA) dans une machine virtuelle
Si quelqu'un s'y connaît ou à une idée, il est le bienvenu.

Code : Tout sélectionner

$ lspci -nn | grep NVIDIA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF108 [GeForce GT 630] [10de:0f00] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation GF108 High Definition Audio Controller [10de:0bea] (rev a1)

Code : Tout sélectionner

$ uname -a
Linux tor 4.5.0-2-amd64 #1 SMP Debian 4.5.5-1 (2016-05-29) x86_64 GNU/Linux
La virtualisation est bien activée:

Code : Tout sélectionner

$ egrep -q '^flags.*(svm|vmx)' /proc/cpuinfo && echo virtualization extensions available
virtualization extensions available
Les options du grub:

Code : Tout sélectionner

GRUB_CMDLINE_LINUX_DEFAULT="append intel_iommu=on vfio_iommu_type1.allow_unsafe_interrupts=1 pcie_acs_override=downstream"
pci-stub à l'air OK:

Code : Tout sélectionner

$ dmesg |grep pci-stub
[    2.084458] pci-stub: add 10DE:0F00 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[    2.084513] pci-stub 0000:01:00.0: claimed by stub
Le script pour lancer la VM:

Code : Tout sélectionner

#!/bin/bash

configfile=/etc/vfio-pci.cfg

vfiobind() {
    dev="$1"
        vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
        device=$(cat /sys/bus/pci/devices/$dev/device)
        if [ -e /sys/bus/pci/devices/$dev/driver ]; then
                echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
        fi
        echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id

}

modprobe vfio-pci

cat $configfile | while read line;do
    echo $line | grep ^# >/dev/null 2>&1 && continue
        vfiobind $line
done

sudo qemu-system-x86_64 -enable-kvm -M q35 -m 4096 -cpu host \
-smp 4,sockets=1,cores=4,threads=1 \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-hda '/home/laurent/disk1.qcow2' \
-boot menu=on

exit 0
Et la sortie...

Code : Tout sélectionner

$ sudo ./seven.sh 0000:01:00.0
qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: error, group 1 is not viable, please ensure all devices within the iommu_group are bound to their vfio bus driver.
qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: failed to get group 1
qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: Device initialization failed
J'ai bien entendu cherché (je cherche depuis hier...) sur ces termes: vfio: error, group 1 is not viable. Sans succès.
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Bonjour lol

Pour utiliser le VGA Passthrough il faut que le microprocesseur et la carte mère implémentent la technologie IOMMU
Intel VT-d
ou AMD I/O Virtualization Technology

(J'en rêve depuis que ça existe, il me manque justement ce type de matériel…Grrrrrr !)
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5054
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Salut,
MicP a écrit :Bonjour lolPour utiliser le VGA Passthrough il faut que le microprocesseur et la carte mère implémentent la technologie IOMMU
Intel VT-d
ou AMD I/O Virtualization Technology
C'est le cas... z97-hd3 + i5-4690
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

…C'est le cas... z97-hd3 + i5-4690…
Ça m'aurait étonné que tu n'aie pas ce qu'il faut, mais au cas où…

:001: Parceque là, on est très très loin du EeePC 900 qui faisait tourner le serveur du WiKi à une époque :001:
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5054
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

MicP a écrit :
…C'est le cas... z97-hd3 + i5-4690…
Ça m'aurait étonné que tu n'aie pas ce qu'il faut, mais au cas où…

:001: Parceque là, on est très très loin du EeePC 900 qui faisait tourner le serveur du WiKi à une époque :001:
Tu m'étonne. Vieux et embourgeoisé...

Je suis un peu paumé dans ces histoires de groupe de devices. Je crois qu'il faut que je désactive tous les devices du groupe pour pouvoir m'en servir (si j'ai bien compris).

Code : Tout sélectionner

$ lspci -n -s 1:
01:00.0 0300: 10de:0f00 (rev a1)
01:00.1 0403: 10de:0bea (rev a1)
Et là j'aurais deux devices dans le groupe 1 (Le GPU et une carte son intégrée).
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
marcastro
Membre actif
Membre actif
Messages : 735
Inscription : 22 avr. 2016, 12:05
Localisation : variable
Status : Hors-ligne

MicP a écrit :
Bonjour lolPour utiliser le VGA Passthrough il faut que le microprocesseur et la carte mère implémentent la technologie IOMMU
Intel VT-d ou AMD I/O Virtualization Technology
quelle commande pour savoir ?
sur le forum depuis 2007.
sid et bookworm avec xfce
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

lol a écrit :Tu m'étonne. Vieux et embourgeoisé...
Ça compense un peu, et puis finalement, ça fait un peu moins mal :002:
…Je suis un peu paumé dans ces histoires de groupe de devices. Je crois qu'il faut que je désactive tous les devices du groupe pour pouvoir m'en servir (si j'ai bien compris).…
J'ai aussi compris la chose comme ça, mais il faut que je vérifie sur le web.

:005: En attendant de recevoir ta carte mère + le proc et les cartes graphiques (+ un mars et les chips) que tu va m'expédier parce qu'ils me sont indispensables pour faire les tests, et que "je le vaut bien". :005:

=======
marcastro a écrit :…quelle commande pour savoir ?…
C'est en vérifiant les caractéristiques du microprocesseur et de la carte mère, et seulement après avoir activé les options du BIOS nécessaires et l'option IOMMU du kernel que des commandes permettront de savoir si le matériel est prêt pour l'IOMMU.

Je trouve que la page suivante est assez bien détaillée en ce qui concerne la configuration du BIOS, du noyau,
et les commandes permettant de vérifier que tout est bien configuré pour l'IOMMU : wiki.archlinux : PCI passthrough Prerequisites

=======
Désolé pour la réactivité : Je suis dans la France profonde, avec débit web lamentable, et chaque fois que je dois "Prévisualiser", ça me prends un peu plus de 30 secondes…
C'est pas toujours aussi mauvais, mais aujourd'hui, c'est vraiment le pire => (MicP en mode ultra positif) Ça va aller beaucoup mieux demain, c'est absolument certain.
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5054
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Code : Tout sélectionner

$ egrep -wo 'vmx|lm|aes' /proc/cpuinfo  | sort | uniq| sed -e 's/aes/Hardware encryption=Yes (&)/g' -e 's/lm/64 bit cpu=Yes (&)/g' -e 's/vmx/Intel hardware virtualization=Yes (&)/g'
Hardware encryption=Yes (aes)
64 bit cpu=Yes (lm)
Intel hardware virtualization=Yes (vmx)'
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Effectivement, en plus de VTx, mais ça, je l'ai déjà sur ma machine :

Code : Tout sélectionner

michel@debg53sw:~$ egrep -wo 'vmx|lm|aes' /proc/cpuinfo  | sort | uniq| sed -e 's/aes/Hardware encryption=Yes (&)/g' -e 's/lm/64 bit cpu=Yes (&)/g' -e 's/vmx/Intel hardware virtualization=Yes (&)/g'
Hardware encryption=Yes (aes)
64 bit cpu=Yes (lm)
Intel hardware virtualization=Yes (vmx)
michel@debg53sw:~$ 
Il ne me manque que le VT-d => Faut juste changer la carte mère et le microprocesseur, un tout petit détail, quoi… :001:

=======
https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Enabling_IOMMU a écrit :…You will also have to enable iommu support in the kernel itself through a bootloader kernel option. Depending on your type of CPU, use either intel_iommu=on for Intel CPUs (VT-d)…
En lisant ça, je me dis que depuis que systemd est arrivé, il n'est peut-être plus nécessaire de désactiver tous les devices du groupe pour pouvoir s'en servir.
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5054
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

MicP a écrit :
https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Enabling_IOMMU a écrit :…You will also have to enable iommu support in the kernel itself through a bootloader kernel option. Depending on your type of CPU, use either intel_iommu=on for Intel CPUs (VT-d)…
En lisant ça, je me dis que depuis que systemd est arrivé, il n'est peut-être plus nécessaire de désactiver tous les devices du groupe pour pouvoir s'en servir.
Ce serait bien... Mais il y a aussi cette phrase:
For instance, in the example above, both the GPU in 06:00.0 and its audio controller in 6:00.1 belong to IOMMU group 13 and can only be passed together.
Et j'ai trois devices dans le groupe 1... :017:

Code : Tout sélectionner

IOMMU group 1
	00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller [8086:0c01] (rev 06)
	01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF108 [GeForce GT 630] [10de:0f00] (rev a1)
	01:00.1 Audio device [0403]: NVIDIA Corporation GF108 High Definition Audio Controller [10de:0bea] (rev a1)
Du coup je vais réessayer avec la carte intégrée qui est seule dans son groupe...

Code : Tout sélectionner

IOMMU group 2
	00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06)
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5054
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Re,
J'ai avancé avec la carte intégrée Intel.
La VM démarre convenablement (plus d'erreur liée au groupe).
Mais je me retrouve avec 2 cartes graphiques dans la VM, et bien entendu c'est la VGA standard qui est activée...)
Capture du 2016-07-18 13-14-04.png
Capture du 2016-07-18 13-15-24.png
Désactiver la carte VGA standard ne fonctionne pas.
Le problème vient probablement de l'hôte (ma Debian).

Il y a un truc que je ne m'explique pas.
Sur le Wiki Debian il est précisé dans les options de qemu ceci:

Code : Tout sélectionner

-bios /usr/share/qemu/bios.bin -vga none \
Or... ce fichier n'existe pas!

Code : Tout sélectionner

$ stat /usr/share/qemu/bios.bin
stat: impossible d'évaluer '/usr/share/qemu/bios.bin': Aucun fichier ou dossier de ce type

Code : Tout sélectionner

$ dpkg -S /usr/share/qemu/bios.bin
dpkg-query: aucun chemin ne correspond à /usr/share/qemu/bios.bin
Les seuls bios.bin que j'ai sont les suivants:

Code : Tout sélectionner

$ locate bios.bin
/home/laurent/android-sdk-linux/tools/lib/pc-bios/bios.bin
/usr/share/seabios/bios.bin
/usr/share/vgabios/vgabios.bin
Autre erreur détectée:

Code : Tout sélectionner

$ dmesg | grep -e DMAR -e IOMMU
...
[    0.000000] DMAR: IOMMU enabled
...
[    7.007779] DMAR: DRHD: handling fault status reg 2
[    7.007829] DMAR: DMAR:[DMA Read] Request device [05:00.0] fault addr ffbfc000 
               DMAR:[fault reason 06] PTE Read access is not set
[    5.548304] vboxpci: IOMMU found
Voilà ou j'en suis... :wink:
Une idée ou un conseil ?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Bonjour lol

Apparemment le fichier BIOS de la machine virtuelle pourrait être la cause des problèmes rencontré : https://bbs.archlinux.org/viewtopic.php?id=176398

J'utilise Qemu/KVM et le fichier /usr/share/seabios/bios.bin est présent dans le système de fichiers de ma machine hôte.

Désolé de ne pas pouvoir plus t'aider.
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5054
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Re,

Oui, j'avais lu ce topic. Mais comme il n'est pas du tout renseigné.
Le mec désactive juste la virtualisation. Clair que si je fais la même chose je n'aurais plus l'erreur.

Je m'oriente vers un boot EFI de la VM (encore une galère à surmonter). Une idée trouvée ici: https://pve.proxmox.com/wiki/Pci_passth ... mmended.29
Mais il me faut aussi un OS => à W$7...
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5054
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Suite...

Pas mieux avec OVMF... J'ai toujours 2 cartes graphiques...

Je tente une MAJ du bios qui date un peu, on sait jamais...
Je vais aussi installer un OS plus intelligent qui me permettra d'avoir plus d'infos sur le hardware initialisé dans la VM. :003:
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
alt
Messages : 2
Inscription : 21 mai 2018, 11:38
Status : Hors-ligne

Hello,
Je passais par hasard en cherchant des infos sur OVMF et comme le post n'est pas fermé...
Je sais que c'est une communauté francophone mais, pour ceux qui voudrait désespérément faire tourner une vm de jeu sur Debian :
https://forum.level1techs.com/t/play-ga ... ide/108981
Il y est expliqué comment patcher le noyau avec ACS qui permet de gérer le partage des blocs io.
Je vous conseille un noyau récent et le patch présent à cette adresse https://queuecumber.gitlab.io/linux-acs-override/
Pour la souris et le clavier utilisez Synergy.
Si vous comptez utiliser virt-manager, utilisez la version du créateur et pas celle des dépôts Debian (trop de soucis avec apparmor et polsec).
Cela ne sert à rien de forcer, il faut utiliser un plus gros marteau !
Avatar de l’utilisateur
lol
Site Admin
Site Admin
Messages : 5054
Inscription : 04 avr. 2016, 12:11
Localisation : Madagascar
Status : Hors-ligne

Salut et merci pour les liens.
Je jetterais un coup d'oeil dessus quand j'aurais un moment.

:006:
Règles d'usage du forum. Signalez si vous avez posté votre question sur un autre forum. Explications ici
Debian Unstable. Mate/LXQT. Dieu, en créant l'homme, a quelque peu surestimé ses capacités.
Avatar de l’utilisateur
alt
Messages : 2
Inscription : 21 mai 2018, 11:38
Status : Hors-ligne

J'ai commencé à écrire un retex, mais ayant actuellement d'autres priorités ça n'avance pas vite :(
Ca serait bien si d'autres personnes participaient pour pouvoir couvrir le plus de cas de figures possibles (messages erreurs apparmor/polkit, sécurité, optimisation etc...) et ajouter ça au wiki.
Cela ne sert à rien de forcer, il faut utiliser un plus gros marteau !
Avatar de l’utilisateur
vv222
Membre actif
Membre actif
Messages : 852
Inscription : 18 avr. 2016, 20:14
Contact :
Status : Hors-ligne

Un tuto rapide qui peut peut-être dépanner :
https://debian-facile.org/utilisateurs: ... assthrough

Je m’intéresse aussi au sujet, mais malheureusement je manque de temps pour vraiment m’y pencher.
Répondre