Hardware durchreichen mit Xen

Hier habe ich nochmal zusammengefaßt, was nötig ist, um Hardware im Xen durchzureichen. Außerdem gibt es ein Tool, um sich eine Übersicht über IRQs zu verschaffen.

PCI-Karten

Zunächst muß man sich aussuchen, welche Karten durchgereicht werden sollen. Dabei ist darauf zu achten, daß immer ein ganzer IRQ durchgereicht wird, IRQ-Sharing funktioniert nicht zwischen Doms. (Solange ein Gerät den IRQ zwar belegt aber nicht benutzt, kann es allerdings funktionieren.)

Eine Übersicht über die Geräte und IRQs gibt dieses Tool (benötigt PHP).

Die Karten dürfen in der Dom0 nicht benutzt werden, daher müssen sie von ihrem Treiber abgebunden werden:

  • Als Bootparamter:
    pciback.hide = (xx:xx.x)(xx:xx.x)…
  • Zur Laufzeit:
    echo -n "xxxx:xx:xx.x" > /sys/bus/pci/devices/xxxx:xx:xx.x/driver/unbind
    echo -n "xxxx:xx:xx.x" > /sys/bus/pci/drivers/pciback/new_slot
    echo -n "xxxx:xx:xx.x" > /sys/bus/pci/drivers/pciback/bind

In der cfg werden sie nun der DomU mitgegeben:

  • pci=['xx:xx.x','xx:xx.x',…]

Es kann passieren, daß dem DomU-Kernel der Parameter swiotlb=force (alte peruanische Beleidigung?) mitgegeben werden muß, wie hier:

  • kernel  = '/boot/vmlinuz-2.6.24-26-xen'
    ramdisk = '/boot/initrd.img-2.6.24-26-xen'
    extra = 'xencons=ttyS swiotlb=force'

Ports

Ports werden einfach durch Angabe ihrer Adresse in der cfg durchgereicht:

  • irq=[4]
    ioports=["3f8-3ff"]