pci-stub routes a pci card from a non shared to a shared IRQ when the VM is started

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I want to assign a pci card within a VM. It's a parallel card.

>lspci -vv

08:08.0 Parallel controller: Timedia Technology Co Ltd SUN1888 (Dual IEEE1284
parallel port) (rev 01) (prog-if 02 [ECP])
	Subsystem: Timedia Technology Co Ltd PAR4008A
	Physical Slot: 3
	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 9
	Region 0: I/O ports at 3008 [size=8]
	Region 1: I/O ports at 3000 [size=8]
	Kernel modules: parport_pc

>lspci | grep IRQ

	Interrupt: pin A routed to IRQ 11
	Interrupt: pin A routed to IRQ 19
	Interrupt: pin B routed to IRQ 18
	Interrupt: pin C routed to IRQ 18
	Interrupt: pin C routed to IRQ 18
	Interrupt: pin A routed to IRQ 23
	Interrupt: pin B routed to IRQ 22
	Interrupt: pin C routed to IRQ 21
	Interrupt: pin A routed to IRQ 23
	Interrupt: pin A routed to IRQ 75
	Interrupt: pin B routed to IRQ 11
	Interrupt: pin A routed to IRQ 16
	Interrupt: pin A routed to IRQ 11
	Interrupt: pin A routed to IRQ 9


Blacklist - /etc/modprobe.d/blacklist.conf - so the parport isn't loaded on the
base system which is runing kvm

# Parallel Port drivers
blacklist parport
blacklist parport_pc
blacklist ppdev
blacklist lp

Now starting the Win7 VM with virt-manager - VM is starting but the pci card is
not visible in the VM (little side note - a Ubuntu VM found the pci
card/parallel port and it's possible to print on a connected printer)

All VMs (Win and Ubuntu) produce the following errors several times in the log
files:
Failed to assign irq for "hostdev0": Input/output error
Perhaps you are assigning a device that shares an IRQ with another device?

After the start of a VM the pci card get's a new shared IRQ:

>lspci -vv

08:08.0 Parallel controller: Timedia Technology Co Ltd SUN1888 (Dual IEEE1284
parallel port) (rev 01) (prog-if 02 [ECP])
	Subsystem: Timedia Technology Co Ltd PAR4008A
	Physical Slot: 3
	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 18
	Region 0: I/O ports at 3008 [size=8]
	Region 1: I/O ports at 3000 [size=8]
	Kernel driver in use: pci-stub
	Kernel modules: parport_pc

>lspci | grep IRQ

	Interrupt: pin A routed to IRQ 11
	Interrupt: pin A routed to IRQ 19
	Interrupt: pin B routed to IRQ 18
	Interrupt: pin C routed to IRQ 18
	Interrupt: pin C routed to IRQ 18
	Interrupt: pin A routed to IRQ 23
	Interrupt: pin B routed to IRQ 22
	Interrupt: pin C routed to IRQ 21
	Interrupt: pin A routed to IRQ 23
	Interrupt: pin A routed to IRQ 75
	Interrupt: pin B routed to IRQ 11
	Interrupt: pin A routed to IRQ 16
	Interrupt: pin A routed to IRQ 11
	Interrupt: pin A routed to IRQ 18

dmesg after the Win VM is started (copied only the pci card related things)
>dmesg

[  573.538537] pci-stub 0000:08:08.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
[  573.754049] pci-stub 0000:08:08.0: restoring config space at offset 0xf (was
0x1ff, writing 0x109)
[  573.754068] pci-stub 0000:08:08.0: restoring config space at offset 0x5 (was
0x1, writing 0x3001)
[  573.754073] pci-stub 0000:08:08.0: restoring config space at offset 0x4 (was
0x1, writing 0x3009)
[  573.754082] pci-stub 0000:08:08.0: restoring config space at offset 0x1 (was
0x2800080, writing 0x28001c1)
[  574.622891] assign device 0:8:8.0
[  583.340568] vnet0: no IPv6 routers present
[  615.177956] deassign device 0:8:8.0
[  615.395652] pci-stub 0000:08:08.0: restoring config space at offset 0xf (was
0x1ff, writing 0x109)
[  615.395670] pci-stub 0000:08:08.0: restoring config space at offset 0x5 (was
0x1, writing 0x3001)
[  615.395676] pci-stub 0000:08:08.0: restoring config space at offset 0x4 (was
0x1, writing 0x3009)
[  615.395684] pci-stub 0000:08:08.0: restoring config space at offset 0x1 (was
0x2800080, writing 0x28001c0)
[  615.395699] pci-stub 0000:08:08.0: PCI INT A disabled

dmesg after the Ubuntu VM with working printer is started (copied only the pci
card related things)
>dmesg
[   40.640650] pci-stub 0000:08:08.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
[   40.855316] pci-stub 0000:08:08.0: restoring config space at offset 0xf (was
0x1ff, writing 0x109)
[   40.855332] pci-stub 0000:08:08.0: restoring config space at offset 0x5 (was
0x1, writing 0x3001)
[   40.855337] pci-stub 0000:08:08.0: restoring config space at offset 0x4 (was
0x1, writing 0x3009)
[   40.855345] pci-stub 0000:08:08.0: restoring config space at offset 0x1 (was
0x2800080, writing 0x28001c1)
[   41.089673] assign device 0:8:8.0

and after the vm is closed dsmesg displays this:

[  351.823889] pci-stub 0000:08:08.0: restoring config space at offset 0xf (was
0x1ff, writing 0x109)
[  351.823910] pci-stub 0000:08:08.0: restoring config space at offset 0x5 (was
0x1, writing 0x3001)
[  351.823917] pci-stub 0000:08:08.0: restoring config space at offset 0x4 (was
0x1, writing 0x3009)
[  351.823926] pci-stub 0000:08:08.0: restoring config space at offset 0x1 (was
0x2800080, writing 0x28001c1)
[  351.823945] pci-stub 0000:08:08.0: PCI INT A disabled

Why does the Win VM deassign the pci card so fast (during win boot) and how can
I change the behavior of pci-stub to route the pci card to a shared IRQ even if
the card is on a non shared IRQ after boot.

Thank you for your help
Thomas










--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux