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

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16
Auteur Sujet :

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

n°1357126
toma222
Posté le 24-04-2014 à 19:20:27  profilanswer
 

Reprise du message précédent :
Pour le kernel, malheureusement je pense que la méthode sera un peu différente sous OpenSuse... A voir si le kernel est déjà compilé avec l'option CONFIG_VFIO_PCI_VGA en faisant un cat /boot/config-3.14-trunk-amd64 | grep VFIO, dans quel cas tu pourras probablement testé le x-vga=on sans passer par la recompilation.
Je confirme que ce n'est pas la solution idéale, il faudra le recompiler pour les prochaines versions.  
En simplifié, voici la méthode que j'utilise :
- prévoir pas mal d'espace disque pour le build (30 Go de mémoire), j'ai déjà rempli mon /...
- les packages nécessaires à la compilation doivent être installés (build-essential au moins, je ne sais plus s'il y en a d'autres).
- cd emplacement_du_build
- apt-get source linux-image-3.14-trunk-amd64 (version à adapter en fonction du kernel qu'on veut).
- cd linux-3.14.1
- cp /boot/config-3.14-trunk-amd64 .config
- vim .config (ou nano si vous préférez).
- modifier les options souhaitées (notamment CONFIG_VFIO_PCI_VGA=y) et sauvegarder.
- télécharger linux-mainline.tar.gz sur le forum Archlinux, l'extraire et copier les patchs i915_314.patch et override_for_missing_acs_capabilities.patch dans votre répertoire des sources. Attention, les derniers patchs sont pour le 3.14, à voir s'ils passent sur une autre version (je dois encore avoir ceux de la 3.13 qui traînent).
- patch -Np1 -i override_for_missing_acs_capabilities.patch (pour ceux qui ont un problème d'acs, à vérifier avec le script lsgroup).
- patch -Np1 -i i915_314.patch (si vous voulez pouvoir utiliser le driver Intel sur l'hôte sans bug graphique).
- le patch fix_memleak.patch ne semble plus nécessaire pour le 3.14.
- export CONCURRENCY_LEVEL=5 (pour utiliser tout vos CPU pour la compilation, nombre de cores +1, ici c'était sur mon core i5, à mettre à 9 je pense pour un core i7).
- fakeroot make-kpkg --append-to-version "-vfio" --revision "1" --initrd kernel_image kernel_headers (de mémoire ça met 30 bonnes minutes sur un core i5 2500).
- ça va générer les .deb, il n'y aura plus qu'à les installer avec dpkg -i.
Je ne suis pas spécialiste en compilation de noyau, il y a peut-être d'autres méthodes mais c'est la plus simple que j'ai trouvé.

mood
Publicité
Posté le 24-04-2014 à 19:20:27  profilanswer
 

n°1357130
furhma
Posté le 24-04-2014 à 20:02:48  profilanswer
 

merci pour la manip du kernel mais vu mon niveau de competence en linux je vais d abord faire une backup complete avant de tout planter...
j ai tout de meme tester : cat /boot/config-3.14-trunk-amd64 | grep VFIO
et ca me dit "aucun fichier ou dossier de ce type
et le grep VFIO ne donne rien du tout

n°1357131
furhma
Posté le 24-04-2014 à 20:11:13  profilanswer
 

bon je me repond tout seul en fait il fallait que je remplace par cat /boot/config-3.11.6-4-desktop | grep VFIO
et la ce me dit:
 config_VFIO_IOMMU_TYPE1=m
config_VFIO=m
config_VFIO_PCI=m
config_VFIO_PCI_VGA=y

n°1357132
toma222
Posté le 24-04-2014 à 20:17:27  profilanswer
 

OpenSuse a activé l'option config_VFIO_PCI_VGA donc tu devrais pouvoir tenter le x-vga=on (à voir si le kernel 3.11 est suffisant et si tu as une version suffisamment récente de qemu). Il n'y a que Debian qui semble à la traîne sur ce coup là (mais bon, c'est leur politique, c'est encore considéré comme experimental).

n°1357133
furhma
Posté le 24-04-2014 à 20:28:18  profilanswer
 

pour recapituler  
je fait le scrit vfio_bind et le lsgroup  
je les rend executable via chmod  
je redemarre la becanne ensuite je lance les script vfio_bind 1:00:0.0 1:00:0.01 et pareil pour lsgroup  
enfin je cree une vm en ligne de commande avec l option x-vga=on  
c est ca ??

n°1357138
toma222
Posté le 24-04-2014 à 21:15:51  profilanswer
 

Le script lsgroup ne sert qu'à vérifier comment sont organisés les périphériques dans les groupes iommu, donc ça ne sert à lien de le lancer.
Tu auras peut-être une erreur du type vfio: error opening /dev/vfio/1: Permission denied. Si c'est le cas :

Code :
  1. sudo chmod g+rw /dev/vfio/1
  2. sudo chmod o+rw /dev/vfio/1


(si tu utilises sudo, sinon en root).
Par contre, tu as quelle version de qemu (qemu-system-x86_64 -version) ? En dessous de 2.0, je ne sais pas si ça fonctionnera.

n°1357141
furhma
Posté le 24-04-2014 à 21:31:43  profilanswer
 

j ai la version qemu 2.0  
ben ecoute je vais copier les script ce soir et faire la sauvegarde de mon hote  demain et je teste ca mais d apres un ami qui a la meme config que moi il faudrait patcher le kernel pour resoudre un soucis ACS a cause du chipset intel donc je te tiens au jus demain en fin de journee
 

n°1357142
furhma
Posté le 24-04-2014 à 21:35:30  profilanswer
 

je viens de faire le script vfio et j ai ensuite fait un chmod 755 /usr/bin/vfio-bind
mais en faisant     "sudo chmod g+rw /dev/vfio/1" et "sudo chmod o+rw /dev/vfio/1" ca me dit aucun fichier ou dossier de se type" ...

n°1357153
adejour
Posté le 24-04-2014 à 23:29:13  profilanswer
 

toma222 a écrit :

Pour le kernel, malheureusement je pense que la méthode sera un peu différente sous OpenSuse...

Ok cool.
Et quand tu fais tout ça, théoriquement, tu peux lancer en primary passthrough?! Ou alors il y a encore d'autres choses compliquées à faire?
 
sinon, tom222, je te confirme que l'erreur que j'ai est bien "Ce périphérique ne peut pas trouver suffisamment de ressources libres pour son fonctionnement (Code 12).
Si vous voulez l'utiliser, vous devrez désactiver l'un des autres périphériques de ce système"


Message édité par adejour le 24-04-2014 à 23:30:18
n°1357155
adejour
Posté le 25-04-2014 à 00:06:56  profilanswer
 

En recherchant l'histoire du code 12, je suis tombé sur ce thread
https://lists.gnu.org/archive/html/ [...] 02417.html
 
D'apres ce que je comprends, ils indiquent dans le premier paragraphe que quand on redémarre la guest, la carte graphique n'est pas reinitialisée. Peut etre que c'est ce qui fait planter la machine pour NHIX...?
 
Ici, un correctif xen pour le code 12 http://lists.xen.org/archives/html [...] 00041.html
 
qqn qui a réussi à corriger le code 12 : http://forums.linuxmint.com/viewto [...] 40#p809107
 
ici peut etre une solution aussi :
https://www.mail-archive.com/qemu-d [...] 74075.html <-EDIT en fait, en relisant ce matin, je ne suis plus trop sur de l'intéret de cet article !


Message édité par adejour le 25-04-2014 à 11:12:36
mood
Publicité
Posté le 25-04-2014 à 00:06:56  profilanswer
 

n°1357198
toma222
Posté le 25-04-2014 à 20:40:14  profilanswer
 

Salut,
 

furhma a écrit :

je viens de faire le script vfio et j ai ensuite fait un chmod 755 /usr/bin/vfio-bind
mais en faisant     "sudo chmod g+rw /dev/vfio/1" et "sudo chmod o+rw /dev/vfio/1" ca me dit aucun fichier ou dossier de se type" ...


C'est à faire uniquement si tu as une erreur. Tu as exécuté le script vfio-bind ? Si oui, c'est bizarre, regardes si tu as quelque chose sous /dev/vfio/. Normalement tu devrais avoir un répertoire par groupe IOMMU + un répertoire vfio.
 
Pour le patch ACS, je ne suis pas sûr qu'il soit obligatoire, c'est effectivement si les groupes IOMMU ne sont pas bien organisés (à vérifier avec le script lsgroup) avec les chipset Intel.
 
@adejour : oui, j'avais cherché aussi pour ce code 12, mais je n'ai rien trouvé d'utile. Ce qui est bizarre c'est qu'il n'y a aucun problème sous Linux.
 
J'ai recompilé le kernel Debian 3.14.1 provenant d'experimental avec la méthode que j'ai donné (donc avec l'option config_VFIO_PCI_VGA=y et les patchs i915_314.patch et override_for_missing_acs_capabilities.patch) et je vous reconfirme que ça fonctionne très bien chez moi avec ma VM Windows en primary passthrough (j'en ai profité pour réactiver ma licence, quelle plaie !).
Pour ceux qui utilisent libvirtd, il est possible de passer l'option x-vga=on dans la configuration de la VM. Editer la VM avec virsh edit la_vm.
Modifier la première ligne et ajouter à la fin les commandline :

Code :
  1. <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  2.   ...
  3. <qemu:commandline>
  4.     <qemu:arg value='-vga'/>
  5.     <qemu:arg value='none'/>
  6.     <qemu:arg value='-device'/>
  7.     <qemu:arg value='ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
  8.     <qemu:arg value='-device'/>
  9.     <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
  10.   </qemu:commandline>
  11. </domain>


Pour ceux qui utilisent les commandes qemu directement, je vous laisse trouver la commande adéquate  ;)


Message édité par toma222 le 25-04-2014 à 20:40:54
n°1357234
furhma
Posté le 26-04-2014 à 11:56:17  profilanswer
 

hello tom222
bon  j ai essyer ce quetu ma dit et j obtiens ca:
possible problem:
qemu-system-x86_64: -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:62:c4:4c,bus=pci.0,addr=0x3: pci_add_option_rom: failed to find romfile "efi-rtl8139.rom"
qemu-system-x86_64: -device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1: Bus 'pcie.0' not found
 
 
Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 96, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 117, in tmpcb
    callback(*args, **kwargs)
  File "/usr/share/virt-manager/virtManager/domain.py", line 1168, in startup
    self._backend.create()
  File "/usr/lib64/python2.7/site-packages/libvirt.py", line 866, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: internal error: early end of file from monitor: possible problem:
qemu-system-x86_64: -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:62:c4:4c,bus=pci.0,addr=0x3: pci_add_option_rom: failed to find romfile "efi-rtl8139.rom"
qemu-system-x86_64: -device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1: Bus 'pcie.0' not found
 
une idee??

n°1357239
toma222
Posté le 26-04-2014 à 12:19:28  profilanswer
 

Salut,
 

furhma a écrit :


qemu-system-x86_64: -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:62:c4:4c,bus=pci.0,addr=0x3: pci_add_option_rom: failed to find romfile "efi-rtl8139.rom"
qemu-system-x86_64: -device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1: Bus 'pcie.0' not found


 
Pour la première erreur, c'est lié à la carte réseau virtuelle que tu essayes de passer. Essayes avec un autre modèle (par exemple e1000, le plus performant sera virtio, mais il faudra que les drivers soient installés sur ton hôte).
Pour la seconde (Bus 'pcie.0' not found), j'ai oublié que ma conf libvirt est pour un chipset q35. Je suppose que tu utilises le chipset par défaut i440fx (qui ne simule pas de pci express, uniquement du pci).
Donc :
- soit tu changes ton chipset en q35 (il faut éditer avec virsh edit, passer le type de machine en q35, supprimer toutes les lignes <address /> et les blocks <controller /> ).
- soit tu gardes le chipset i440fx (j'avais testé et ça fonctionne) et tu changes ta conf en :

Code :
  1. <qemu:commandline>
  2.     <qemu:arg value='-vga'/>
  3.     <qemu:arg value='none'/>
  4.     <qemu:arg value='-device'/>
  5.     <qemu:arg value='ioh3420,bus=pci.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
  6.     <qemu:arg value='-device'/>
  7.     <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
  8.   </qemu:commandline>


Message édité par toma222 le 26-04-2014 à 12:20:54
n°1357243
furhma
Posté le 26-04-2014 à 13:25:15  profilanswer
 

merci j essaye ca cet aprem

n°1357247
furhma
Posté le 26-04-2014 à 14:06:00  profilanswer
 

bon je viens de regarde le xml de ma vm et j ai la meme chose que toi :

Code :
  1. <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  2.   <name>windows</name>
  3.   <uuid>0175ff09-2083-2969-6d9c-41f7272ac2f9</uuid>
  4.   <memory unit='KiB'>4194304</memory>
  5.   <currentMemory unit='KiB'>4194304</currentMemory>
  6.   <vcpu placement='static' cpuset='0-3'>4</vcpu>
  7.   <os>
  8.     <type arch='x86_64' machine='pc-i440fx-2.0'>hvm</type>
  9.     <boot dev='hd'/>
  10.   </os>
  11.   <features>
  12.     <acpi/>
  13.     <apic/>
  14.     <pae/>
  15.   </features>
  16. <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  17.   <name>windows</name>
  18.   <uuid>0175ff09-2083-2969-6d9c-41f7272ac2f9</uuid>
  19.   <memory unit='KiB'>4194304</memory>
  20.   <currentMemory unit='KiB'>4194304</currentMemory>
  21.   <vcpu placement='static' cpuset='0-3'>4</vcpu>
  22.   <os>
  23.     <type arch='x86_64' machine='pc-i440fx-1.7'>hvm</type>
  24.     <boot dev='hd'/>
  25.   </os>
  26.   <features>
  27.     <acpi/>
  28.     <apic/>
  29.     <pae/>
  30.   </features>
  31. <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  32.   <name>windows</name>
  33.   <uuid>0175ff09-2083-2969-6d9c-41f7272ac2f9</uuid>
  34.   <memory unit='KiB'>4194304</memory>
  35.   <currentMemory unit='KiB'>4194304</currentMemory>
  36.   <vcpu placement='static' cpuset='0-3'>4</vcpu>
  37.   <os>
  38.     <type arch='x86_64' machine='pc-i440fx-1.7'>hvm</type>
  39.     <boot dev='hd'/>
  40.   </os>
  41.   <features>
  42.     <acpi/>
  43.     <apic/>
  44.     <pae/>
  45.   </features>
  46. <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  47.   <name>windows</name>
  48.   <uuid>0175ff09-2083-2969-6d9c-41f7272ac2f9</uuid>
  49.   <memory unit='KiB'>4194304</memory>
  50.   <currentMemory unit='KiB'>4194304</currentMemory>
  51.   <vcpu placement='static' cpuset='0-3'>4</vcpu>
  52.   <os>
  53.     <type arch='x86_64' machine='pc-i440fx-1.7'>hvm</type>
  54.     <boot dev='hd'/>
  55.   </os>
  56.   <features>
  57.     <acpi/>
  58.     <apic/>
  59.     <pae/>
  60.   </features>
  61. <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  62.   <name>windows</name>
  63.   <uuid>0175ff09-2083-2969-6d9c-41f7272ac2f9</uuid>
  64.   <memory unit='KiB'>4194304</memory>
  65.   <currentMemory unit='KiB'>4194304</currentMemory>
  66.   <vcpu placement='static' cpuset='0-3'>4</vcpu>
  67.   <os>
  68.     <type arch='x86_64' machine='pc-i440fx-1.7'>hvm</type>
  69.     <boot dev='hd'/>
  70.   </os>
  71.   <features>
  72.     <acpi/>
  73.     <apic/>
  74.     <pae/>
  75.   </features>
  76. <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  77.   <name>windows</name>
  78.   <uuid>0175ff09-2083-2969-6d9c-41f7272ac2f9</uuid>
  79.   <memory unit='KiB'>4194304</memory>
  80.   <currentMemory unit='KiB'>4194304</currentMemory>
  81.   <vcpu placement='static' cpuset='0-3'>4</vcpu>
  82.   <os>
  83.     <type arch='x86_64' machine='pc-i440fx-1.7'>hvm</type>
  84.     <boot dev='hd'/>
  85.   </os>
  86.   <features>
  87.     <acpi/>
  88.     <apic/>
  89.     <pae/>
  90.   </features>
  91. <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  92.   <name>windows</name>
  93.   <uuid>0175ff09-2083-2969-6d9c-41f7272ac2f9</uuid>
  94.   <memory unit='KiB'>4194304</memory>
  95.   <currentMemory unit='KiB'>4194304</currentMemory>
  96.   <vcpu placement='static' cpuset='0-3'>4</vcpu>
  97.   <os>
  98.     <type arch='x86_64' machine='pc-i440fx-1.7'>hvm</type>
  99.     <boot dev='hd'/>
  100.   </os>
  101.   <features>
  102.     <acpi/>
  103.     <apic/>
  104.     <pae/>
  105.   </features>
  106. <cpu mode='custom' match='exact'>
  107.     <model fallback='allow'>SandyBridge</model>
  108.     <vendor>Intel</vendor>
  109.     <feature policy='require' name='vme'/>
  110.     <feature policy='require' name='dtes64'/>
  111.     <feature policy='require' name='vmx'/>
  112.     <feature policy='require' name='erms'/>
  113.     <feature policy='require' name='xtpr'/>
  114.     <feature policy='require' name='smep'/>
  115.     <feature policy='require' name='pcid'/>
  116.     <feature policy='require' name='est'/>
  117.     <feature policy='require' name='monitor'/>
  118.     <feature policy='require' name='smx'/>
  119.     <feature policy='require' name='tm'/>
  120.     <feature policy='require' name='acpi'/>
  121.     <feature policy='require' name='osxsave'/>
  122.     <feature policy='require' name='ht'/>
  123.     <feature policy='require' name='pdcm'/>
  124.     <feature policy='require' name='fsgsbase'/>
  125.     <feature policy='require' name='f16c'/>
  126.     <feature policy='require' name='ds'/>
  127.     <feature policy='require' name='tm2'/>
  128. <cpu mode='custom' match='exact'>
  129.     <model fallback='allow'>SandyBridge</model>
  130.     <vendor>Intel</vendor>
  131.     <feature policy='require' name='vme'/>
  132.     <feature policy='require' name='dtes64'/>
  133.     <feature policy='require' name='vmx'/>
  134.     <feature policy='require' name='erms'/>
  135.     <feature policy='require' name='xtpr'/>
  136.     <feature policy='require' name='smep'/>
  137.     <feature policy='require' name='pcid'/>
  138.     <feature policy='require' name='est'/>
  139.     <feature policy='require' name='monitor'/>
  140.     <feature policy='require' name='smx'/>
  141.     <feature policy='require' name='tm'/>
  142.     <feature policy='require' name='acpi'/>
  143.     <feature policy='require' name='osxsave'/>
  144.     <feature policy='require' name='ht'/>
  145.     <feature policy='require' name='pdcm'/>
  146.     <feature policy='require' name='fsgsbase'/>
  147.     <feature policy='require' name='f16c'/>
  148.     <feature policy='require' name='ds'/>
  149.     <feature policy='require' name='tm2'/>
  150. <feature policy='require' name='ss'/>
  151.     <feature policy='require' name='pbe'/>
  152.     <feature policy='require' name='ds_cpl'/>
  153.     <feature policy='require' name='rdrand'/>
  154.   </cpu>
  155.   <clock offset='localtime'/>
  156.   <on_poweroff>destroy</on_poweroff>
  157.   <on_reboot>restart</on_reboot>
  158.   <on_crash>restart</on_crash>
  159.   <devices>
  160.     <emulator>/usr/bin/qemu-kvm</emulator>
  161.     <disk type='file' device='disk'>
  162.       <driver name='qemu' type='raw'/>
  163.       <source file='/wd/de/4870.img'/>
  164.       <target dev='hda' bus='ide'/>
  165.       <address type='drive' controller='0' bus='0' target='0' unit='0'/>
  166.     </disk>
  167.     <controller type='usb' index='0'>
  168.       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
  169.     </controller>
  170.     <controller type='pci' index='0' model='pci-root'/>
  171.     <controller type='ide' index='0'>
  172.       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
  173.     </controller>
  174.     <controller type='virtio-serial' index='0'>
  175.       <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
  176.     </controller>
  177.     <interface type='bridge'>
  178.       <mac address='52:54:00:62:c4:4c'/>
  179.       <source bridge='br1'/>
  180.       <model type='rtl8139'/>
  181.       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
  182.     </interface>
  183. <serial type='pty'>
  184.       <target port='0'/>
  185.     </serial>
  186.     <console type='pty'>
  187.       <target type='serial' port='0'/>
  188.     </console>
  189.     <channel type='spicevmc'>
  190.       <target type='virtio' name='com.redhat.spice.0'/>
  191.       <address type='virtio-serial' controller='0' bus='0' port='1'/>
  192.     </channel>
  193.     <input type='tablet' bus='usb'/>
  194.     <input type='mouse' bus='ps2'/>
  195.     <input type='keyboard' bus='ps2'/>
  196.     <graphics type='spice' autoport='yes'/>
  197.     <sound model='ich6'>
  198.       <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
  199.     </sound>
  200.     <video>
  201.       <model type='vga' vram='9216' heads='1'/>
  202.       <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
  203.     </video>
  204.     <hostdev mode='subsystem' type='pci' managed='yes'>
  205.       <source>
  206.         <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
  207.       </source>
  208.       <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
  209.     </hostdev>
  210.     <hostdev mode='subsystem' type='pci' managed='yes'>
  211.       <source>
  212.         <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/>
  213.       </source>
  214.       <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
  215.     </hostdev>
  216.     <memballoon model='virtio'>
  217.       <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
  218.     </memballoon>
  219. </devices>
  220.   <qemu:commandline>
  221.     <qemu:arg value='-vga'/>
  222.     <qemu:arg value='none'/>
  223.     <qemu:arg value='-device'/>
  224.     <qemu:arg value='ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
  225.     <qemu:arg value='-device'/>
  226.     <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
  227.   </qemu:commandline>
  228. </domain>

donc  je ne vois pas  ce que je doit
ps: changer j ai regle le soucis de ma carte reseau


Message édité par furhma le 26-04-2014 à 14:17:28
n°1357258
toma222
Posté le 26-04-2014 à 15:27:39  profilanswer
 

Elle est bizarre ta conf.
Essayes avec :
 

Code :
  1. <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  2.   <name>windows</name>
  3.   <uuid>0175ff09-2083-2969-6d9c-41f7272ac2f9</uuid>
  4.   <memory unit='KiB'>4194304</memory>
  5.   <currentMemory unit='KiB'>4194304</currentMemory>
  6.   <vcpu placement='static' cpuset='0-3'>4</vcpu>
  7.   <os>
  8.     <type arch='x86_64' machine='pc-i440fx-2.0'>hvm</type>
  9.     <boot dev='hd'/>
  10.   </os>
  11.   <features>
  12.     <acpi/>
  13.     <apic/>
  14.     <pae/>
  15.   </features>
  16.   <cpu mode='custom' match='exact'>
  17.     <model fallback='allow'>SandyBridge</model>
  18.     <vendor>Intel</vendor>
  19.     <feature policy='require' name='vme'/>
  20.     <feature policy='require' name='dtes64'/>
  21.     <feature policy='require' name='vmx'/>
  22.     <feature policy='require' name='erms'/>
  23.     <feature policy='require' name='xtpr'/>
  24.     <feature policy='require' name='smep'/>
  25.     <feature policy='require' name='pcid'/>
  26.     <feature policy='require' name='est'/>
  27.     <feature policy='require' name='monitor'/>
  28.     <feature policy='require' name='smx'/>
  29.     <feature policy='require' name='tm'/>
  30.     <feature policy='require' name='acpi'/>
  31.     <feature policy='require' name='osxsave'/>
  32.     <feature policy='require' name='ht'/>
  33.     <feature policy='require' name='pdcm'/>
  34.     <feature policy='require' name='fsgsbase'/>
  35.     <feature policy='require' name='f16c'/>
  36.     <feature policy='require' name='ds'/>
  37.     <feature policy='require' name='tm2'/>
  38.   </cpu>
  39.   <clock offset='localtime'/>
  40.   <on_poweroff>destroy</on_poweroff>
  41.   <on_reboot>restart</on_reboot>
  42.   <on_crash>restart</on_crash>
  43.   <devices>
  44.     <emulator>/usr/bin/qemu-system-x86_64</emulator>
  45.     <disk type='file' device='disk'>
  46.       <driver name='qemu' type='raw'/>
  47.       <source file='/wd/de/4870.img'/>
  48.       <target dev='hda' bus='ide'/>
  49.       <address type='drive' controller='0' bus='0' target='0' unit='0'/>
  50.     </disk>
  51.     <controller type='usb' index='0'>
  52.       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
  53.     </controller>
  54.     <controller type='pci' index='0' model='pci-root'/>
  55.     <controller type='ide' index='0'>
  56.       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
  57.     </controller>
  58.     <controller type='virtio-serial' index='0'>
  59.       <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
  60.     </controller>
  61.     <interface type='bridge'>
  62.       <mac address='52:54:00:62:c4:4c'/>
  63.       <source bridge='br1'/>
  64.       <model type='e1000'/>
  65.       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
  66.     </interface>
  67.     <serial type='pty'>
  68.       <target port='0'/>
  69.     </serial>
  70.     <console type='pty'>
  71.       <target type='serial' port='0'/>
  72.     </console>
  73.     <input type='tablet' bus='usb'/>
  74.     <input type='mouse' bus='ps2'/>
  75.     <input type='keyboard' bus='ps2'/>
  76.     <sound model='ich6'>
  77.       <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
  78.     </sound>
  79.     <memballoon model='virtio'>
  80.       <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
  81.     </memballoon>
  82.   </devices>
  83.   <qemu:commandline>
  84.     <qemu:arg value='-vga'/>
  85.     <qemu:arg value='none'/>
  86.     <qemu:arg value='-device'/>
  87.     <qemu:arg value='ioh3420,bus=pci.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
  88.     <qemu:arg value='-device'/>
  89.     <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
  90.   </qemu:commandline>
  91. </domain>


 

n°1357269
[Albator]
MDK un jour, MDK toujours !
Posté le 26-04-2014 à 17:27:58  profilanswer
 

Ca y est, j'ai enfin réussi à monter ma config en passthrough !!!
Comme quoi il ne faut pas désespérer.
 
Le but: monter une "steambox virtuelle".
Le principe: faire fonctionner un Windows 7 en VM avec une carte graphique dédiée pour pouvoir lancer des jeux Windows.
Au départ, Windows 7 est déjà installé nativement sur un disque dur dédié (en réalité 2 disques durs dédiés).
Le but est de pouvoir exécuter ce Windows 7 en VM directement sans le réinstaller.
 
Matériel:
- Asus H81I-Plus (carte mère mini-ITX bas de gamme)
- Intel Core i5 4670
- Geforce GTX 760
 
Logiciels:
J'ai installé ArchLinux (première fois de ma vie) juste pour pouvoir suivre ce fameux tutorial:
https://bbs.archlinux.org/viewtopic.php?id=162768
 
Ingrédients:
- Kernel compilé à partir de "linux-mainline" 3.14.1 (cf. tutorial)
- Qemu 2.0 (issu du dépot "testing" de Archlinux, pas besoin de celui du tutorial)
- Seabios du dépôt stable de Archlinux (pas besoin de celui du tutorial)
 
=> Seul le kernel a été recompilé, en effet le kernel de base de Archlinux n'a pas les patches qui vont bien.
 

$ uname -a
 
Linux steambox 3.14.1-3-mainline #2 SMP PREEMPT Sat Apr 26 13:09:42 CEST 2014 x86_64 GNU/Linux


Une fois ce kernel installé, il faut encore configurer quelques trucs ...
 
Mes paramètres de conf relatifs à la VM:
 
Les options passées au kernel:

# cat /proc/cmdline
[...] intel_iommu=on pcie_acs_override=downstream


Les paramètres pour les modules noyaux mis en jeu:

$ cat /etc/modprobe.d/kvm.conf  
 
# Prevent driver loading from the host operating system
blacklist nouveau
blacklist nvidia
 
# Needed to avoid crashing KVM guest when running Passmark Performance Test and SiSoftware Sandra
options kvm ignore_msrs=1
 
# If you're using an intel cpu and nothing happens try this:
#options kvm_intel emulate_invalid_guest_state=0
 
# Prevent loading any driver for the following PCI hardware.
#  01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK104 [GeForce GTX 760] [10de:1187] (rev a1)
#  01:00.1 Audio device [0403]: NVIDIA Corporation GK104 HDMI Audio Controller [10de:0e0a] (rev a1)
options pci-stub ids=10de:1187,10de:0e0a
 
# Enable interrupt remapping
options vfio_iommu_type1 allow_unsafe_interrupts=1


Réservation de "huge pages" pour les VM (ok j'ai pas compris à quoi ça sert vraiment, mais à priori ça améliore les performances):

$ cat /etc/sysctl.d/40-vm.conf  
 
# Allocate 13 GB of RAM for Hugepages
vm.nr_hugepages = 6656


Liste des périphériques PCI(E) qui seront affectés à la VM et qui doivent utiliser le driver "vfio" dans l'hôte:

$ cat /etc/vfio.cfg  
 
DEVICES="0000:01:00.0 0000:01:00.1 0000:00:14.0 0000:00:1a.0"


Aperçu du matériel correspondant ... Il s'agit de ma carte graphique Geforce + lapartie audio associée, un contrôleur USB 2.0 et un contrôleur USB 3.0  
J'associe carrément des contrôleurs USB à la VM car ça me parait plus simple que d'associer sélectivement des périphériques USB un par un (clavier, souris, gamepad ...)

$ lspci -nn
 
00:14.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI [8086:8c31] (rev 05)
00:1a.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 [8086:8c2d] (rev 05)
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK104 [GeForce GTX 760] [10de:1187] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation GK104 HDMI Audio Controller [10de:0e0a] (rev a1)


Au niveau réseau, j'utilise simplement une interface bridge "br0" gérée par "netctl". Je n'ai qu'une seule carte réseau physique nommée "enp4s0" sur ce PC.
La encore, je ne connaissais pas du tout netctl avant aujourd'hui ... y a plein de chose faciles que je ne maitrise pas sous Arch :-)

$ cat /etc/netctl/bridge  
 
Description="Example Bridge connection"
Interface=br0
Connection=bridge
BindsToInterfaces=(enp4s0)
IP=dhcp
## Ignore (R)STP and immediately activate the bridge
SkipForwardingDelay=yes


Et enfin, le principal, mon script de démarrage de Qemu:
 

#!/bin/bash -x
 
. /etc/vfio.cfg
vfio-bind ${DEVICES}
 
qemu-system-x86_64  
  -M q35  
  -enable-kvm  
  -m 8G  
  -mem-path /dev/hugepages  
  -mem-prealloc  
  -balloon none  
  -rtc clock=host  
  -cpu host  
  -smp 2,sockets=1,cores=2,threads=1  
  -bios /usr/share/qemu/bios.bin  
  -vga none  
  -serial null  
  -parallel null  
  -monitor none  
  -display none  
  -boot order=c  
  -net nic,model=virtio,macaddr=52:54:00:6b:03:05 -net bridge,br=br0  
  -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  
  -device vfio-pci,host=01:00.1,bus=root.1,addr=00.1  
  -device ahci,bus=pcie.0,id=ahci  
  -drive file=/dev/sda,id=disk0,format=raw -device ide-hd,bus=ahci.0,drive=disk0  
  -drive file=/dev/sdc,id=disk1,format=raw -device ide-hd,bus=ahci.1,drive=disk1  
  -device vfio-pci,host=00:14.0,bus=pcie.0  
  -device vfio-pci,host=00:1a.0,bus=pcie.0


On trouve donc dans les paramètres de la ligne de commande (entre autres):
- 1 carte mère de type "Q35", à priori plus adaptée à ce genre de VM que l'ancestrale "440-fx"
- 1 carte réseau paravirtuelle "virtio" attachée au bridge "br0" (nécessite un driver spécial sous Windows)
- 1 bus PCI Express avec:
-- La carte graphique Geforce
-- La partie audio de la Geforce
-- 1 contrôleur disque de type AHCI avec:
--- Un disque dur virtuel SATA en passthrough vers le disque physique /dev/sda
--- Un disque dur virtuel SATA en passthrough vers le disque physique /dev/sdc
-- Le contrôleur USB 3.0
-- Le contrôleur USB 2.0
 
Voila, ça fonctionne bien, j'ai pas tenté de bench ni fait de tuning pour voir si je peux gratter quelques performances ...
J'utilise une souris, un clavier et un gamepad branchés en face avant de ce PC est ils sont bien détectés par la VM. La TV est reliée en HDMI.
Une fois Windows démarré, au premier démarrage, j'ai eu droit au célèbre problème de la carte graphique "Windows a arrêté ce périphérique car il a rencontré un problème (Code 43)".
J'ai lancé "Geforce Experience" qui m'a réinstallé le pilote, et après reboot, tout fonctionnait.
 
Prochaine étape: faire fonctionner la VM avec libvirt
=> convertir le script shell en fichier XML

n°1357311
adejour
Posté le 27-04-2014 à 12:09:25  profilanswer
 

Bonjour,
 
J'ai recompilé le noyau, ça se fait plutôt bien.
Après cela xvga=on fonctionne : l'affichage se fait bien sur la carte vidéo.
en revanche windows s'initialise mais ne démarre pas complètement (soit ça freeze, soit l'initialisation ne s'arrete jamais, soit ça plante) je n'ai pas cherché à aller plus loin.
 
Donc j'ai repris un peu ton tuto Albator pour voir un peu les différences avec ma config (pour rappel, moi je suis sous Debian Wheezy par contre).
 
Voici les principales différences que j'essaie de corriger :
* J'avais Qemu 1.7, donc il faut que j'installe qemu 2.0.0. Pour ça j'ai pris cette archive : http://wiki.qemu-project.org/downl [...] .0.tar.bz2 et j'essaie de recompiler, mais c'est assez long (en cours). Si vous voyez une méthode plus simple...
* kernel : je l'ai bien patché, la version téléchargée est https://www.kernel.org/pub/linux/ke [...] 4.1.tar.xz
uname -a donne :
Linux JAserver 3.14.1-customkernel #1 SMP Sat Apr 26 16:13:36 CEST 2014 x86_64 GNU/Linux
* options du noyau : je n'avais pas ajouté pcie_acs_override=downstream kvm.ignore_msrs=1
* je n'utilse toujours pas pci-stub, tom222 tu me disais que ce n'était pas la peine?
 
tests à suivre...

n°1357316
toma222
Posté le 27-04-2014 à 12:48:14  profilanswer
 

Bonjour,
 
@[Albator] : chouette, je me sens moins seul à avoir des résultats ici ! En plus tu as réussi à passer une carte Nvidia (ça donne envie pour les VM Linux) et un Windows installé physiquement. Archlinux est très pratique pour ça (écrire ou récupérer le PKGBUILD qui va bien, un coup de makepkg et c'est fait). Par contre, dans mon cas ma machine tourne h24 et j'ai besoin de stabilité (serveurs) donc ce n'était pas un choix envisageable.
Pour le passage au format libvirtd, ce n'est pas très compliqué, vu qu'on peut passer des commandes qemu directement.
 
@adejour : tu commences à approcher du but ! Effectivement, de mon côté je n'avais pas réussi avec qemu 1.7, j'avais du compilé une version depuis git (1.7.50) pour commencer à avoir des résultats avec x-vga=on. De façon général je déconseille la compilation à la main. Pour garder ton système un minimum propre, je te conseille plutôt que de faire un make install de faire un checkinstall (ça te créera un .deb, qui sera plus facile à nettoyer).
Qemu 2.0 est actuellement dans unstable, dès qu'il sera dans testing il devrait être backporté vers Wheezy je suppose.
 
Autre piste, sur lequel j'ai eu des soucis. Le passage de la partie audio de la carte graphique (le périphérique 01:00.1 en général) peut poser problème.
Pour s'en sortir, il ne faut pas le mettre sur le même bus que la partie graphique :

Code :
  1. <qemu:commandline>
  2.     <qemu:arg value='-vga'/>
  3.     <qemu:arg value='none'/>
  4.     <qemu:arg value='-device'/>
  5.     <qemu:arg value='ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
  6.     <qemu:arg value='-device'/>
  7.     <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
  8.     <qemu:arg value='-device'/>
  9.     <qemu:arg value='vfio-pci,host=01:00.1,bus=pcie.0'/>
  10.   </qemu:commandline>


 
Pour moi, toutes les options particulières (pcie_acs_override, ignore_msrs, emulate_invalid_guest_state, pci-stub, allow_unsafe_interrupts, hugepages...) ne semblent pas utiles, je pense qu'elles sont nécessaires que dans certains cas particuliers, mais à tester.

n°1357340
furhma
Posté le 27-04-2014 à 18:13:47  profilanswer
 

bon je vien de modifier mon  xml mais au démarrage j ai le droit a ca:

Code :
  1. Erreur lors du démarrage du domaine: internal error: early end of file from monitor: possible problem:
  2. qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: error: device 0000:01:00.0 is already attached
  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


 

n°1357342
toma222
Posté le 27-04-2014 à 18:20:20  profilanswer
 

Vu le message d'erreur, il semblerait que tu essayes d'ajouter ta carte graphique deux fois. Si tu la mets dans <qemu:commandline>, il ne faut pas l'ajouter ailleurs.

n°1357344
furhma
Posté le 27-04-2014 à 18:34:33  profilanswer
 

ben ma config c est celle que j ai poster hier  avec  tes  modifs et la je viens de modifier les comandelines avec

Code :
  1. <qemu:commandline>
  2.         <qemu:arg value='-vga'/>
  3.         <qemu:arg value='none'/>
  4.         <qemu:arg value='-device'/>
  5.         <qemu:arg value='ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
  6.         <qemu:arg value='-device'/>
  7.         <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
  8.         <qemu:arg value='-device'/>
  9.         <qemu:arg value='vfio-pci,host=01:00.1,bus=pcie.0'/>
  10.       </qemu:commandline>

et j ai ca:

Code :
  1. Erreur lors du démarrage du domaine: internal error: process exited while connecting to monitor: qemu-system-x86_64: -device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1: Bus 'pcie.0' not found


n°1357345
adejour
Posté le 27-04-2014 à 18:38:18  profilanswer
 

Bon ba écoutez, merci à tous, je crois bien que ça marche.. (presque)!
J'ai mis à jour mon aide mémoire/tuto avec tout ce que j'ai fait depuis le début (désolé, c'est plutot en mode brouillon):
http://lite4.framapad.org/p/HW78RN2d2p
 
Par rapport à ce midi, je crois que je n'ai pas changé grand chose.
J'ai réinstallé qemu avec le .deb (checkinstall) et j'ai mis le minimum d'option pour le lancement du kernel (seulement GRUB_CMDLINE_LINUX="intel_iommu=on" ).
 
Maintenant, windows démarre (avec la carte en primary) et se charge completement !! Elle est correctement visualisée dans le gestionnaire de périphérique.
Je n'ai fait aucun test / benchmarck.
 
Par contre, j'ai encore un petit soucis : je n'arrive pas à passer mon clavier et ma clé USB au guest (pour l'instant, j'utilise donc VNC pour les controles, pas très pratique!).
 
Si je passe avec l'option

Code :
  1. -usb -usbdevice host:0d3d:0001


je reçois l'erreur suivante :  

Code :
  1. qemu: could not add USB device 'host:0d3d:0001'


 
lorsque je bind les controleurs usb, je perds bien le controle de ma souris et de mon clavier sur le host (ce qui me semble plutot positif) mais ensuite en lançant qemu avec l'option

Code :
  1. -device vfio-pci,host=00:14.0,bus=pcie.0 \
  2. -device vfio-pci,host=00:1a.0,bus=pcie.0 \
  3. -device vfio-pci,host=00:1d.0,bus=pcie.0


je reçois ce message d'erreur

Code :
  1. qemu-system-x86_64: vfio: Cannot reset device 0000:00:14.0, no available reset mechanism


 
Mes controleurs usb:

Code :
  1. 00:14.0 USB controller [0c03]: Intel Corporation Lynx Point USB xHCI Host Controller [8086:8c31] (rev 05)
  2.     00:1a.0 USB controller [0c03]: Intel Corporation Lynx Point USB Enhanced Host Controller #2 [8086:8c2d] (rev 05)
  3.     00:1d.0 USB controller [0c03]: Intel Corporation Lynx Point USB Enhanced Host Controller #1 [8086:8c26] (rev 05)


 
Matériel usb :

Code :
  1. Bus 003 Device 002: ID 0d3d:0001 Tangtop Technology Co., Ltd HID Keyboard


n°1357346
toma222
Posté le 27-04-2014 à 18:39:45  profilanswer
 

Laisse tombé pour l'instant la partie audio (je ne l'avais volontairement pas mis dans la config que je t'avais donné), mets juste :

Code :
  1. <qemu:commandline>
  2.     <qemu:arg value='-vga'/>
  3.     <qemu:arg value='none'/>
  4.     <qemu:arg value='-device'/>
  5.     <qemu:arg value='ioh3420,bus=pci.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1'/>
  6.     <qemu:arg value='-device'/>
  7.     <qemu:arg value='vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on'/>
  8.   </qemu:commandline>

n°1357347
adejour
Posté le 27-04-2014 à 18:43:20  profilanswer
 

J'imagine que c'est parce que le driver du clavier reste chargé ou un truc comme cela ?
A terme je souhaiterais conserver un clavier usb sur le host et mapper le second sur le guest...

n°1357348
toma222
Posté le 27-04-2014 à 18:45:32  profilanswer
 

adejour a écrit :


Par contre, j'ai encore un petit soucis : je n'arrive pas à passer mon clavier et ma clé USB au guest (pour l'instant, j'utilise donc VNC pour les controles, pas très pratique!).


 
Et si tu passes uniquement un contrôleur USB (00:1a.0 ou 00:1d.0, à toi de voir sur lequel tes claviers/souris sont connectés) ?
Il me semble que j'avais bricolé dans mon BIOS pour désactiver l'USB 3.0, sinon j'avais des soucis.

n°1357349
furhma
Posté le 27-04-2014 à 19:01:03  profilanswer
 

alors si j utilise te commandelines j ai cette erreur:

Code :
  1. Erreur lors du démarrage du domaine: internal error: process exited while connecting to monitor: qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: error opening /dev/vfio/1: Permission denied
  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 group 1
  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


n°1357350
furhma
Posté le 27-04-2014 à 19:02:59  profilanswer
 

et je viens de lancer le script lsgroup et j ai ca  

Code :
  1. Group 1 ###
  2.     00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
  3.     01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Pitcairn PRO [Radeon HD 7850]
  4.     01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series]


n°1357351
toma222
Posté le 27-04-2014 à 19:13:16  profilanswer
 

furhma a écrit :

alors si j utilise te commandelines j ai cette erreur:

Code :
  1. Erreur lors du démarrage du domaine: internal error: process exited while connecting to monitor: qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: error opening /dev/vfio/1: Permission denied
  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 group 1
  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




 
Pour le Permission denied, voir quelques postes plus haut :

Code :
  1. sudo chmod g+rw /dev/vfio/1
  2. sudo chmod o+rw /dev/vfio/1


(ce n'est probablement pas le plus propre, il faut sans doute mieux agir au niveau des cgroup_device_acl dans qemu.conf, mais ça devrait te dépanner).


Message édité par toma222 le 27-04-2014 à 19:22:16
n°1357352
XaTriX
Posté le 27-04-2014 à 19:20:09  profilanswer
 

furhma a écrit :

et je viens de lancer le script lsgroup et j ai ca  

Code :
  1. Group 1 ###
  2.     00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
  3.     01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Pitcairn PRO [Radeon HD 7850]
  4.     01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series]




C'est quoi ton proc ?
 
XaT


---------------
"Xat le punk à chien facho raciste. C'est complexe comme personnage." caudacien 05/10/2020
n°1357353
furhma
Posté le 27-04-2014 à 19:25:25  profilanswer
 
n°1357354
furhma
Posté le 27-04-2014 à 19:29:12  profilanswer
 

et meme apres

Code :
  1. sudo chmod g+rw /dev/vfio/1
  2.     sudo chmod o+rw /dev/vfio/1

j ai

Code :
  1. Erreur lors du démarrage du domaine: internal error: process exited while connecting to monitor: qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: error opening /dev/vfio/1: Operation not permitted
  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 group 1
  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


Message édité par furhma le 27-04-2014 à 19:29:49
n°1357355
toma222
Posté le 27-04-2014 à 19:40:14  profilanswer
 

Aye.
J'ai retrouvé ces posts : https://bbs.archlinux.org/viewtopic [...] 62768&p=27 sur le sujet.
A priori, ils ont résolu le souci en éditant /etc/libvirt/qemu.conf et en ajoutant :

Code :
  1. cgroup_device_acl = [ "/dev/vfio/1" ]


Il faut redémarrer libvirtd-bin ensuite.
Chez moi ça passe avec uniquement les chmod.

Message cité 1 fois
Message édité par toma222 le 27-04-2014 à 19:55:17
n°1357356
XaTriX
Posté le 27-04-2014 à 20:05:42  profilanswer
 


J'ai le même mais en.. K donc pas de VT-D :cry:
 
XaT


---------------
"Xat le punk à chien facho raciste. C'est complexe comme personnage." caudacien 05/10/2020
n°1357357
[Albator]
MDK un jour, MDK toujours !
Posté le 27-04-2014 à 20:19:40  profilanswer
 

adejour a écrit : a écrit :

 
 

  • qemu-system-x86_64: vfio: Cannot reset device 0000:00:14.0, no available reset mechanism






 
 
Salut, j'ai exactement le même message au lancement de Qemu, et moi aussi c'est sur le contrôleur USB3 ...
Mais à priori il fonctionne correctement dans ma VM ... je pense que ce message est un avertissement, pas une erreur.

Message cité 1 fois
Message édité par [Albator] le 27-04-2014 à 20:20:34
n°1357358
furhma
Posté le 27-04-2014 à 20:33:13  profilanswer
 

XaTriX a écrit :


J'ai le même mais en.. K donc pas de VT-D :cry:
 
XaT


emoi cest pas un k haha ;)

n°1357359
furhma
Posté le 27-04-2014 à 20:36:04  profilanswer
 

toma222 a écrit :


Il faut redémarrer libvirtd-bin ensuite.


a tous pour redemarrer libvirtd il faut   soit faire

Code :
  1. service libvirtd restart

ou soit :

Code :
  1. service libvirt-bin restart


 
et maintenant j ai ca en erreur :

Code :
  1. Erreur lors du démarrage du domaine: internal error: process exited while connecting to monitor: qemu-system-x86_64: -chardev pty,id=charserial0: Failed to create chardev

Message cité 1 fois
Message édité par furhma le 27-04-2014 à 20:44:59
n°1357362
furhma
Posté le 27-04-2014 à 21:06:38  profilanswer
 

j ai essyer avec   ca  mais ca marche pas :
https://bbs.archlinux.org/viewtopic.php?id=177483

n°1357365
adejour
Posté le 27-04-2014 à 22:16:09  profilanswer
 

[Albator] a écrit :

Salut, j'ai exactement le même message au lancement de Qemu, et moi aussi c'est sur le contrôleur USB3 ...
Mais à priori il fonctionne correctement dans ma VM ... je pense que ce message est un avertissement, pas une erreur.


 
A d'accord, et finalement, tu as laissé l'usb 3 activé?

n°1357388
furhma
Posté le 28-04-2014 à 10:22:36  profilanswer
 

bon ma derniere erreur

Code :
  1. Erreur lors du démarrage du domaine: internal error: process exited while connecting to monitor: qemu-system-x86_64: -chardev pty,id=charserial0: Failed to create chardev


est apparue depuis que j ai rajouter ca dans qemu.conf

Code :
  1. cgroup_device_acl = [ "/dev/vfio/1" ]

ma vm en pci -assign ne demarais plus nn plus j ai donc passé cette ligne en commentaire et tout est rentre dans l ordre enfin presque ma vm en vfio-pci ne demarre toujours pas  
erreur

Code :
  1. Code :
  2.     Erreur lors du démarrage du domaine: internal error: process exited while connecting to monitor: qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: error opening /dev/vfio/1: Operation not permitted
  3.     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
  4.     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.
  5.     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


bon apres un peu de lecture sur le fofo arch il semblerait que ce ne soit pas  reglable sans  le patch acs car ma cg n est pas seul dans son groupe iommu


Message édité par furhma le 28-04-2014 à 10:29:35
n°1357390
adejour
Posté le 28-04-2014 à 10:45:39  profilanswer
 

Bonjour,
 
****** Pour le problème avec l'usb 3 ******  
 
Alors j'ai fait plusieurs tests en désactivant dans le BIOS ce que je crois être l'USB 3 (xHCI).
Avant désactivation lspci -nn:

Code :
  1. 00:14.0 USB controller [0c03]: Intel Corporation Lynx Point USB xHCI Host Controller [8086:8c31] (rev 05)
  2. 00:1a.0 USB controller [0c03]: Intel Corporation Lynx Point USB Enhanced Host Controller #2 [8086:8c2d] (rev 05)
  3. 00:1d.0 USB controller [0c03]: Intel Corporation Lynx Point USB Enhanced Host Controller #1 [8086:8c26] (rev 05)


Rappel du problème: lorsque je "bindais" les 2 controleurs, clavier et souris étaient toujours fonctionnels sur le host (ce qui n'est pas le comportement attendu). Ce n'était que quand je bindais le xHCI que ceux là étaient inactifs. Et quant à la prise de contrôle par le guest, je n'ai pas réussi, mais peut être qu'il faudra refaire des tests car je ne suis plus sur du ou des controleurs que je transmettais au guest.
 
Après désactivation lspci -nn :

Code :
  1. 00:1a.0 USB controller [0c03]: Intel Corporation Lynx Point USB Enhanced Host Controller #2 [8086:8c2d] (rev 05)
  2. 00:1d.0 USB controller [0c03]: Intel Corporation Lynx Point USB Enhanced Host Controller #1 [8086:8c26] (rev 05)


Quand je bind l'un des deux controleurs, j'ai bien un certain nombre de ports USB qui restent actifs, et d'autres qui ne sont plus utilisables sur le host, ce qui est là le résultat attendu.
Et en plus la transmission du controleur au guest fonctionne.
 
-> par contre, c'est dommage de devoir désactiver le USB3 !
 
 
****** Pour le fonctionnement en passthrough ******  
 
Le démarrage fonctionne bien et j'arrive à avoir clavier, souris, carte vidéo fonctionnels, et ça c'est plutôt super!
 
En revanche le redémarrage de la machine (via Windows > Démarrer > Redémarrer) ou via un arret et relancement de la VM donne un beau BSOD avec l'erreur suivante :

Code :
  1. PAGE_FAULT_IN_NONPAGED_AREA
  2.     Technical information : *** STOP: 0x00000050 (...) Physical memory dump FAILED with status 0x800000005


(J'ai vérifié, le BSOD apparait aussi sans partage de l'USB)
Le problème a déjà été reporté comme tel sur le forum arch linux ici : https://bbs.archlinux.org/viewtopic [...] 3#p1353453 , même si cela semble être un problème isolé (c'est pas tout le monde qui a eu cette erreur). N'était-ce pas NHiX qui avait un problème lors du redémarrage de son guest?
 
Je n'ai pas encore exploré totalement google pour diagnostiquer d'où ça pourrait venir.
Sinon, heureusement, cela ne créé pas de plantage du host. mais je suis tout de meme obligé pour l'instant de redémarrer mon host pour redémarrer la VM.
 
Tout se passe comme si la carte vidéo n'était pas réinitialisée lors du redémarrage, comme si qemu réinitialisait bien la VM, mais ne prenait pas en compte la problématique de la carte vidéo. -> le changement de l'image BIOS pourrait peut être arranger qqc non ?
 
Sinon, y a t il une ligne de commande à faire sur le host qui permettrait de réinitialiser la carte PCI pour éviter une reboot du host ?
 
Enfin, petite note supplémentaire pour être complet sur le résultats de mes tests : je confirme que mettre "bus=root.1,addr=00.1" pour la partie son empeche le démarrage de windows (bug graphique puis redémarrage) et que mettre à la place "bus=pcie.0" fonctionne.
-> peut être encore qqc à diagnostiquer à l'avenir.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16

Aller à :
Ajouter une réponse
 

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-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR