Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/03/2016, à 18:42

éphialtès2016

1er post ( soyez indulgent ^^) CG Passthrough en suivant tuto de puget

Le lien du tuto avant tout  : https://www.pugetsystems.com/labs/artic … 4-KVM-585/

Comme tous les tutos, ça parait simple ! Cependant pour améliorer mes connaissances, je me suis lancé ce défi de réussir ce tuto soit la création d'une vm avec CG passthrough.

J'ai eu des soucis pour l'isolement de la carte graphique mais en lisant les autres posts de la communauté, j'ai pu m'en sortir et réussir à blacklister mon driver ( ben oui, c clair , même ça j'ai eu un peu de mal. mais j'obtiens bien :

internet@internet-All-Series:~$ dmesg | grep pci-stub
[    2.253893] pci-stub: add 1002:6898 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[    2.253901] pci-stub 0000:06:00.0: claimed by stub
[    2.253904] pci-stub: add 1002:AA50 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
[    2.253917] pci-stub 0000:06:00.1: claimed by stub
internet@internet-All-Series:~$ 

Souhaitant réaliser la vm avec la RADEON hd5870, je me dis que je suis donc sur le bon chemin.
Je fais un lspci pour vous montrer le matériel, je fais au plus court pour le post ne soit pas trop long.

internet@internet-All-Series:~$ lspci -nn | grep VGA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF110 [GeForce GTX 580] [10de:1080] (rev a1)
06:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Cypress XT [Radeon HD 5870] [1002:6898]

Je vous indique ce que j'ai fait suivant le tuto de puget, ce qui donne
step1. "Ubuntu modules and bootloader"

internet@internet-All-Series:~$ cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
pci_stub
vfio
vfio_iommu_type1
vfio_pci
kvm
kvm_intel

internet@internet-All-Series:~$ /etc/modules

Puis la modif du grub :

internet@internet-All-Series:~$ cat /etc/default/grub | grep GRUB_
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on vfio_iommu_type1.allow_unsafe_interrupts=1"
GRUB_CMDLINE_LINUX=""

Step 2. Blacklist de la CG
(je l'ai montré plus haut avec le dmesg | grep pci-stub)
J'ai fait la modif de /etc/initramfs-tools/modules  comme demandé ce qui donne :

internet@internet-All-Series:~$ cat /etc/initramfs-tools/modules | grep pci_
pci_stub ids=1002:6898,1002:aa50

Step3. la creation du fichier vfio.cfg //
J'ai donc ce fichier là :

internet@internet-All-Series:~$ cat /etc/vfio-pci1.cfg
0000:06:00.0
0000:06:00.1

internet@internet-All-Series:~$ 

Step4. Creation du disk image.

internet@internet-All-Series:~$ dd if=/dev/zero of=/home/internet/puget/windows.img bs=1M seek=100000 count=0
0+0 enregistrements lus
0+0 enregistrements écrits
0 octet (0 B) copié, 0,000150446 s, 0,0 kB/s
internet@internet-All-Series:~$ 

Je ne vois pas d'erreur mais bon.

Step5. creation du script de lancement de la machine virtuelle.

internet@internet-All-Series:/usr$ cat windows
#!/bin/bash

configfile=/etc/vfio-pci1.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 \
-bios /usr/share/qemu/bios.bin -vga none \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=06:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=06:00.1,bus=root.1,addr=00.1 \
-drive file=/home/puget/windows.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk \
-drive file=/home/Téléchargements/iso/windows64.iso,id=isocd -device ide-cd,bus=ide.1,drive=isocd \
-boot menu=on

exit 0
internet@internet-All-Series:/usr$ 

Alors voilà maintenant les erreurs générées  ; j'ai fait 2 lancement de scripts un normal et l'autre en sudo

internet@internet-All-Series:/usr$  ./windows
./windows: ligne 12: /sys/bus/pci/drivers/vfio-pci/new_id: Permission non accordée
./windows: ligne 12: /sys/bus/pci/drivers/vfio-pci/new_id: Permission non accordée
cat: /sys/bus/pci/devices//vendor: Aucun fichier ou dossier de ce type
cat: /sys/bus/pci/devices//device: Aucun fichier ou dossier de ce type
./windows: ligne 12: /sys/bus/pci/drivers/vfio-pci/new_id: Permission non accordée
qemu-system-x86_64: -drive file=/home/puget/windows.img,id=disk,format=raw: Could not open '/home/puget/windows.img': No such file or directory
internet@internet-All-Series:/usr$ sudo ./windows
cat: /sys/bus/pci/devices//vendor: Aucun fichier ou dossier de ce type
cat: /sys/bus/pci/devices//device: Aucun fichier ou dossier de ce type
./windows: ligne 12 : echo: erreur d'écriture : Argument invalide
qemu-system-x86_64: -drive file=/home/puget/windows.img,id=disk,format=raw: Could not open '/home/puget/windows.img': No such file or directory
internet@internet-All-Series:/usr$ 

Voilà, j'ai modifié ce1er post comme me l'avait indiqué le modérateur pour y mettre du BBcode. En espérant y être correctement parvenu.


Si vous voyez des erreurs évidentes que je ne verrais pas , je serais heureux que la comunauté me guide :-)


Merci, à la communauté !
éphi.


Modération : merci à l'avenir d'utiliser les balises code (explications ici).

Dernière modification par éphialtès2016 (Le 23/03/2016, à 18:11)

Hors ligne

#2 Le 24/03/2016, à 10:02

éphialtès2016

Re : 1er post ( soyez indulgent ^^) CG Passthrough en suivant tuto de puget

Me demandant d'utiliser les " balises codes, j'ai refait mon post et  j'ai trouvé une erreur flagrante sur le script de la vm .
Le chemin du fichier .mg et .iso était erroné.

-drive file=/home/puget/windows.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk \
-drive file=/home/Téléchargements/iso/windows64.iso,id=isocd -device ide-cd,bus=ide.1,drive=isocd \

Je l'ai donc modifié.

-drive file=/home/internet/puget/windows.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk \
-drive file=/home/internet/Téléchargements/iso/windows64.iso,id=isocd -device ide-cd,bus=ide.1,drive=isocd \

Il faut commencer par la première erreur du script de la vm pour avancer :

cat: /sys/bus/pci/devices//vendor: Aucun fichier ou dossier de ce type

Si j'arrive à comprendre, cela veut indiquer que $dev est vide selon le script.
Mais j'en suis venu à me demander si mon matériel est caractéristement bon pour faire ce GPU Passthrough.
J'ai une  CM Z87-C une RADEON HD5870 pour la vm et une GTX580 pour ubuntu 15.10.

Ce qui me fait m'interroger c'est qu' un  post ( http://www.gitztalk.com/posts/2014/06/3 … n-a-vm-fr/ ) dit :

Pour faire du VGA passthrough, le système hôte doit avoir des capacités IOMMU3.

internet@internet-All-Series:/usr$ dmesg | grep -e DMAR -e IOMMU
[    0.000000] DMAR: IOMMU enabled
internet@internet-All-Series:/usr$ 
internet@internet-All-Series:/usr$ find /sys/kernel/iommu_groups/ -type l
internet@internet-All-Series:/usr$ 

Je trouve que malgré un " enabled" , je n'ai pas les mêmes informations que sur les differents post que je lis. :-/
Donc je continue à poser des questions sur ce problème. Si quelqu'un voit une autre évidence face à mon début précaire, qu'il n'hésite pas  :-)

Dernière modification par éphialtès2016 (Le 24/03/2016, à 10:03)

Hors ligne

#3 Le 26/04/2016, à 12:36

dexter74

Re : 1er post ( soyez indulgent ^^) CG Passthrough en suivant tuto de puget

Salut
ton problème es du au fait que le tutorial es pas à jour sur les fichier config.
Prend celui ci : https://bbs.archlinux.org/viewtopic.php?id=162768

je te propose de lire la Documentation VFIO que j'ai écrit récemment !

IOMMU:

dmesg|grep -e DMAR -e IOMMU
lspci | grep SMBus
lspci | grep IOMMU

Information matériel:

lspci -k
lspci -nn | grep "VGA\|Audio"
lsusb
lscpu

VFIO:

cat /etc/vfio-pci.cfg
cat /etc/modprobe.d/vfio.conf

MOI:
- Matériel + config OS :http://pastebin.com/CyWYUAjB
- Mon Script: http://pastebin.com/vppJNuGm

Dernière modification par dexter74 (Le 04/05/2016, à 11:50)

Hors ligne