[libvirt] pci device passthrough: Failed to assign irq

Hi, I encounter a problem that the eth can't be up in the VM by using VT-d. I boot the VM using "virsh create vt_d.xml". The VM could recongize the NIC which was assigned .then I do in VM as follows: #cat /sys/class/net/eth0/operstate down #ifconfig eth0 up #cat /sys/class/net/eth0/operstate down #ficonfig eth 10.100.0.5 #cat /sys/class/net/eth0/operstate down I look into the qemu log file ,find that : LC_ALL=C PATH=/usr/local/sbin:/usr/ local/bin:/sbin:/bin:/usr/sbin:/usr/bin HOME=/ QEMU_AUDIO_DRV=none /usr/bin/kvm -S -M pc-0.12 -enable-kvm -m 512 -smp 1,sockets=1,cores=1,threads=1 -name vt_d_5 -uuid 05f608a3-f64f-2418-a90a-d611982c8336 -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/vt_d_5.monitor,server,nowait -mon chardev=monitor,mode=readline -rtc base=utc -boot c -drive file=/home/qinguan/exp/kvm_vtd/ubuntu_1.img,if=none,id=drive-virtio-disk0,boot=on,format=raw -device virtio-blk-pci,bus=pci.0,addr=0x3,drive=drive-virtio-disk0,id=virtio-disk0 -usb -device usb-mouse,id=input0 -vnc 127.0.0.1:0 -vga cirrus -device pci-assign,host=00:19.0,id=hostdev0,bus=pci.0,addr=0x4 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 Failed to assign irq for "hostdev0": Operation not permitted Perhaps you are assigning a device that shares an IRQ with another device? Failed to assign irq for "hostdev0": Operation not permitted Perhaps you are assigning a device that shares an IRQ with another device? Failed to assign irq for "hostdev0": Operation not permitted Perhaps you are assigning a device that shares an IRQ with another device? Failed to assign irq for "hostdev0": Operation not permitted Perhaps you are assigning a device that shares an IRQ with another device? Failed to assign irq for "hostdev0": Operation not permitted maybe the VM can't access to the network because of Failed to assign irg for "hostdev0"? in kern.log : May 1 12:40:07 Optiplex-780 kernel: [ 3172.784803] e1000e 0000:00:19.0: PCI INT A disabled May 1 12:40:07 Optiplex-780 kernel: [ 3172.784863] pci-stub 0000:00:19.0: claimed by stub May 1 12:40:07 Optiplex-780 kernel: [ 3173.103965] pci-stub 0000:00:19.0: PCI INT A -> GSI 21 (level, low) -> IRQ 21 May 1 12:40:07 Optiplex-780 kernel: [ 3173.204030] pci-stub 0000:00:19.0: restoring config space at offset 0x6 (was 0x1, writing 0xece1) May 1 12:40:07 Optiplex-780 kernel: [ 3173.204035] pci-stub 0000:00:19.0: restoring config space at offset 0x5 (was 0x0, writing 0xf7ad9000) May 1 12:40:07 Optiplex-780 kernel: [ 3173.204039] pci-stub 0000:00:19.0: restoring config space at offset 0x4 (was 0x0, writing 0xf7ae0000) May 1 12:40:07 Optiplex-780 kernel: [ 3173.204045] pci-stub 0000:00:19.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100103) May 1 12:40:07 Optiplex-780 kernel: [ 3173.435751] assign device 0:0:19.0 May 1 12:44:24 Optiplex-780 kernel: [ 3430.568526] pci-stub 0000:00:19.0: restoring config space at offset 0x6 (was 0x1, writing 0xece1) May 1 12:44:24 Optiplex-780 kernel: [ 3430.568532] pci-stub 0000:00:19.0: restoring config space at offset 0x5 (was 0x0, writing 0xf7ad9000) May 1 12:44:24 Optiplex-780 kernel: [ 3430.568537] pci-stub 0000:00:19.0: restoring config space at offset 0x4 (was 0x0, writing 0xf7ae0000) May 1 12:44:24 Optiplex-780 kernel: [ 3430.568543] pci-stub 0000:00:19.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100103) May 1 12:44:24 Optiplex-780 kernel: [ 3430.568561] pci-stub 0000:00:19.0: PCI INT A disabled root@Optiplex-780:/var/log/libvirt/qemu# cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 97 1 2 1 IO-APIC-edge timer 1: 2 0 0 0 IO-APIC-edge i8042 7: 0 0 0 0 IO-APIC-edge parport0 8: 1 0 0 0 IO-APIC-edge rtc0 9: 0 0 0 0 IO-APIC-fasteoi acpi 12: 1 2 1 0 IO-APIC-edge i8042 16: 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb2 17: 5822 1952 3614 2233 IO-APIC-fasteoi uhci_hcd:usb4, uhci_hcd:usb7 18: 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb8 22: 1 1 1 0 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5 23: 1461 1299 1153 912 IO-APIC-fasteoi ehci_hcd:usb3, uhci_hcd:usb6 24: 268579 0 0 0 HPET_MSI-edge hpet2 25: 0 286310 0 0 HPET_MSI-edge hpet3 26: 0 0 210675 0 HPET_MSI-edge hpet4 27: 0 0 0 256688 HPET_MSI-edge hpet5 29: 1 0 0 0 DMAR_MSI-edge dmar1 30: 0 0 0 0 DMAR_MSI-edge dmar0 31: 0 0 0 0 DMAR_MSI-edge dmar2 35: 0 0 0 1 PCI-MSI-edge eth1 36: 1456 916 1323 1657 PCI-MSI-edge eth1-rx-0 37: 1031 772 1459 895 PCI-MSI-edge eth1-rx-1 38: 958 965 785 470 PCI-MSI-edge eth1-rx-2 39: 1319 557 1007 714 PCI-MSI-edge eth1-rx-3 40: 892 864 417 1134 PCI-MSI-edge eth1-tx-0 41: 414 749 998 606 PCI-MSI-edge eth1-tx-1 42: 307 921 375 332 PCI-MSI-edge eth1-tx-2 43: 966 693 396 502 PCI-MSI-edge eth1-tx-3 54: 7109 5755 5683 5609 PCI-MSI-edge ahci 55: 74 105 73 84 PCI-MSI-edge hda_intel 56: 1446 927 1108 870 PCI-MSI-edge i915 NMI: 0 0 0 0 Non-maskable interrupts LOC: 740 725 703 677 Local timer interrupts SPU: 0 0 0 0 Spurious interrupts PMI: 0 0 0 0 Performance monitoring interrupts PND: 0 0 0 0 Performance pending work RES: 665 679 714 547 Rescheduling interrupts CAL: 5332 408 5619 539 Function call interrupts TLB: 1880 2843 1788 3202 TLB shootdowns TRM: 0 0 0 0 Thermal event interrupts THR: 0 0 0 0 Threshold APIC interrupts MCE: 0 0 0 0 Machine check exceptions MCP: 5 5 5 5 Machine check polls ERR: 3 MIS: 0 root@Optiplex-780:/var/log/libvirt/qemu# I search the similarly problems that sharing the irg but never find a answer , and now I have no idea. How to solve the problem ,can you help me ? thanks. best regards, qinguan vt_d.xml: <domain type='kvm'> <name>test</name> <description>just test using sriov!</description> <os> <type>hvm</type> <boot dev='hd'/> </os> <memory>524288</memory> <currentMemory>524288</ currentMemory> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <features><pae/><acpi/><apic/></features> <clock offset='utc'/> <devices> <input type='mouse' bus='usb'/> <disk type='file' device='disk'> <source file='/home/qinguan/exp/ubuntu_1.img'/> <target dev='hda' bus='virtio'/> </disk> <emulator>/usr/bin/kvm</emulator> <graphics type='vnc' port='-1'/> <hostdev mode='subsystem' type='pci' managed='yes'> <source> <address bus='0x0' slot='0x19' function='0x0'/> </source> </hostdev> </devices> </domain>

I also check the VM dmesg ,it shows that "Failed to initialize MSI interrupts. Falling back to legacy interrupts." more detail information please look into the picture attached. best regards, qinguan 2011/5/4 guan qin <qinguan0619@gmail.com>
Hi,
I encounter a problem that the eth can't be up in the VM by using VT-d. I boot the VM using "virsh create vt_d.xml". The VM could recongize the NIC which was assigned .then I do in VM as follows: #cat /sys/class/net/eth0/operstate down #ifconfig eth0 up #cat /sys/class/net/eth0/operstate down #ficonfig eth 10.100.0.5 #cat /sys/class/net/eth0/operstate down
I look into the qemu log file ,find that :
LC_ALL=C PATH=/usr/local/sbin:/usr/ local/bin:/sbin:/bin:/usr/sbin:/usr/bin HOME=/ QEMU_AUDIO_DRV=none /usr/bin/kvm -S -M pc-0.12 -enable-kvm -m 512 -smp 1,sockets=1,cores=1,threads=1 -name vt_d_5 -uuid 05f608a3-f64f-2418-a90a-d611982c8336 -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/vt_d_5.monitor,server,nowait -mon chardev=monitor,mode=readline -rtc base=utc -boot c -drive file=/home/qinguan/exp/kvm_vtd/ubuntu_1.img,if=none,id=drive-virtio-disk0,boot=on,format=raw -device virtio-blk-pci,bus=pci.0,addr=0x3,drive=drive-virtio-disk0,id=virtio-disk0 -usb -device usb-mouse,id=input0 -vnc 127.0.0.1:0 -vga cirrus -device pci-assign,host=00:19.0,id=hostdev0,bus=pci.0,addr=0x4 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 Failed to assign irq for "hostdev0": Operation not permitted Perhaps you are assigning a device that shares an IRQ with another device? Failed to assign irq for "hostdev0": Operation not permitted Perhaps you are assigning a device that shares an IRQ with another device? Failed to assign irq for "hostdev0": Operation not permitted Perhaps you are assigning a device that shares an IRQ with another device? Failed to assign irq for "hostdev0": Operation not permitted Perhaps you are assigning a device that shares an IRQ with another device? Failed to assign irq for "hostdev0": Operation not permitted
maybe the VM can't access to the network because of Failed to assign irg for "hostdev0"?
in kern.log : May 1 12:40:07 Optiplex-780 kernel: [ 3172.784803] e1000e 0000:00:19.0: PCI INT A disabled May 1 12:40:07 Optiplex-780 kernel: [ 3172.784863] pci-stub 0000:00:19.0: claimed by stub May 1 12:40:07 Optiplex-780 kernel: [ 3173.103965] pci-stub 0000:00:19.0: PCI INT A -> GSI 21 (level, low) -> IRQ 21 May 1 12:40:07 Optiplex-780 kernel: [ 3173.204030] pci-stub 0000:00:19.0: restoring config space at offset 0x6 (was 0x1, writing 0xece1) May 1 12:40:07 Optiplex-780 kernel: [ 3173.204035] pci-stub 0000:00:19.0: restoring config space at offset 0x5 (was 0x0, writing 0xf7ad9000) May 1 12:40:07 Optiplex-780 kernel: [ 3173.204039] pci-stub 0000:00:19.0: restoring config space at offset 0x4 (was 0x0, writing 0xf7ae0000) May 1 12:40:07 Optiplex-780 kernel: [ 3173.204045] pci-stub 0000:00:19.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100103) May 1 12:40:07 Optiplex-780 kernel: [ 3173.435751] assign device 0:0:19.0 May 1 12:44:24 Optiplex-780 kernel: [ 3430.568526] pci-stub 0000:00:19.0: restoring config space at offset 0x6 (was 0x1, writing 0xece1) May 1 12:44:24 Optiplex-780 kernel: [ 3430.568532] pci-stub 0000:00:19.0: restoring config space at offset 0x5 (was 0x0, writing 0xf7ad9000) May 1 12:44:24 Optiplex-780 kernel: [ 3430.568537] pci-stub 0000:00:19.0: restoring config space at offset 0x4 (was 0x0, writing 0xf7ae0000) May 1 12:44:24 Optiplex-780 kernel: [ 3430.568543] pci-stub 0000:00:19.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100103) May 1 12:44:24 Optiplex-780 kernel: [ 3430.568561] pci-stub 0000:00:19.0: PCI INT A disabled
root@Optiplex-780:/var/log/libvirt/qemu# cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 97 1 2 1 IO-APIC-edge timer 1: 2 0 0 0 IO-APIC-edge i8042 7: 0 0 0 0 IO-APIC-edge parport0 8: 1 0 0 0 IO-APIC-edge rtc0 9: 0 0 0 0 IO-APIC-fasteoi acpi 12: 1 2 1 0 IO-APIC-edge i8042 16: 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb2 17: 5822 1952 3614 2233 IO-APIC-fasteoi uhci_hcd:usb4, uhci_hcd:usb7 18: 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb8 22: 1 1 1 0 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5 23: 1461 1299 1153 912 IO-APIC-fasteoi ehci_hcd:usb3, uhci_hcd:usb6 24: 268579 0 0 0 HPET_MSI-edge hpet2 25: 0 286310 0 0 HPET_MSI-edge hpet3 26: 0 0 210675 0 HPET_MSI-edge hpet4 27: 0 0 0 256688 HPET_MSI-edge hpet5 29: 1 0 0 0 DMAR_MSI-edge dmar1 30: 0 0 0 0 DMAR_MSI-edge dmar0 31: 0 0 0 0 DMAR_MSI-edge dmar2 35: 0 0 0 1 PCI-MSI-edge eth1 36: 1456 916 1323 1657 PCI-MSI-edge eth1-rx-0 37: 1031 772 1459 895 PCI-MSI-edge eth1-rx-1 38: 958 965 785 470 PCI-MSI-edge eth1-rx-2 39: 1319 557 1007 714 PCI-MSI-edge eth1-rx-3 40: 892 864 417 1134 PCI-MSI-edge eth1-tx-0 41: 414 749 998 606 PCI-MSI-edge eth1-tx-1 42: 307 921 375 332 PCI-MSI-edge eth1-tx-2 43: 966 693 396 502 PCI-MSI-edge eth1-tx-3 54: 7109 5755 5683 5609 PCI-MSI-edge ahci 55: 74 105 73 84 PCI-MSI-edge hda_intel 56: 1446 927 1108 870 PCI-MSI-edge i915 NMI: 0 0 0 0 Non-maskable interrupts LOC: 740 725 703 677 Local timer interrupts SPU: 0 0 0 0 Spurious interrupts PMI: 0 0 0 0 Performance monitoring interrupts PND: 0 0 0 0 Performance pending work RES: 665 679 714 547 Rescheduling interrupts CAL: 5332 408 5619 539 Function call interrupts TLB: 1880 2843 1788 3202 TLB shootdowns TRM: 0 0 0 0 Thermal event interrupts THR: 0 0 0 0 Threshold APIC interrupts MCE: 0 0 0 0 Machine check exceptions MCP: 5 5 5 5 Machine check polls ERR: 3 MIS: 0 root@Optiplex-780:/var/log/libvirt/qemu#
I search the similarly problems that sharing the irg but never find a answer , and now I have no idea. How to solve the problem ,can you help me ? thanks.
best regards, qinguan
vt_d.xml: <domain type='kvm'> <name>test</name> <description>just test using sriov!</description> <os> <type>hvm</type> <boot dev='hd'/> </os> <memory>524288</memory> <currentMemory>524288</ currentMemory> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash>
<features><pae/><acpi/><apic/></features> <clock offset='utc'/> <devices> <input type='mouse' bus='usb'/> <disk type='file' device='disk'> <source file='/home/qinguan/exp/ubuntu_1.img'/> <target dev='hda' bus='virtio'/> </disk> <emulator>/usr/bin/kvm</emulator> <graphics type='vnc' port='-1'/> <hostdev mode='subsystem' type='pci' managed='yes'> <source> <address bus='0x0' slot='0x19' function='0x0'/> </source> </hostdev> </devices> </domain>
participants (1)
-
guan qin