[GELÖST] KVM: PCI-ID durchreichen

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
Nelson
Beiträge: 233
Registriert: 25.05.2008 10:40:28
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stuttgart

[GELÖST] KVM: PCI-ID durchreichen

Beitrag von Nelson » 14.03.2010 18:20:17

Hallo,

ich habe Debian Squezze zusammen mit "qemu-kvm 0.11.1+dfsg-1", "libvirt-bin 0.7.6-2" und "virt-manager 0.8.3-2" installiert. Auf demm Hostsystem steckt eine AVM GmbH Fritz!PCI v2.0 ISDN-Karte, die ich gerne an einen KVM-Gast durchreichen will. Das geht laut http://www.linux-magazin.de/Heft-Abo/Au ... (offset)/2 nur, wenn die Karte nicht vom Host verwendet wird.

Code: Alles auswählen

lspci -vv  | grep IRQ
        Interrupt: pin A routed to IRQ 22
        Interrupt: pin A routed to IRQ 16
        Interrupt: pin A routed to IRQ 16
        Interrupt: pin B routed to IRQ 17
        Interrupt: pin A routed to IRQ 18
        Interrupt: pin A routed to IRQ 18
        Interrupt: pin B routed to IRQ 19
        Interrupt: pin A routed to IRQ 16
        Interrupt: pin ? routed to IRQ 16
        Interrupt: pin C routed to IRQ 18
        Interrupt: pin A routed to IRQ 10
        Interrupt: pin A routed to IRQ 18
        Interrupt: pin A routed to IRQ 20
        Interrupt: pin A routed to IRQ 21

Code: Alles auswählen

lspci -vv
03:06.0 Network controller: AVM GmbH Fritz!PCI v2.0 ISDN (rev 02)
        Subsystem: AVM GmbH Fritz!PCI v2.0 ISDN
        Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Interrupt: pin A routed to IRQ 21
        Region 0: Memory at fbfff800 (32-bit, non-prefetchable) [size=32]
        Region 1: I/O ports at ec00 [size=32]
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1- D2+ AuxCurrent=55mA PME(D0-,D1-,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME+
        Kernel driver in use: fcpci

Code: Alles auswählen

lsmod | grep fcpci
liefert eine leere Liste.
Wenn ich aber über den Virt-Manager die PCI-ID an die Gastmaschine durchreichen will, erhalte ich die Meldung

Code: Alles auswählen

Failed to assign irq for "03:06.0": Operation not permitted
Perhaps you are assigning a device that shares an IRQ with another device?
Irgendwie glaube ich, das hängt mit "Kernel driver in use: fcpci" zusammen, obwohl "fcpci" nicht geladen ist. Wie bekomme ich die AVM-Karte so jungfräulich hin, dass ich sie an den KVM-Gast durchreichen kann?

Viele Grüße

Nelson
Zuletzt geändert von Nelson am 08.06.2010 18:01:28, insgesamt 1-mal geändert.
Openness prevails!
LINUX
Where open minds meet!

Benutzeravatar
Nelson
Beiträge: 233
Registriert: 25.05.2008 10:40:28
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stuttgart

Re: KVM: PCI-ID durchreichen

Beitrag von Nelson » 14.03.2010 19:25:30

Also das hier habe ich bereits hinbekommen:
Nelson hat geschrieben:

Code: Alles auswählen

lspci -vv
03:06.0 Network controller: AVM GmbH Fritz!PCI v2.0 ISDN (rev 02)
        Subsystem: AVM GmbH Fritz!PCI v2.0 ISDN
        Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Interrupt: pin A routed to IRQ 21
        Region 0: Memory at fbfff800 (32-bit, non-prefetchable) [size=32]
        Region 1: I/O ports at ec00 [size=32]
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1- D2+ AuxCurrent=55mA PME(D0-,D1-,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME+
        Kernel driver in use: fcpci
Dazu habe ich unter "/lib/modules/2.6.32-trunk-amd64/kernel/drivers/isdn/hardware/mISDN" die beiden Dateien "hfcpci.ko" und "avmfritz.ko" aus dem Verzeichnis verschoben.
Die AVM-Karte belegt immer noch den IRQ 21, aber ich sie nachwievor noch nicht durchreichen:

Code: Alles auswählen

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/engine.py", line 589, in run_domain
    vm.startup()
  File "/usr/share/virt-manager/virtManager/domain.py", line 1208, in startup
    self._backend.create()
  File "/usr/lib/python2.5/site-packages/libvirt.py", line 300, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: internal error unable to start guest: char device redirected to /dev/pts/5
Failed to assign irq for "03:06.0": Operation not permitted
Perhaps you are assigning a device that shares an IRQ with another device?
Failed to unmap assigned device region: Invalid argument
Failed to initialize assigned device host=03:06.0
Hat jemand eine Idee, wie man das bewerkstelligt bekommt?

Grüße

Nelson
Openness prevails!
LINUX
Where open minds meet!

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

Re: KVM: PCI-ID durchreichen

Beitrag von DynaBlaster » 21.03.2010 09:12:00

Ich habe mich über das Wochenende auch mit KVM und dem "Durchreichen" von PCI-Devices beschäftigt. Mittlwereile bin ich zu dem Schluss gekommen, dass mein Mainboard bzw. dessen Chipstatz schlicht und ergreifend kein VT-d unterstützt. Auf der offiziellen Homepage des KVM-Projekts findet man das hier:

http://www.linux-kvm.org/page/How_to_as ... T-d_in_KVM

Ich habe daraufhin den Kernel angepasst und mit den Optionen für das IRQ-Sharing herumgespielt. Das hat aber alles nichts gebracht - PCI-Devices lassen sich nicht an den Gast durchreichen.
Im Libvirt-Log der entsprechenden VM taucht das hier auf:

Code: Alles auswählen

No IOMMU found.  Unable to assign device "hostdev0"
Failed to deassign device "hostdev0" : Invalid argument
Error initializing device pci-assign
Der Link auf der Website ist auch interessant: http://wiki.xensource.com/xenwiki/VTdHowTo

Unter XEN konnte ich allerdings PCI-Devices durchreichen (gleiche Hardware) - kann aber durchaus sein, dass XEN das nicht über die VT-d-Technologie bewerkstelligt bzw. es eine Alternative dazu gibt.

Benutzeravatar
Nelson
Beiträge: 233
Registriert: 25.05.2008 10:40:28
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Stuttgart

Re: KVM: PCI-ID durchreichen

Beitrag von Nelson » 08.06.2010 18:01:02

Also das Problem mit der AVM-Karte auf dem IRQ 21, die nicht freigegeben werden konnte, habe ich insoweit lösen können. In den neueren Kerneln ist ein Modul "avmfritz" eingebaut und wird auch geladen, wenn eine passive ISDN-Karte eindeckt wird. Dadurch ist die Karte erstmal °"shared", wie im vorliegenden Fall.
Lösung bringt ein Eintrag in die /etc/modprobe.d/blacklist.conf mit

Code: Alles auswählen

blacklist avmfritz
blacklist mISDN_core
Dann tritt nach einem Reboot das Problem nicht mehr auf und lspci -vv liefert:

Code: Alles auswählen

03:06.0 Network controller: AVM GmbH Fritz!PCI v2.0 ISDN (rev 02)
        Subsystem: AVM GmbH Fritz!PCI v2.0 ISDN
        Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Interrupt: pin A routed to IRQ 10
        Region 0: Memory at fbfff800 (32-bit, non-prefetchable) [size=32]
        Region 1: I/O ports at ec00 [size=32]
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1- D2+ AuxCurrent=55mA PME(D0-,D1-,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Jetzt hoffe ich, dass sich die Karte durchreichen läßt.

Grüße

Nelson
Openness prevails!
LINUX
Where open minds meet!

Antworten