Hi,
I'm trying to passthrough legacy PCI ISDN controller to a KVM based
virtual machine:
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x04' slot='0x00'
function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x06'
function='0x0'/>
</hostdev>
This only worked once. (The device disappeared from the lspci autoput
the host and was listed on the guest.)
After shutting down the virtual maschine it refused to start again. Even
rebooting the host did not help:
Failed to assign irq for "hostdev0": Input/output error
Perhaps you are assigning a device that shares an IRQ with another device?
lspci -t
-[0000:00]-+-00.0
+-19.0
+-1a.0
+-1c.0-[01]----00.0
+-1c.4-[02]----00.0
+-1c.5-[03]----00.0
+-1d.0
+-1e.0-[04]----00.0
+-1f.0
+-1f.2
\-1f.3
lspci -vv |grep IRQ
Interrupt: pin A routed to IRQ 44
Interrupt: pin B routed to IRQ 22
Interrupt: pin A routed to IRQ 20
Interrupt: pin B routed to IRQ 48
Interrupt: pin D routed to IRQ 22
Interrupt: pin A routed to IRQ 16
Interrupt: pin A routed to IRQ 16
Interrupt: pin A routed to IRQ 3
Interrupt: pin A routed to IRQ 16
The last line "pin A routed to IRQ 16" belongs to my device:
04:00.0 Communication controller: Tiger Jet Network Inc. Tiger100APC
ISDN chipset
Subsystem: Device 0054:0001
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 16
Region 0: I/O ports at 2000 [size=256]
Region 1: Memory at e2600000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [40] Power Management version 1
Flags: PMEClk- DSI+ D1- D2+ AuxCurrent=0mA
PME(D0+,D1-,D2+,D3hot+,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Note: After rebooting the host lscpi claims that "pin A is routed to
interrupt 255" for that device. The invocation to virsh start <vm>
changes that to 16.
Nearly every document about PCI passthrough claims that unshared
interrupts are required. But how can this be achieved? (My BIOS supports
interrupt remapping for VT-d. This setting is enabled.)
Thanks in advance
Michael
--
EDV-Serviceteam Annika & Michael Hierweck GbR
Egerstraße 53, 44225 Dortmund (Germany)
http://www.edv-serviceteam.net