Probleme mit PCI und KVM, Virt-Manager

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Saxenpower

Probleme mit PCI und KVM, Virt-Manager

Beitrag von Saxenpower » 02.07.2010 08:35:29

Hallo,

ich versuche auf Debian Squeeze mit qemu-kvm 0.12.4+dfsg-1 und virt-manager 0.8.4-4 eine AVM-Fritz-Karte an einen KVM-Gast zu übergeben. Das PCI-Device kann ich mit dem Virt-Manager auch gut übergeben.
Nur wenn ich den Gast mit im Virt-Manager starten will, bekomme die Meldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/engine.py", line 808, in run_domain
    vm.startup()
  File "/usr/share/virt-manager/virtManager/domain.py", line 1286, in startup
    self._backend.create()
  File "/usr/lib/python2.6/dist-packages/libvirt.py", line 333, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: internal error Process exited while reading console log output: char device redirected to /dev/pts/5
Unable to assign device: PCI region 0 at address 0xfbfff800 has size 0x20,  which is not a multiple of 4K
Error initializing device pci-assign
Die dazugehörige XML-Datei für diesen Gast sieht so aus:

Code: Alles auswählen

<domain type='kvm'>
  <name>Asterisk-Fax-Server</name>
  <uuid>5222c05c-c410-9bbe-f7aa-6af5155c7cd9</uuid>
  <memory>786432</memory>
  <currentMemory>786432</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-0.12'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='block' device='disk'>
      <driver name='qemu'/>
      <source dev='/dev/Volume1/Asteriskfax-Server'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <disk type='block' device='cdrom'>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:6f:09:09'/>
      <source network='Netzwerk3'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' keymap='de'/>
    <sound model='ac97'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </sound>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x07' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </hostdev>
  </devices>
</domain>
Weiß jemand, was da noch nicht richtig funktioniert?

Grüße

SaxenPower

Benutzeravatar
DynaBlaster
Beiträge: 958
Registriert: 25.03.2004 18:18:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DF0://dynablaster.adf

Re: Probleme mit PCI und KVM, Virt-Manager

Beitrag von DynaBlaster » 04.07.2010 11:26:58

Das Durchreichen von PCI-Devices klappt bei mir leider auch (noch) nicht.

Bei mir liegt es allerdings am eingesetzten Mainboard, dass kein VT-d unterstützt. Leider sind die Informationen, die ich bisher im WWW über VT-d-kompatible Mainboards finden konnte auch nicht allzu üppig. Entsprechende Mainboards scheinen jedenfalls recht rar gesät zund ziemlich teuer zu sein (ab 100€ aufwärts halt). Einen recht guten Übrblick liefern folgende Links.

http://www.linux-kvm.org/page/How_to_as ... T-d_in_KVM
http://wiki.xensource.com/xenwiki/VTdHowTo

Mich würden Erfahrungsberichte bzgl. VT-d interessieren. Besonders Sockel-775-Mainboard-Empfehlungen wären willkommen.

Saxenpower

Re: Probleme mit PCI und KVM, Virt-Manager

Beitrag von Saxenpower » 26.07.2010 09:50:27

Ich vermute mal, dass das Problem eher bei virt-manager selber liegt. Immerhin zeigen die Fehlermeldungen, dass irgendetwas in den Python-Scripten nicht umgesetzt werden kann.
Ich habe jetzt zumindest mal auf der Basis des Squeeze-Kernels einen neuen Kernel kompiliert und dabei [urlhttp://www.linux-kvm.org/page/How_to_assign_de ... T-d_in_KVM][/url] umgesetzt. Positiv ist, dass alle KVM-Gäste nach wie vor laufen und vor allem

Code: Alles auswählen

dmesg | grep -e DMAR -e IOMMU
folgende Ausgabe bietet

Code: Alles auswählen

[    0.000000] Please enable the IOMMU option in the BIOS setup
[    0.460444] PCI-DMA: using GART IOMMU.
[    0.460448] PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture
Ich dachte jetzt, kvm mit dem Befehl "kvm" auf der Console zu starten. Wenn ich mir die Maschine mit "ps aux | grep kvm" ansehe, dann sieht die Ausgabe so aus:

Code: Alles auswählen

kvm -S -M pc-0.12 -enable-kvm -m 768 -smp 1,socket s=1,cores=1,threads=1 -name Asterisk-Fax-Server -uuid 5222c05c-c410-9bbe-f7aa-6af5155c7cd9 -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/Asterisk-Fax-Server.monitor,server,nowait -mon chardev=monitor,mode=readline -rtc base=utc -boot c -drive file=/dev/Volume1/Asteriskfax-Server,if=none,id=drive-virtio-disk0,boot=on -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0 -drive 0-1-0,readonly=on -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -device virtio-net-pci,vlan=0,id=net0,mac=52:54:00:6f:09:09,bus=pci.0,addr=0x5 -net ap,fd=44,vlan=0,name=hostnet0 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -vnc 127.0.0.1:4 -k de -vga cirrus -device AC97,id=sound0,bus=pci.0,addr=0x6 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
Ich möchte diesem Befehl jetzt die Werte aus der XML-Datei mitgeben, um die AVM-Karte dem Gast "Asterisk-Fax-Server" zur Verfügung zu stellen:

Code: Alles auswählen

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x07' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </hostdev>
Ich jetzt nur überfragt bei der genauen Syntax der Option und wie diese Werte übergeben werden (Also was sich KVM aus der XML-Datei an dieser Stelle ausliest).
Ich nehme mal an, dass es sich hierbei um die kvm-Option "-pcidevice host=" handelt.

Viele Grüße

SaxenPower

Antworten