[gelöst]i915 entladen und laden (XEN VGA passthrough) Wheezy

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
xeni

[gelöst]i915 entladen und laden (XEN VGA passthrough) Wheezy

Beitrag von xeni » 01.05.2013 02:06:48

Hi,

um bei Xen meine Grafikkarte an den Gast durchzureichen (Intel HD4000), habe ich das Gerät von der Dom0 getrennt und dann an Xen weitergereicht. Das hat seit Monaten funktioniert, hat aber nach einem Kernel-Update (Wheezy 3.2.0-4-amd64) vor ca einer Woche leider den Dienst quittiert.

Ich trenne die PCI Graka wie folgt:
echo -n 0000:00:02.0 > /sys/bus/pci/devices/0000:00:02.0/driver/unbind

Das klappt auch, danach wird diese an pciback übergeben, kann aber von Xen nicht verwendet werden. Xen scheint aber nicht das grundsätzliche Problem zu sein ...

Selbst ein sofortiges zurück-zuweisen an die Dom0 geht nicht mehr:
echo -n 0000:00:02.0 > /sys/bus/pci/devices/0000:00:02.0/driver/unbind
echo "0000:00:02.0" > /sys/bus/pci/drivers/i915/bind

Vor dem Kernel Update hat das unbind dafür gesorgt dass der Bildschirm schwarz wurde und nach dem Bind habe ich meine Shell wieder gesehen. Nach dem Kernelupdate geht das "bind" nicht mehr, ich sehe hier nur noch eine Art Schachbrettmuster auf dem Bildschirm ...

Ich vermute einmal, dass die GPU irgendwie nicht richtig zurückgesetzt wird ...
Auf gut Glück habe ich mal folgendes probiert:
echo 1 > /sys/bus/pci/devices/0000:02:00.0/reset
Klappt aber nicht ...

Kennt jemand einen Trick, wie man eine GPU zurücksetzen kann bzw wie ich unter Xen einen VGA Passthrough mit meiner Hardware wieder ans laufen bekomme?

Danke für jede Hilfe!
Zuletzt geändert von xeni am 03.05.2013 12:51:43, insgesamt 1-mal geändert.

gugus
Beiträge: 389
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: i915 entladen und laden (XEN VGA passthrough) Wheezy

Beitrag von gugus » 01.05.2013 10:36:37

Servus
Ich habe dies so gelöst, allerdings mit Netzwerkkarte und USB Hub

mit lspci das Gerät für die Übergabe an eine DomU raussuchen

Code: Alles auswählen

03:00.0 Ethernet controller: Intel Corporation 82557/8/9/0/1 Ethernet Pro 100 (rev 08)
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
mit lspci -v den treiber für die Blacklist

Code: Alles auswählen

Kernel driver in use: e100
Kernel driver in use: xhci_hcd
danach die /etc/modules mit den beiden Modulen die benötigt werden bearbeiten:

Code: Alles auswählen

~# cat /etc/modules 

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.
Loop

xen_pciback
pci_stub
Anschliessend die /etc/modprobe.d/modprobe.conf mit pciback erweitern

Code: Alles auswählen

~# cat /etc/modprobe.d/modprobe.conf 
options xen-pciback hide=(03:00.0)(00:14.0)
und die Treiber aus LSPCI -V in die Blackliste eintrtagen

Code: Alles auswählen

~# cat /etc/modprobe.d/blacklist.conf 
blacklist e100
blacklist xhci_hcd
Danach sieht man mit xm list und pci-list die zugeordete Adresse (USB Hub)
xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 23807 8 r----- 3633.7
pluto 1 8192 2 -b---- 1128.0

xm pci-list pluto
Device
0000:00:14.0
Die Nertzwerkkarte verfügbar für eine DomU:
xm pci-list-assignable-devices
0000:03:00.0
Gruss
Gugus

xeni

Re: i915 entladen und laden (XEN VGA passthrough) Wheezy

Beitrag von xeni » 01.05.2013 11:15:08

Hallo Gugus,

genau so habe ich das im Prinzip auch gemacht.

Code: Alles auswählen

~# xm pci-list-assignable-devices
0000:00:02.0
0000:00:1b.0
0000:00:1d.0
zeigt mir an, dass ich die devices einer domu zuordnen kann ..
Starte ich diese aber, kommt seit neustem:

Code: Alles auswählen

# xm create lubuntu.cfg
Using config file "/etc/xen/lubuntu.cfg".
Error: (22, 'Invalid argument')
Und im xend.log steht:

Code: Alles auswählen

[2013-05-01 11:10:29 4897] DEBUG (pciif:320) pci: enabling ioport 0xf000/0x40
[2013-05-01 11:10:29 4897] DEBUG (pciif:334) pci: enabling iomem 0xf7800000/0x400000 pfn 0xf7800/0x400
[2013-05-01 11:10:29 4897] DEBUG (pciif:334) pci: enabling iomem 0xe0000000/0x10000000 pfn 0xe0000/0x10000
[2013-05-01 11:10:29 4897] DEBUG (pciif:351) pci: enabling irq 16
[2013-05-01 11:10:29 4897] INFO (pciquirk:92) NO quirks found for PCI device [8086:1e26:1849:1e26]
[2013-05-01 11:10:29 4897] DEBUG (pciquirk:135) Permissive mode NOT enabled for PCI device [8086:1e26:1849:1e26]
[2013-05-01 11:10:29 4897] DEBUG (pciif:334) pci: enabling iomem 0xf7c07000/0x400 pfn 0xf7c07/0x1
[2013-05-01 11:10:29 4897] DEBUG (pciif:351) pci: enabling irq 23
[2013-05-01 11:10:29 4897] ERROR (XendDomainInfo:2927) XendDomainInfo.initDomain: exception occurred
Traceback (most recent call last):
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 2914, in _initDomain
    self._createDevices()
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 2395, in _createDevices
    self.pci_device_configure_boot()
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 627, in pci_device_configure_boot
    self.pci_device_configure(dev_sxp, first_dev = first)
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 970, in pci_device_configure
    devid = self._createDevice('pci', existing_pci_conf)
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 2326, in _createDevice
    return self.getDeviceController(deviceClass).createDevice(devConfig)
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/server/DevController.py", line 67, in createDevice
    self.setupDevice(config)
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/server/pciif.py", line 453, in setupDevice
    self.setupOneDevice(d)
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/server/pciif.py", line 353, in setupOneDevice
    allow_access = True)
Error: (22, 'Invalid argument')
[2013-05-01 11:10:29 4897] ERROR (XendDomainInfo:488) VM start failed
Traceback (most recent call last):
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 474, in start
    XendTask.log_progress(31, 60, self._initDomain)
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendTask.py", line 209, in log_progress
    retval = func(*args, **kwds)
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 2930, in _initDomain
    raise VmError(str(exn))
VmError: (22, 'Invalid argument')
[2013-05-01 11:10:29 4897] DEBUG (XendDomainInfo:3071) XendDomainInfo.destroy: domid=3
[2013-05-01 11:10:29 4897] DEBUG (XendDomainInfo:2401) Destroying device model
[2013-05-01 11:10:30 4897] INFO (image:615) lubuntu device model terminated
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:2408) Releasing devices
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:2414) Removing vif/0
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:1276) XendDomainInfo.destroyDevice: deviceClass = vif, device = vif/0
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:2414) Removing vbd/768
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:1276) XendDomainInfo.destroyDevice: deviceClass = vbd, device = vbd/768
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:2414) Removing vbd/5632
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:1276) XendDomainInfo.destroyDevice: deviceClass = vbd, device = vbd/5632
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:2406) No device model
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:2408) Releasing devices
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:2414) Removing vif/0
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:1276) XendDomainInfo.destroyDevice: deviceClass = vif, device = vif/0
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:2414) Removing vbd/768
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:1276) XendDomainInfo.destroyDevice: deviceClass = vbd, device = vbd/768
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:2414) Removing vbd/5632
[2013-05-01 11:10:30 4897] DEBUG (XendDomainInfo:1276) XendDomainInfo.destroyDevice: deviceClass = vbd, device = vbd/5632
[2013-05-01 11:10:30 4897] ERROR (XendDomainInfo:108) Domain construction failed
Traceback (most recent call last):
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 106, in create
    vm.start()
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 474, in start
    XendTask.log_progress(31, 60, self._initDomain)
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendTask.py", line 209, in log_progress
    retval = func(*args, **kwds)
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 2930, in _initDomain
    raise VmError(str(exn))
VmError: (22, 'Invalid argument')
Neben der Graka weise ich noch USB und Sound zu, beides wird ohne Probleme durchgereicht ...
Nur die HD4000 scheint er irgendwie nicht mehr durchgereicht zu bekommen ... :-(

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: i915 entladen und laden (XEN VGA passthrough) Wheezy

Beitrag von habakug » 01.05.2013 11:36:16

Hallo!

Hier ein aktueller Hinweis [1].
Issues identified with certain INTEL processor chipsets required iommu to be disabled by default in order for PCI PassThrough to work with PV Guests
Beim booten ist der Parameter
iommu=no-intremap
zu übergeben.
Vor dem Fehler ist da ein

Code: Alles auswählen

DEBUG (pciif:351) pci: enabling irq 23

Gruß, habakug

[1] http://www.novell.com/support/kb/doc.php?id=7012337
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

xeni

Re: i915 entladen und laden (XEN VGA passthrough) Wheezy

Beitrag von xeni » 01.05.2013 12:04:08

Hallo,

danke für den Hinweis, aber iommu=no-intremap war es leider auch nicht ...

Ich habe noch ein bisschen getestet und es scheint wohl doch nicht an der Grafikkarte zu liegen ... habe diese mal rausgenommen und mit VNC gestartet aber nur noch meinen USB Hub durchgereicht ... führt zum gleichen Fehler ...

gugus
Beiträge: 389
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: i915 entladen und laden (XEN VGA passthrough) Wheezy

Beitrag von gugus » 01.05.2013 12:11:31

@habakug
Da steht aber auch
No change is needed if PCI devices are only passed through to PV guests.
Es sind demnach nur HVM betroffen.
Schade dass da nicht ein Hinweis auf die betroffenen "certain Processors" ist.


@xeni
Wie sieht es denn mit der cfg aus

Code: Alles auswählen

kernel      = '/boot/vmlinuz-3.2.0-4-amd64'
ramdisk     = '/boot/initrd.img-3.2.0-4-amd64'

vcpus       = '2'
memory      = '8192'

#
#  Disk device(s).
#
root        = '/dev/xvda2 ro'
disk        = [
                  'file:/srv/domains/pluto/disk.img,xvda2,w',
                  'file:/srv/domains/pluto/swap.img,xvda1,w',
                  'phy:/dev/disk/by-uuid/005c1625-dc21-4546-a78e-68e01010b39d,xvdb1,w',
              ]


#
#   USB pass through
#
usb = 1
usbdevice = 'host:1307:0165'

pci = [ '00:14.0' ]

#
#  Hostname
#
name        = 'pluto'

#
#  Networking
#
vif         = [ 'ip=192.168.1.90 ,mac=00:16:3E:7F:53:25,bridge=xenbr0' ]

#
#  Behaviour
#
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'
gruss
gugus

xeni

Re: i915 entladen und laden (XEN VGA passthrough) Wheezy

Beitrag von xeni » 01.05.2013 12:29:05

Hi,

ich habe HVM .. soweit ich weiß, geht das durchreichen von Grakas auch nur so, jedenfalls war das vor ein paar Monaten nich so ;)

Config sieht so aus:

Code: Alles auswählen

kernel = "/usr/lib/xen-4.1/boot/hvmloader"
builder = "hvm"
name = "lubuntu"
memory = "4096"
vcpus = 4
vif=[ 'bridge=xenbr0,model=e1000,mac=00:11:3e:11:11:11' ]
disk = ['file:/vm/lubuntu/lubuntu-lts.img,ioemu:hda,w']
gfx_passthru=1
pci=['00:02.0','00:1d.0','00:1b.0']

pci_power_mgmt=1
pci_msitranslate=0
acpi=1
apic=1
xen_extended_power_mgmt=0
viridian=1
xen_platform_pci=1
monitor=1

shadow_memory=8
on_poweroff = 'destroy'
on_reboot = 'destroy'
on_crash = 'destroy'
Ich habe auch schon mal die ganzen zusätzlichen optionen pci_* und xen_platform_pci auskommentiert, leider keine Änderung ...

xeni

Re: i915 entladen und laden (XEN VGA passthrough) Wheezy

Beitrag von xeni » 01.05.2013 15:18:21

Hi,

scheint wohl ein Bug im Xen-hypervisor zu sein ...
http://xen.crc.id.au/bugs/view.php?id=5
http://lists.xen.org/archives/html/xen- ... 00036.html

Ich kann nur jeden empfehlen, das hypervisor Paket nicht upzugraden, der PCI passthrough benutzt :(
Bei mir leider das neuste: xen-hypervisor-4.1-amd64 4.1.4-3

xeni

[gelöst] i915 entladen und laden (XEN VGA passthrough) Wheez

Beitrag von xeni » 03.05.2013 12:51:04

Falls jemand das gleiche Problem hat:

Die Zeilen

Code: Alles auswählen

rc = xc.domain_irq_permission(domid =  fe_domid, pirq = dev.irq, allow_access = True)
if rc<0:
    raise VmError(('pci: failed to configure irq on device '+'%s - errno=%d')%(dev.name,rc))
---
in /usr/lib/xen-4.1/lib/python/xen/xend/server/pciif.py vorläufig auskommentieren, ist ein bug un den xen-utils.

Antworten