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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to