Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1835 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Logiciels

  [Topic Unique] VGA/PCI Passthrough et VFIO sous GNU/Linux

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8  9  10  11  12  13  14
Page Précédente
Auteur Sujet :

[Topic Unique] VGA/PCI Passthrough et VFIO sous GNU/Linux

n°1349860
NHiX
Cop1
Posté le 22-12-2013 à 18:43:07  profilanswer
 

MAJ du 11/01/15
Grâce à tybobab, voici un tutoriel qui devrait grandement vous simplifier la vie si vous souhaitez faire du VFIO avec votre carte graphique (matériel compatible)
Tout d'abord celà fonctionne sur une Fedora 21 workstation, je n'ai pas testé d'autre distribution, et contrairement à tybobab, j'utilise virt-manager
ça se passe dans un terminal.

Code :
  1. sudo -i


Code :
  1. dnf update
  2. yum install @virtualization


 

Code :
  1. cd /etc/yum.repos.d/
  2. wget https://fedorapeople.org/groups/vir [...] eview.repo
  3. dnf install nano
  4. dnf update


 
On va ensuite édité le grub

Code :
  1. nano /etc/default/grub


 
Pour y ajouter sur la ligne  
 

Code :
  1. GRUB_CMDLINE_LINUX="rhgb intel_iommu=on quiet"


 
On va regénérer le grub maintenant

Code :
  1. grub2-mkconfig -o /boot/grub2/grub.cfg


 
Création du fichier vfio-bind avec nano

Code :
  1. nano /usr/bin/vfio-bind


 
Voici le contenu à coller dans ce fichier
 

Code :
  1. #!/bin/bash
  2. modprobe vfio-pci
  3. for dev in "$@"; do
  4.         vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
  5.         device=$(cat /sys/bus/pci/devices/$dev/device)
  6.         if [ -e /sys/bus/pci/devices/$dev/driver ]; then
  7.                 echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
  8.         fi
  9.         echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
  10. done


On donne ensuite les autorisations nécessaire à ce fichier avec

Code :
  1. chmod 755 /usr/bin/vfio-bind


Blocage ensuite du driver de la carte graphique, attention celle-ci sera inutilisable sous GNU/Linux ensuite.

Code :
  1. nano /etc/modprobe.d/blacklist.conf


Selon votre carte graphique, AMD ou nVidia
le contenu du fichier sera different
dans mon cas, pour une carte AMD

Code :
  1. blacklist radeon


Maintenant, vous rebootez avec  

Code :
  1. reboot


Dans un terminal ensuite, vous lancez  

Code :
  1. sudo vfio-bind 0000:01:00.0 0000:01:00.1


et normalement avec une commande

Code :
  1. lspci -k


le module utilisé sera vfio-pci
 
Merci à tybobab, sans qui ce tutoriel n'aurait jamais vu le jour
 
 
MAJ du 18/04/14
[Topic Unique] VGA/PCI Passthrough et VFIO sous GNU/Linux
 
Lien proposé par tybobab
http://linuxfr.org/users/chrisk/jo [...] fonctionne
 
Lien proposé par jo popo
http://edencomputing.com/index.php [...] u-support/
 
 
MAJ du 11/01/14
 
! Les Pré-requis pour ce projet, sont un CPU et un chipset compatible avec le Vt-d et le VT-x !
 
Le projet est de faire cohabiter plusieurs OS à l'aide de VM, ça c'est déjà connu, on peut le faire avec Virtualbox ou autre Vmware...
Mais ce dont on va parler ici, c'est du Qemu-KVM ou autre Xen, tout ça sur du GNU/Linux.
Mon expérience se base sur Debian Jessie, mais je pense qu'on peut adapter ça pour de l'Arch, Ubuntu, ou encore CentOS...
 
Le but est de cumulé les avantages des OS, attention aux trolls...
GNU/Linux: stabilité, exigence matériel légère ...
MS Windows: Jeux 3D, logiciel d'imagerie ...
MacOS: panel de logiciel de création....
 
Bref, partant du principe que chaque OS à des avantages et des inconvénients
On va sélectionner chaque OS en fonction de ses avantages, pour résumer
 
On va partir sur un système de base (aussi appelé Dom0 pour Xen), un OS GNU/Linux léger comme Debian
On va créer une machine virtuelle Windows8.1 à laquelle on va dédier une carte graphique (sous réserve que votre installation en possède une, en plus du chipset intégré)
 
Voici comment faire dans le cas de ma configuration:
 
Je pars d'une Debian Jessie, fraîchement installée, on se connecte en super-utilisateur
 

Code :
  1. echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf


On "blacklist" le module radeon (ou fglrx, dans le cas d'un pilote propriétaire AMD) (ou nouveau nvidia, dans le cas d'une carte graphique nVidia)
 

Code :
  1. update-initramfs -u


 
lspci afin de nous montrer la carte graphique à donner à notre future VM Windows8.1

Code :
  1. 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cayman PRO [Radeon HD 7950] <-- radeon 7950
  2. 01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Cayman/Antilles HDMI Audio [Radeon HD 7900 Series] <-- radeon 7950 audio


 
lspci -n

Code :
  1. 01:00.0 0300: 1002:679a <-- radeon 7950
  2. 01:00.1 0403: 1002:aaa0 <-- radeon 7950 audio


 

Code :
  1. nano /etc/default/grub


Code :
  1. pci-stub.ids=1002:679a,1002:aaa0 vfio_iommu_type1.allow_unsafe_interrupts=1


 

Code :
  1. update-grub


 

Code :
  1. echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/vfio_iommu_type1.conf


 

Code :
  1. nano /usr/bin/vfio-bind


 

Code :
  1. #!/bin/bash
  2. modprobe vfio-pci
  3. for dev in "$@"; do
  4.         vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
  5.         device=$(cat /sys/bus/pci/devices/$dev/device)
  6.         if [ -e /sys/bus/pci/devices/$dev/driver ]; then
  7.                 echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
  8.         fi
  9.         echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
  10. done


 

Code :
  1. chmod 755 /usr/bin/vfio-bind


 

Code :
  1. vfio-bind 0000:01:00.0 0000:01:00.1


 

Code :
  1. apt-get install virt-manager qemu


 
WIP
 
 
 
Post original:
Bonjour les copains et copines :)
 
Voilà je viens de me monter ma nouvelle config dans le but avoué d'en faire une station de virtualisation de Bureau/Serveur/Jeux
 
4770S / Q87m-vPro pour la compatibilité VT-x VT-d
HD7950 pour le PCI Passthrough avec le VT-d
 
OS CentOS 6.5, car il possède ce que je recherche pour un Dom0, il est très léger.
 
[root@localhost NHiX]# xl list
Name                                        ID   Mem VCPUs State Time(s)
Domain-0                                     0  1023     2     r-----    1829.7
windows8                                     3  8191     4     -b----    3875.3
gnu                                          4  2043     2     -b----      13.5
 
Donc 1Go de RAM pour mon Dom0 ce qui me parait suffisant
8Go pour Windows 8.1 x64, juste pour Battlefield 4 xD
2Go pour ma VM Debian, qui s'occupe de la partie serveur/stockage
 
Le réseau fonctionne entre les VM, merci copain Xum :)
 
Mais je souhaiterai profiter de mon équipement logitech sur mon DomU windows8.
L'idée est de dédier par le biais d'un PCI assignable-add quelques ports USB, enfin surtout ceux où se trouve mon G13, Clavier et souris, et ainsi pouvoir installer les drivers sous mon DomU windows8... Mais vous allez me dire, tu n'auras plus de clavier souris dans ton Dom0, ce à quoi je répondrai, oui mais avec Synergy ça devrait marcher.
Synergy étant un KVM logiciel multiOS, qui fonctionne avec un Synergy Server et un ou plusieurs clients
Hélas lors de mes multiples tests, celui-ci ne trouve ni serveur, ni client, même sur un autre PC :/
 
Bref, je ne suis pas loins du but, juste cette histoire de Synergy qui me bloque :(
 
EDIT: Changement du titre pour Qemu-KVM
EDIT du 18/04/14: Changement du titre pour [Topic Unique] VGA/PCI Passthrough et VFIO sous GNU/Linux


Message édité par NHiX le 11-01-2015 à 11:18:50
mood
Publicité
Posté le 22-12-2013 à 18:43:07  profilanswer
 

n°1349944
toma222
Posté le 23-12-2013 à 18:38:44  profilanswer
 

Bonjour,
 
J'utilise globalement la même configuration (i7 4770s et HD7850, enfin en ce moment je me suis rabattu sur mon ancienne HD6850 qui me pose moins de problème) avec des VMs Debian et une VM Windows 8.1 avec PCI-Passthrough (mais en cours de remplacement par de l'Ubuntu + XBMC + Steam, je ne joue pas à BF4...). La principale différence est que j'utilise qemu-kvm sur l'hôte Debian.
 
As-tu besoin du clavier/souris sur ton Dom0 ? Dans mon cas, l'hôte ne sert qu'à ça, il est sous la TV, il n'y a pas de serveur X et je l'administre via SSH + Virt-Manager depuis mon laptop. Donc je passe un contrôleur PCI et lorsque la VM est démarrée je n'ai plus de clavier/souris.
 
Si tu en as effectivement besoin, je n'ai pas utilisé Synergy depuis longtemps, mais je ne vois pas pourquoi ça ne fonctionnerait pas. Je laisse d'autres personnes t'aider sur ce sujet.
La dernière option est le KVM hard. Je m'étais pris ce simple commutateur : http://www.ldlc.com/fiche/PB00118277.html pour une machine de test.
Un peu cher pour ce que c'est, mais il ne prend pas de place et fait le boulot, avec commutation par raccourci clavier (reconnu sans soucis sous Linux).

n°1349947
NHiX
Cop1
Posté le 23-12-2013 à 19:55:46  profilanswer
 

Tu as surement raison finalement, et mon Dom0 est juste là pour soutenir mes DomU.
Je débutes sur du GNU/Linux, Xen, PCI Passthrough... Tu as trouvé des tutos bien expliqués ?
Il faut que je me renseigne sur virt-manager ;)
Sinon effectivement un KVM hard et je ne serais pas ennuyé ;)

n°1349948
Misssardon​ik
prévisible a posteriori
Posté le 23-12-2013 à 20:25:53  profilanswer
 

l'administration via ssh ne serait pas suffisante sinon, tout simplement ?


Message édité par Misssardonik le 23-12-2013 à 20:26:06

---------------
Que va-t-il se passer cette gelgamar ? vous le découvrirez janamont à 20h
n°1349951
toma222
Posté le 23-12-2013 à 20:48:50  profilanswer
 

Oui, via SSH avec xm ou xl, tu dois pouvoir tout gérer sous Xen (pour ma part c'est avec virsh avec qemu).
Et si je ne me trompe pas, ta carte-mère dispose d'une connexion type IPMI qui permet de t'y connecter en cas de soucis ?
Petite question au passage, pourrais-tu me dire combien de contrôleurs USB il y a sur cette carte-mère (en faisant un lspci sur le Dom0) ?
 
Pour Xen et le PCI Passthrough, je n'ai pas de tutos particuliers, mais ça ne manque pas sur le net.
J'ai ce sujet dans mes bookmarks : http://www.overclock.net/t/1205216 [...] al-machine si ça peut te servir (ça concerne Fedora, mais les principes sont les mêmes sur CentOS je suppose).

n°1350355
NHiX
Cop1
Posté le 03-01-2014 à 10:55:48  profilanswer
 

Pardon pour le retard  
ma carte mère à effectivement une connexion de type IPMI, mais comme je suis un noob je ne sais pas comment ça fonctionne :/
 
de mémoire, il y a 2 contrôleurs USB... mais je te dirai ça quand je serai chez moi ;)
Sinon je pense finalement faire comme toi, passez à Qemu-KVM à la place de Xen, ça m'a l'air plus simple, mais je ne trouve pas de tuto pour expliquer le fonctionnement du pci-passthrough avec Qemu-kvm
 

n°1350379
toma222
Posté le 03-01-2014 à 18:11:40  profilanswer
 

Bonjour,
 
Pas de soucis.
Pour l'IPMI, je ne peux pas t'aider, je ne l'ai pas sur ma carte mère (Asrock H87).
Il semblerait que deux contrôleurs USB soient la norme sous Haswell, c'est ce que j'ai également. J'en avais trois sur ma carte SandyBridge, c'était plus pratique quand on en passe à plusieurs VM.
 
Concernant Qemu-KVM, je ne suis pas sûr que ce soit vraiment plus simple que Xen. Le PCI-Passtrough est plus ancien sur Xen, donc sûrement plus rodé...
Et en ce moment il y a d'important changement côté Qemu (remplaçant de l'ancienne méthode pci-assign pour passer les périphériques par vfio-pci qui est plus propre). Pour te donner une idée, avec l'ancienne méthode, pas de soucis pour passer une Radeon 7850 à une VM Windows, je n'y suis pas arrivé avec la nouvelle. Par contre avec une Radeon 6850 j'arrive à faire du VFIO dans une VM Linux.
Bref, ce sont des techniques assez récentes et qui évoluent beaucoup.
Un sujet que je suis de près : https://bbs.archlinux.org/viewtopic [...] 162768&p=1. Il concerne Archlinux, mais il y a pleins d'infos si tu t'intéresses au sujet.

n°1350382
NHiX
Cop1
Posté le 03-01-2014 à 18:44:51  profilanswer
 

Merci pour ta réponse
Oui je m'intéresse beaucoup à ce sujet
Disons que j'ai toujours bien aimé GNU/Linux et j'avoue que la seule chose qui me faisait hésiter c'est l'accélération via le GPU pour mes jeux Windows, là je pense avoir trouvé le meilleur moyen pour concilier les deux ;)
Je teste dès ce soir Qemu-KVM :)

n°1350386
NHiX
Cop1
Posté le 03-01-2014 à 20:02:35  profilanswer
 

nhix@mint16 ~ $ lspci | grep USB
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)

 

Dans Virt-manager, il faut préféré quelle option Qemu ou KVM ?

 

Mince mon expérience avec KVM va tourner court
Erreur lors du démarrage du domaine: internal error: Invalid device 0000:01:00.1 driver file /sys/bus/pci/devices/0000:01:00.1/driver is not a symlink


Message édité par NHiX le 03-01-2014 à 20:17:05
n°1350413
NHiX
Cop1
Posté le 04-01-2014 à 22:57:54  profilanswer
 

Ma version de Qemu est la 1.5.0, enfin celle fournie de base dans une LinuxMint 16, peut-être que mes problèmes viennent de cette "vieille" version ?
 

Code :
  1. qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: Device does not support requested feature x-vga
  2. 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 device 0000:01:00.0
  3. 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.
  4. qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: Device 'vfio-pci' could not be initialized


 
Merci toma222 mais malgré le sudo vfio-bind 0000:01:00.0 0000:01:00.1  
 

Code :
  1. #!/bin/bash
  2. modprobe vfio-pci
  3. for dev in "$@"; do
  4.         vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
  5.         device=$(cat /sys/bus/pci/devices/$dev/device)
  6.         if [ -e /sys/bus/pci/devices/$dev/driver ]; then
  7.                 echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
  8.         fi
  9.         echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
  10. done


Message édité par NHiX le 04-01-2014 à 23:08:23
mood
Publicité
Posté le 04-01-2014 à 22:57:54  profilanswer
 

n°1350478
tybobab
Posté le 06-01-2014 à 12:30:10  profilanswer
 

Bonjour,
 
Je te souhaite bonne continuation dans ton projet :)
 
J'ai essayé de faire la même chose (ASROCK Z77-Extreme4 + i7 3770 + 16 GO DDR3 + nvidia GTX460 1GB) mais impossible de faire marcher la nvidia sous windows (je m'y attendais mais j'ai quand même testé :). Il faudra que je test avec une radeon.
Je vais suivre de pres ton projet ;)

n°1350497
NHiX
Cop1
Posté le 06-01-2014 à 16:24:23  profilanswer
 

Merci tybobab ;)
 
Si mon projet abouti, je ferai un tutoriel afin de simplifier les choses :)
Concernant la GTX460, elle me semble opérationnelle avec Xen

n°1350556
tybobab
Posté le 07-01-2014 à 14:15:58  profilanswer
 

Il me semble qu'il faut la flasher en quadro pour que ca marche :) (ma source : http://wiki.xen.org/wiki/Xen_VGA_P [...] _Adapters)


Message édité par tybobab le 07-01-2014 à 14:16:35
n°1350680
NHiX
Cop1
Posté le 09-01-2014 à 18:01:43  profilanswer
 

Si je comprend bien une fois après avoir fait les manips
on rentre un  

Code :
  1. update-initramfs -u


pour prendre en compte le blacklistage du module
 
ensuite un lspci -k nous donne:

Code :
  1. 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti PRO [Radeon HD 7950]
  2. Subsystem: PC Partner Limited / Sapphire Technology Device e210
  3. Kernel driver in use: vfio-pci
  4. 01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT HDMI Audio [Radeon HD 7970 Series]
  5. Subsystem: PC Partner Limited / Sapphire Technology Device aaa0
  6. Kernel driver in use: vfio-pci


 
Là, ça me semble prêt pour être assigné à une VM ?


Message édité par NHiX le 09-01-2014 à 18:12:26
n°1350691
NHiX
Cop1
Posté le 09-01-2014 à 23:09:54  profilanswer
 

Alors, dernière nouvelle sur ma Debian Jessie, j'arrive à passer ma carte graphique, avec Virt-Manager, à la voir dans la VM, je me dis, c'est gagné !
 
Et bien non :(
 
Car si je vois bien ma carte graphique, ma VM plante juste après :/
damned!

n°1350703
tybobab
Posté le 10-01-2014 à 16:05:57  profilanswer
 

Salut NHiX :)
 
Regarde ce topic/tuto : http://forums.linuxmint.com/viewto [...] 2&t=112013
Tu pourras peut-être trouver des infos complémentaires

n°1350704
NHiX
Cop1
Posté le 10-01-2014 à 16:16:23  profilanswer
 

Merci tybobab :)
Je connais le tuto, vraiment bien fait, mais plutôt réservé pour Xen

n°1350705
tybobab
Posté le 10-01-2014 à 16:18:20  profilanswer
 

Je suis en train d'acquerir une HD7770, quand je la recevrai, je te donnerai un feedback :)


Message édité par tybobab le 10-01-2014 à 16:25:47
n°1350706
tybobab
Posté le 10-01-2014 à 16:28:39  profilanswer
 

Pour Synergy, tu installes Synergy2 ou Synergy-plus ?

n°1350708
tybobab
Posté le 10-01-2014 à 16:41:19  profilanswer
 

NHiX a écrit :

Merci tybobab :)
Je connais le tuto, vraiment bien fait, mais plutôt réservé pour Xen


 
Ah oui c'est vrai...désolé :)
 
Je commencerai mes tests sur KVM (je le préfère à Xen).

n°1350709
NHiX
Cop1
Posté le 10-01-2014 à 17:25:09  profilanswer
 

Concernant Synergy, j'utilise Synergy-plus, mais je crois que c'est plus un accès rapide à Synergy2 ;)
 
J'avais testé Xen, mais il n'est pas compatible avec mon UEFI, enfin dans sa version 4.3, peut-être que la prochaine version sera ok avec ce satané d'UEFI :)
 
Si tu veux tester Xen dans de bonne condition, je te conseille CentOS 6.5, vraiment une très bonne distro, très légère pour en faire son Dom0
 
Mais je préfère tout comme toi, KVM, pour de futurs projets, peut-être une virtualisation de mon Raspberry Pi, afin d'y tester de nouvelle version d'OpenELEC ou Raspbian sans tout casser le physique qui sert de media-center à Madame :)
Ou alors de la virtualisation de MacOS X, ou même de RiscOS ou autre...

n°1350715
DrDooM
Posté le 10-01-2014 à 19:25:00  profilanswer
 

[:lardoncru:1]

n°1350718
toma222
Posté le 10-01-2014 à 19:59:17  profilanswer
 

Bonsoir,
 
Comme je l'avais précisé à NHiX, pour ceux qui s'intéressent au Passthrough avec Qemu, ce post sur le forum Archlinux est à suivre :
https://bbs.archlinux.org/viewtopic.php?id=162768.
Il décrit la nouvelle méthode pour passer des cartes graphiques à des VMs en utilisant vfio-pci (plus propre que l'ancienne méthode pci-assign) en faisant du primary passthrough (sans carte virtuelle). C'est encore experimental et nécessite encore de patcher le kernel et qemu, mais ça devrait permettre de passer même des cartes Nvidia.
De mon côté j'ai de bons résultats avec une Radeon 6850 mais pas avec une 7850 (qui passait avec pci-assign) pour le moment.

n°1350719
bardiel
Debian powa !
Posté le 10-01-2014 à 20:00:40  profilanswer
 

[:homdex]


---------------
Achievement unlocked : double TT pour avoir dénoncer un floodeur impoli sur le topic "Discussion avec la modération" de la cat' OS Alternatif
n°1350721
NHiX
Cop1
Posté le 10-01-2014 à 20:21:43  profilanswer
 

Là où je bloque c'est sur l'attribution de la carte graphique en passthrough à la VM Windows :(
Si vous savez comment faire ?
 
J'ai suivi ce tutoriel, mais adapté sur ma Debian Jessie
https://bbs.archlinux.org/viewtopic [...] 162768&p=1
 
Preparing the GPU so we can bind it to vfio
 
For the next step we need to:
 
Blacklist radeon or nouveau or nvidia or fglrx on /etc/modprobe.d/blacklist.conf
 
Example, blacklisting the opensource radeon module:

Code :
  1. echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf


Use pci-stub
 
In my case since i have 2 radeon cards blacklisting the radeon module is not an option, so i use pci-stub.
 
NOTE: If pci-stub was built as a module, you'll need to modify /etc/mkinitcpio.conf and add pci-stub in the MODULES section, after that you need to update your initramfs like this.

Code :
  1. mkinitcpio -p linux-mainline


NB: ce que j'ai remplacé sur ma Debian Jessie par  

Code :
  1. update-initramfs -u


 
lspci

Code :
  1. 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cayman PRO [Radeon HD 7950] <-- radeon 7950
  2.     01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Cayman/Antilles HDMI Audio [Radeon HD 7900 Series] <-- radeon 7950 audio


 
lspci -n

Code :
  1. 01:00.0 0300: 1002:679a <-- radeon 7950
  2.     01:00.1 0403: 1002:aaa0 <-- radeon 7950 audio


Now add this to your grub cfg file:

Code :
  1. pci-stub.ids=1002:679a,1002:aaa0


dmesg | grep pci-stub

Code :
  1. [    2.096151] pci-stub: add 1002:679a sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
  2.     [    2.096160] pci-stub 0000:01:00.0: claimed by stub
  3.     [    2.096165] pci-stub: add 1002:AAA0 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
  4.     [    2.096174] pci-stub 0000:01:00.1: claimed by stub
  5.     [    2.096178] pci-stub: add 1B21:1042 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000


Setting up vfio and kvm modules
 
If your board doesn't enable interrupt remapping, you need to add this to your grub cfg:

Code :
  1. vfio_iommu_type1.allow_unsafe_interrupts=1


ne pas oublier ensuite un update-grub
 
Or if vfio-pci was built as a module ( default on arch )

Code :
  1. echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/vfio_iommu_type1.conf


Some applications like Passmark Performance Test and SiSoftware Sandra crash the VM without this:

Code :
  1. echo "options kvm ignore_msrs=1" >> /etc/modprobe.d/kvm.conf


Binding a device to vfio-pci
 
Assuming the kernel, qemu and seabios are built and working, lets bind some devices.
You can use this script to make life easier:

Code :
  1. #!/bin/bash
  2. modprobe vfio-pci
  3. for dev in "$@"; do
  4.         vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
  5.         device=$(cat /sys/bus/pci/devices/$dev/device)
  6.         if [ -e /sys/bus/pci/devices/$dev/driver ]; then
  7.                 echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
  8.         fi
  9.         echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
  10. done


 
Save it as /usr/bin/vfio-bind

Code :
  1. chmod 755 /usr/bin/vfio-bind


Bind the GPU:

Code :
  1. vfio-bind 0000:01:00.0 0000:01:00.1


J'en suis ici, et je ne sais pas comment recompiler un noyau ou Qemu avec leurs options :(
 
J'obtiens:

Code :
  1. qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: Device does not support requested feature x-vga
  2.     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 device 0000:01:00.0
  3.     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.
  4.     qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: Device 'vfio-pci' could not be initialized


 
Et pourtant mon lspci -k

Code :
  1. 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti PRO [Radeon HD 7950]
  2.    Subsystem: PC Partner Limited / Sapphire Technology Device e210
  3.    Kernel driver in use: vfio-pci
  4. 01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT HDMI Audio [Radeon HD 7970 Series]
  5.    Subsystem: PC Partner Limited / Sapphire Technology Device aaa0
  6.    Kernel driver in use: vfio-pci


Message édité par NHiX le 11-01-2014 à 09:09:54
n°1350724
NHiX
Cop1
Posté le 10-01-2014 à 20:53:39  profilanswer
 

http://imagik.fr/thumb/68466.jpeg[size=9]imagik[/size]
Voilà ce que j'obtiens sous une VM Debian 7, bizarre


Message édité par NHiX le 10-01-2014 à 20:56:17
n°1350725
toma222
Posté le 10-01-2014 à 21:07:33  profilanswer
 

Concernant l'erreur vfio: Device does not support requested feature x-vga, c'est normal, le noyau doit être compilé avec l'option CONFIG_VFIO_PCI_VGA, qui n'est pas activé par défaut sur la plupart des distribs car encore experimental.
Ce que je te conseille si tu ne veux pas te lancer dans la compilation (et application de patchs), c'est plutôt que de faire du Primary VGA Passthrough (x-vga=on), c'est de faire du Secondary VGA Passthrough (tu ne mets pas l'option x-vga et tu mets une carte virtuelle).
Sur ta capture d'écran, c'est quand tu démarres avec quelles options ? Parce que ta carte vidéo semble vue.

n°1350726
NHiX
Cop1
Posté le 10-01-2014 à 21:23:23  profilanswer
 

Ok je vais tester ça, mais en fait je me sers de Virt-manager comme un sale nOOb :(
sinon en ligne de commande avec Qemu, ça donne quoi ?
un truc comme ça ?
 

Code :
  1. qemu-system-x86_64 -enable-kvm -M q35 -m 8192 -cpu host \
  2. -smp 6,sockets=1,cores=4,threads=1 \
  3. -bios /home/nhix/VM/seabios.1.7.4 -vga none \
  4. -device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
  5. -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,romfile=/home/nhix/VM/7950.rom \
  6. -device vfio-pci,host=01:00.1,bus=root.1,addr=00.1
  7. -drive file=/home/nhix/VM/Windows8.1,id=disk,format=raw -device ide-hd,bus=ahci.0,drive=disk


 
A la rigueur, il va falloir que je passe par la case compilation du kernel avec les options qui vont bien ;)
Il n'y a pas un lien où quelqu'un l'a déjà fait ?
qui se propose ?
svp xD


Message édité par NHiX le 10-01-2014 à 21:23:55
n°1350727
toma222
Posté le 10-01-2014 à 21:35:57  profilanswer
 

En commande qemu ça devrait donner quelque chose comme ça :
 

Code :
  1. qemu-system-x86_64 -enable-kvm -M q35 -m 8192 \
  2. -smp 6,sockets=1,cores=4,threads=1 \
  3. -bios /home/nhix/VM/seabios.1.7.4 \
  4. -device cirrus-vga,id=video0,bus=pcie.0,addr=0x1 \
  5. -vnc 127.0.0.1:8 \
  6. -device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
  7. -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on \
  8. -device vfio-pci,host=01:00.1,bus=root.1,addr=00.1 \
  9. -drive file=/home/nhix/VM/Windows8.1,id=disk,format=raw -device ide-hd,bus=ahci.0,drive=disk


 
A vérifier. J'ai volontairement retirer le -cpu host car ça me pose problème.
Logiquement tu dois pouvoir t'en sortir uniquement avec Virt-Manager si ça fonctionne en Secondary Passthrough.
 
Pour la compilation du kernel, je l'ai fait récemment sous Debian. Par contre pour il faut probablement compiler la version git de Qemu également.
 

n°1350729
NHiX
Cop1
Posté le 10-01-2014 à 21:47:26  profilanswer
 

mince encore une question de nOOb, j'ai un soucis sur la ligne -drive ....
J'obtiens

Code :
  1. qemu-system-x86_64: -device ide-hd,bus=ahci.0,drive=disk: Bus 'ahci.0' not found


Je sais, j'ai honte

 

EDIT:
Problème rélgé.

Code :
  1. -drive file=/home/nhix/VM/Windows8.1,if=none,id=disk,format=raw -device ide-hd,bus=ide.0,unit=0,drive=disk -usbdevice tablet
 

Par contre, j'ai ce message dans le terminal

Code :
  1. ehci warning: guest updated active QH
 

Et le plus important ma VM semble s'eteindre, enfin plus d'affichage, l'écran devient noir via TightVNC
Je n'arrive pas à la relancer, enfin si mais toujours l'écran noir, même en passant sur la sortie carte graphique dédiée à la VM :(
On n'est pas loin du but pourtant je pense...

 


NB: Voici mon "win"

Code :
  1. qemu-system-x86_64 -enable-kvm -M q35 -m 8192 \
  2. -smp 6,sockets=1,cores=4,threads=1 \
  3. -bios /home/nhix/VM/seabios.1.7.4 \
  4. -device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
  5. -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on \
  6. -vnc 127.0.0.1:8 \
  7. -device vfio-pci,host=01:00.1,bus=root.1,addr=00.1 \
  8. -drive file=/home/nhix/VM/Windows8.1,if=none,id=disk,format=raw -device ide-hd,bus=ide.0,unit=0,drive=disk -usbdevice tablet
 

Le Bios Seabios utilisé
http://code.coreboot.org/p/seabios [...] n-1.7.4.gz

 

Ensuite pour se connecter, dans un terminal

Code :
  1. vncviewer localhost:8



Message édité par NHiX le 10-01-2014 à 22:04:13
n°1350731
NHiX
Cop1
Posté le 10-01-2014 à 22:12:24  profilanswer
 

!!!!!!! ATTENTION MA METHODE ACTUELLE N'INCLUS PAS LES PATCHS !!!!!!!
 
 
J'ouvre un nouveau post, c'est un peu le bordel... lol
 
Je vais tenter une compilation de Seabios
On va récupérer:
http://www.fileswap.com/dl/VgLPyZwOkl/
Ceux sont des patchs à inclure pour la compilation de Seabios
 
Donc, on installe:

Code :
  1. apt-get install iasl git


 
On va cloner le dépôt git avec:

Code :
  1. git clone git://git.seabios.org/seabios.git
  2. cd seabios


On va copier les patchs dans le dépôt cloné, et ensuite lancer la compilation avec  

Code :
  1. make


 
normalement si tout est ok, vous devez avoir dans ~/seabios/out/bios.bin qui est notre version compilée de Seabios :)
Il n'y a plus qu'à tester :)
 
Maintenant Qemu:
git://git.qemu.org/qemu.git le dépôt Git
 

Code :
  1. cd ~
  2. git clone git://git.qemu.org/qemu.git
  3. cd qemu
  4. git submodule update --init pixman
  5. git submodule update --init dtc
  6. apt-get install pkg-config zlib1g-dev libglib2.0-dev1
  7. ./configure


 
Mais le make ne fonctionne pas, si quelqu'un connait la solution, je met le post à jour ensuite


Message édité par NHiX le 10-01-2014 à 22:41:57
n°1350732
NHiX
Cop1
Posté le 10-01-2014 à 22:43:00  profilanswer
 

Pas mal d'edit, pardon, je vais refaire le premier post, avec un tutoriel le plus complet possible, une fois que la solution sera trouvée, si il y a des volontaires pour tester sur leurs config ;)

n°1350736
NHiX
Cop1
Posté le 11-01-2014 à 15:38:20  profilanswer
 

Update du premier post !

n°1350762
tybobab
Posté le 12-01-2014 à 16:59:38  profilanswer
 

Salut NHiX :)
 
J'aurai la radeon vendredi prochain donc je ferai mes tests durant le week end :) Je pense tester sur Fedora avec KVM

n°1350809
mqnu
Hu ?
Posté le 13-01-2014 à 22:02:40  profilanswer
 

Drapwal,
 
Bien envie de voir ce que donne le passthrough vers ta vm Windows ;)


---------------
:o
n°1350810
NHiX
Cop1
Posté le 13-01-2014 à 22:12:06  profilanswer
 

Pour le moment malheureusement, ça ne fonctionne pas, peut-être avec une prochaine version de Qemu...
En tout les cas le tutoriel, c'est un début :)

n°1350811
mqnu
Hu ?
Posté le 13-01-2014 à 22:15:51  profilanswer
 

Il semblerait que le passthrough pur fonctionne non ?  
 
L'ennui est les perf en jeux non ?


---------------
:o
n°1350812
NHiX
Cop1
Posté le 13-01-2014 à 22:21:10  profilanswer
 

Le passthrough fonctionne, en tout les cas, j'arrive bien à "passer" ma carte graphique à ma VM Windows, mais celle-ci au démarrage plante, et plus rien ne s'affiche sur mon écran ainsi que sur mon VNC/Spice :/
 
Les problèmes peuvent être multiple, mais je cherche des personnes sous Debian avec mon matériel, et chez qui ça fonctionne :)

n°1350813
Arcord
Posté le 13-01-2014 à 23:13:22  profilanswer
 

Ca plante dès l'installation de ta VM ou à partir du moment où tu as installé les pilotes Catalysts ?
Quand ta VM est lancé, c'est bien vfio-pci qui gère ta carte graphique ?

n°1351005
tybobab
Posté le 16-01-2014 à 16:01:44  profilanswer
 

Salut NHiX,
 
As-tu trouvé la cause de ton problème de plantage de la VM ?
 

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  9  10  11  12  13  14
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Logiciels

  [Topic Unique] VGA/PCI Passthrough et VFIO sous GNU/Linux

 

Sujets relatifs
Projet de mise en place de google apps en entreprise[Résolu] nginx sur domU NetBSD 6 (dom0 Debian squeeze)
Virtualisation, du passthrough, XBMC, NAS, des jeux...besoin avis projet de server auto hebergement et media center
[projet] Prise de courant avec Wattmetre intégré en CPLVersions de Xen - What else ?!
Debian - Xen server - Iptables - Nat - WebserverSwitch virtuel pour Xen/KVM - Interface tap - Cisco/Autre ?
2 OS simultanement avec Xen ?Ubunto 10.10: Configuration d'un compte Exchange + Projet VMWare
Plus de sujets relatifs à : [Topic Unique] VGA/PCI Passthrough et VFIO sous GNU/Linux



Copyright © 1997-2016 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR