Bug 590641 - "unable to allocate interrupt" error is seen in guest after passthough a VF to guest.
"unable to allocate interrupt" error is seen in guest after passthough a VF t...
Status: CLOSED CURRENTRELEASE
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: qemu-kvm (Show other bugs)
6.0
All Linux
low Severity medium
: rc
: ---
Assigned To: Don Dutile
Virtualization Bugs
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2010-05-10 07:51 EDT by Johnny Liu
Modified: 2013-01-09 17:34 EST (History)
9 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2010-07-07 05:41:13 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Johnny Liu 2010-05-10 07:51:15 EDT
Description of problem:
During SRIOV testing, after passthough a VF to guest, "unable to allocate interrupt" error is seen in dmesg output.

Version-Release number of selected component (if applicable):
kernel-2.6.32-24.el6.x86_64
libvirt-0.8.1-2.el6.x86_64
qemu-kvm-0.12.1.2-2.51.el6.x86_64

How reproducible:
Always

Steps to Reproduce:
1. Trun on intel_iommu for kernel parameter, and in host, check it:
# dmesg|grep -i iommu
Command line: ro root=UUID=195c500b-a745-4d6d-9462-8be4845849c6 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet nmi_watchdog=0 intel_iommu=on
Kernel command line: ro root=UUID=195c500b-a745-4d6d-9462-8be4845849c6 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=256M@0M rhgb quiet nmi_watchdog=0 intel_iommu=on
Intel-IOMMU: enabled
IOMMU e4100000: ver 1:0 cap c90780106f0462 ecap f02076
IOMMU fed90000: ver 1:0 cap c90780106f0462 ecap f02076
IOMMU 0xe4100000: using Queued invalidation
IOMMU 0xfed90000: using Queued invalidation
IOMMU: Setting RMRR:
IOMMU: Setting identity map for device 0000:00:1a.2 [0xcefd7000 - 0xcefd8000]
IOMMU: Setting identity map for device 0000:00:1a.1 [0xcefd6000 - 0xcefd7000]
IOMMU: Setting identity map for device 0000:00:1a.0 [0xcefd5000 - 0xcefd6000]
IOMMU: Setting identity map for device 0000:00:1d.2 [0xcefd4000 - 0xcefd5000]
IOMMU: Setting identity map for device 0000:00:1d.1 [0xcefd3000 - 0xcefd4000]
IOMMU: Setting identity map for device 0000:00:1d.0 [0xcefd2000 - 0xcefd3000]
IOMMU: Setting identity map for device 0000:00:1a.7 [0xcefd1000 - 0xcefd2000]
IOMMU: Setting identity map for device 0000:00:1d.7 [0xcefd0000 - 0xcefd1000]
IOMMU: Prepare 0-16MiB unity mapping for LPC
IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0x1000000]

2. unload igb module, and reload igbvf module.
( I use the intel 82576 network interface card which supports the SR-IOV function )
# modprobe -r igb
# modprobe igb max_vfs=7


3. Add this VF xml info to VM config xml to passthrough a VF to guest:
    <hostdev mode='subsystem' type='pci' managed='no'>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x10' function='0x0'/>
      </source>
    </hostdev>

4. Detach and reset this VF device from host:
# virsh nodedev-dettach pci_0000_03_10_0
# virsh nodedev-reset pci_0000_03_10_0

5. Start the guest, and log into it to check

Actual results:
The VF is seen in guest, but failed to load VF driver:
# lspci |grep -i 82576
00:05.0 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)

During booting up, the following error is seen:
# dmesg|grep igbvf
igbvf 0000:00:05.0: Failed to initialize MSI-X interrupts.
igbvf 0000:00:05.0: Intel(R) 82576 Virtual Function
igbvf 0000:00:05.0: Address: e2:e0:c1:31:6e:ba
igbvf 0000:00:05.0: MAC: 1
igbvf 0000:00:05.0: Unable to allocate interrupt, Error: -1
igbvf 0000:00:05.0: Unable to allocate interrupt, Error: -1
 
Try to restart network, the error still is seen:
# service network restart
...
Bringing up interface eth1:  
Determining IP information for eth1... igbvf 0000:00:05.0: Unable to allocate interrupt, Error: -1
failed; no link present.  Check cable?
                                                           [FAILED]


Expected results:
VF should work fine in guest.

Additional info:
Log file:
LC_ALL=C PATH=/sbin:/usr/sbin:/bin:/usr/bin QEMU_AUDIO_DRV=none /usr/libexec/qemu-kvm -S -M rhel6.0.0 -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -name demo -uuid 5aa734be-9211-c3d8-8aa8-4b89b19a5da8 -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/demo.monitor,server,nowait -mon chardev=monitor,mode=control -rtc base=utc -boot c -drive file=/var/lib/libvirt/images/demo.img,if=none,id=drive-ide0-0-0,boot=on -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -netdev tap,fd=22,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:59:5f:86,bus=pci.0,addr=0x4 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -vnc 127.0.0.1:0 -k en-us -vga cirrus -device pci-assign,host=03:10.0,id=hostdev0,bus=pci.0,addr=0x5 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 
char device redirected to /dev/pts/1
Comment 2 RHEL Product and Program Management 2010-05-10 09:24:03 EDT
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux major release.  Product Management has requested further
review of this request by Red Hat Engineering, for potential inclusion in a Red
Hat Enterprise Linux Major release.  This request is not yet committed for
inclusion.
Comment 3 Daniel Berrange 2010-05-11 06:57:07 EDT
The logs show that device assignment completely successfully from libvirt's POV. Suspect any bug is in the KVM side of things.
Comment 4 Don Dutile 2010-07-06 13:31:20 EDT
Please re-test w/latest (beta2) kernel & qemu-kvm pkg's.
This looks like a failure that was fixed recently.
Comment 5 dyuan 2010-07-06 21:42:13 EDT
re-test with qemu-kvm-0.12.1.2-2.90.el6 and kernel-2.6.32-42.el6, this failure is fixed.

Note You need to log in before you can comment on or make changes to this bug.