PCI Passthrough - LENOVO TD340 VT-d enabled

ciclonite

New Member
Jul 10, 2014
3
0
1
Hi all,
I've installed the last version of proxmox on this server. I need to use the passthrough for a PCI parallel card with XP.
I've follow the instruction on wiki : https://pve.proxmox.com/wiki/Pci_passthrough but i've encountered a problem.
When i start the virtual machine i see this error:
kvm: -device pci-assign,host=0b:05.0,id=hostpci0,bus=pci.0,addr=0x10: Failed to assign irq for "hostpci0": Input/output error
kvm: -device pci-assign,host=0b:05.0,id=hostpci0,bus=pci.0,addr=0x10: Perhaps you are assigning a device that shares an IRQ with another device?
kvm: -device pci-assign,host=0b:05.0,id=hostpci0,bus=pci.0,addr=0x10: Device initialization failed.
kvm: -device pci-assign,host=0b:05.0,id=hostpci0,bus=pci.0,addr=0x10: Device 'kvm-pci-assign' could not be initialized
TASK ERROR: start failed: command '/usr/bin/kvm -id 100 -chardev 'socket,id=qmp,path=/var/run/qemu-server/100.qmp,server,nowait' -mon 'chardev=qmp,mode=control' -vnc unix:/var/run/qemu-server/100.vnc,x509,password -pidfile /var/run/qemu-server/100.pid -daemonize -name Test -smp 'sockets=1,cores=1' -nodefaults -boot 'menu=on' -vga cirrus -cpu kvm64,+lahf_lm,+x2apic,+sep -k it -m 512 -cpuunits 1000 -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' -device 'pci-assign,host=0b:05.0,id=hostpci0,bus=pci.0,addr=0x10' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' -drive 'if=none,id=drive-ide2,media=cdrom,aio=native' -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' -drive 'file=/var/lib/vz/images/100/vm-100-disk-1.vmdk,if=none,id=drive-ide0,format=vmdk,aio=native,cache=none' -device 'ide-hd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0,bootindex=100' -netdev 'type=tap,id=net0,ifname=tap100i0,script=/var/lib/qemu-server/pve-bridge' -device 'e1000,mac=32:8A:1A:73:95:1F,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' -rtc 'driftfix=slew,base=localtime'' failed: exit code 1
I've tried all the solution founded in this forum with no luck.
Any help will be greatly appreciated.
 
You'll have to provide more info if you want some feedback. I don't know the Lenovo hardware and if this system really supports vt-d.

At least provide output of:
Code:
$dmesg | grep -e DMAR -e IOMMU
$lspci -vv #(only the part of the device which you want to passthrough)
$lspci -vv  | grep IRQ
 
Hi,
Thanks for reply! These are the information that you have requested:

Code:
dmesg | grep -e DMAR -e IOMMU
ACPI: DMAR 000000007b81b950 000B4 (v01 A M I   OEMDMAR 00000001 INTL 00000001)
Intel-IOMMU: enabled
dmar: IOMMU 0: reg_base_addr fbffc000 ver 1:0 cap d2078c106f0466 ecap f020de
IOMMU 0xfbffc000: using Queued invalidation
IOMMU: Setting RMRR:
IOMMU: Setting identity map for device 0000:00:1d.0 [0x7f265000 - 0x7f274000]
IOMMU: Setting identity map for device 0000:00:1a.0 [0x7f265000 - 0x7f274000]
IOMMU: Prepare 0-16MiB unity mapping for LPC
IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0x1000000]

lspci -vv
0b:05.0 Parallel controller: Timedia Technology Co Ltd SUN1888 (Dual IEEE1284 parallel port) (rev 01) (prog-if 02 [ECP])
        Subsystem: Timedia Technology Co Ltd PAR4008A
        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 255
        Region 0: I/O ports at a010 [size=8]
        Region 1: I/O ports at a000 [size=8]
        Kernel driver in use: pci-stub

lspci -vv  | grep IRQ
        Interrupt: pin A routed to IRQ 0
        Interrupt: pin A routed to IRQ 11
        Interrupt: pin B routed to IRQ 10
        Interrupt: pin A routed to IRQ 16
        Interrupt: pin A routed to IRQ 23
        Interrupt: pin B routed to IRQ 65
        Interrupt: pin C routed to IRQ 18
        Interrupt: pin C routed to IRQ 11
        Interrupt: pin A routed to IRQ 27
        Interrupt: pin A routed to IRQ 16
        Interrupt: pin A routed to IRQ 16
        Interrupt: pin A routed to IRQ 10
        Interrupt: pin A routed to IRQ 255

Thanks in advice,
Giovanni
 
According to your output of lspci, you tried already to passthrough the pci device (pci-stub driver is in use). Maybe you can also post the output of both lspci commands after a fresh system restart without trying to passthrough the pci device.

I can only try to give some hints because I also don't have alot of knowlege about IRQ handling. But the device you are trying to passthrough is assigned to IRQ 255. It seems that IRQ 255 is assigned if the device doesn't need an IRQ or no IRQ is available (this is a article which gives some basic information about IRQ 255, but I don't know if this report is still valid). Maybe you can check your bios for settings like "PnP OS" or something related to IRQ handling. Also as mentioned above, please post output of lspci commands after fresh reboot (without trying to passthrough any pci device).

You can also try kernel 3.10 and pci-vfio. But you'll have to build the packages on your own or wait for the pve-test repo to be updated.
 
According to your output of lspci, you tried already to passthrough the pci device (pci-stub driver is in use). Maybe you can also post the output of both lspci commands after a fresh system restart without trying to passthrough the pci device.

I can only try to give some hints because I also don't have alot of knowlege about IRQ handling. But the device you are trying to passthrough is assigned to IRQ 255. It seems that IRQ 255 is assigned if the device doesn't need an IRQ or no IRQ is available (this is a article which gives some basic information about IRQ 255, but I don't know if this report is still valid). Maybe you can check your bios for settings like "PnP OS" or something related to IRQ handling. Also as mentioned above, please post output of lspci commands after fresh reboot (without trying to passthrough any pci device).

You can also try kernel 3.10 and pci-vfio. But you'll have to build the packages on your own or wait for the pve-test repo to be updated.

Hi,
Thanks for reply.
Here the post after a fresh reboot and without the passthrough enabled.

Code:
dmesg | grep -e DMAR -e IOMMU
ACPI: DMAR 000000007b81b950 000B4 (v01 A M I   OEMDMAR 00000001 INTL 00000001)
Intel-IOMMU: enabled
dmar: IOMMU 0: reg_base_addr fbffc000 ver 1:0 cap d2078c106f0466 ecap f020de
IOMMU 0xfbffc000: using Queued invalidation
IOMMU: Setting RMRR:
IOMMU: Setting identity map for device 0000:00:1d.0 [0x7f265000 - 0x7f274000]
IOMMU: Setting identity map for device 0000:00:1a.0 [0x7f265000 - 0x7f274000]
IOMMU: Prepare 0-16MiB unity mapping for LPC
IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0x1000000]

0b:05.0 Parallel controller: Timedia Technology Co Ltd SUN1888 (Dual IEEE1284 parallel port) (rev 01) (prog-if 02 [ECP])
        Subsystem: Timedia Technology Co Ltd PAR4008A
        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 255
        Region 0: I/O ports at a010 [size=8]
        Region 1: I/O ports at a000 [size=8]
        Kernel driver in use: parport_pc

 lspci -vv  | grep IRQ
        Interrupt: pin A routed to IRQ 0
        Interrupt: pin A routed to IRQ 11
        Interrupt: pin B routed to IRQ 10
        Interrupt: pin A routed to IRQ 16
        Interrupt: pin A routed to IRQ 23
        Interrupt: pin B routed to IRQ 65
        Interrupt: pin C routed to IRQ 18
        Interrupt: pin C routed to IRQ 11
        Interrupt: pin A routed to IRQ 27
        Interrupt: pin A routed to IRQ 16
        Interrupt: pin A routed to IRQ 16
        Interrupt: pin A routed to IRQ 10
        Interrupt: pin A routed to IRQ 255

I want to try another parallel card (for example pcie).
any news will be reported here.
Thanks a lot.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!