Bug 606570

Summary: NIC passthrough failed: No IOMMU found. Unable to assign device "hostdev0"
Product: Red Hat Enterprise Linux 6 Reporter: Nan Zhang <nzhang>
Component: libvirtAssignee: Eric Blake <eblake>
Status: CLOSED NOTABUG QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: low    
Version: 6.0CC: clalance, crobinso, dallan, ddutile, juzhang, llim, notting, xen-maint
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-03-31 20:13:09 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 621776    
Attachments:
Description Flags
dmesg log none

Description Nan Zhang 2010-06-22 01:24:04 UTC
Description of problem:
NIC passthrough failed during new VM installing in virt-manager.

Version-Release number of selected component (if applicable):
virt-manager-0.8.4-4.el6.noarch

How reproducible:
always

Steps to Reproduce:
1. Install a new VM and passthrough NIC during install wizard.
2.
3.
  
Actual results:
Unable to complete install '<class 'libvirt.libvirtError'> internal error
Process exited while reading console log output: char device redirected to
/dev/pts/1
No IOMMU found.  Unable to assign device "hostdev0"
Failed to deassign device "hostdev0" : Invalid argument
qemu-kvm: -device
pci-assign,host=02:00.0,id=hostdev0,configfd=23,bus=pci.0,addr=0x7: Device
'pci-assign' could not be initialized

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/create.py", line 1559, in
do_install
    dom = guest.start_install(False, meter = meter)
  File "/usr/lib/python2.6/site-packages/virtinst/Guest.py", line 972, in
start_install
    return self._do_install(consolecb, meter, removeOld, wait)
  File "/usr/lib/python2.6/site-packages/virtinst/Guest.py", line 1037, in
_do_install
    "install")
  File "/usr/lib/python2.6/site-packages/virtinst/Guest.py", line 1008, in
_create_guest
    dom = self.conn.createLinux(start_xml, 0)
  File "/usr/lib64/python2.6/site-packages/libvirt.py", line 1270, in
createLinux
    if ret is None:raise libvirtError('virDomainCreateLinux() failed',
conn=self)
libvirtError: internal error Process exited while reading console log output:
char device redirected to /dev/pts/1
No IOMMU found.  Unable to assign device "hostdev0"
Failed to deassign device "hostdev0" : Invalid argument
qemu-kvm: -device
pci-assign,host=02:00.0,id=hostdev0,configfd=23,bus=pci.0,addr=0x7: Device
'pci-assign' could not be initialized

'    

Expected results:
NIC can be passthrough to guest in new vm wizard.

Additional info:

Comment 2 RHEL Program Management 2010-06-22 01:43:21 UTC
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 Chris Lalancette 2010-06-22 12:58:44 UTC
This line:

No IOMMU found.  Unable to assign device "hostdev0"

seems to suggest that your hardware doesn't have an IOMMU, or it is not configured correctly.  What kind of hardware (chipset, in particular), do you have?  Also, what is the output from "cat /proc/cmdline" on the host?  Finally, can you give us the output from "dmesg"?

Thanks,
Chris Lalancette

Comment 4 Bill Nottingham 2010-06-22 16:55:46 UTC
Would we want to disable the UI feature if the IOMMU isn't there?

Comment 5 Nan Zhang 2010-06-23 10:47:14 UTC
Created attachment 426228 [details]
dmesg log

I've set VT-d with ON in bios.

# lspci
00:00.0 Host bridge: Intel Corporation 82Q35 Express DRAM Controller (rev 02)
00:01.0 PCI bridge: Intel Corporation 82Q35 Express PCI Express Root Port (rev 02)
00:03.0 Communication controller: Intel Corporation 82Q35 Express MEI Controller (rev 02)
00:03.2 IDE interface: Intel Corporation 82Q35 Express PT IDER Controller (rev 02)
00:03.3 Serial controller: Intel Corporation 82Q35 Express Serial KT Controller (rev 02)
00:19.0 Ethernet controller: Intel Corporation 82566DM-2 Gigabit Network Connection (rev 02)
00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 02)
00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 02)
00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 02)
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 92)
00:1f.0 ISA bridge: Intel Corporation 82801IO (ICH9DO) LPC Interface Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA AHCI Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 02)
01:00.0 VGA compatible controller: ATI Technologies Inc RV610 video device [Radeon HD 2400 PRO]
02:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (Copper) (rev 06)

# cat /proc/cmdline
ro root=UUID=d6748640-f848-40fd-a1c3-c57d91fbe84f 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=129M@0M rhgb quiet

Comment 6 Cole Robinson 2010-06-25 17:45:14 UTC
(In reply to comment #4)
> Would we want to disable the UI feature if the IOMMU isn't there?    

Possibly, we would need that information exported by libvirt though. Definitely would be useful, we could at least show a warning 'Hey, your machine probably doesn't support this'. No idea what detecting it would entail

Anyway, moving to libvirt, which is closer to the source of the issue. Chris, Neil provided the info you asked for in comment #5

Comment 7 Dave Allan 2010-06-28 15:54:34 UTC
This BZ is really a request for more info from libvirt, so moving to 6.1

Comment 9 Suzanne Logcher 2011-03-28 21:09:14 UTC
Since RHEL 6.1 External Beta has begun, and this bug remains 
unresolved, it has been rejected as it is not proposed as an 
exception or blocker.

Red Hat invites you to ask your support representative to 
propose this request, if appropriate and relevant, in the 
next release of Red Hat Enterprise Linux.

Comment 10 Don Dutile (Red Hat) 2011-03-31 20:13:09 UTC
First, 'intel_iommu=on' has to be added to the kernel cmdline.
Secondly, libvirt gives a message what the error is: no IOMMU.
Third, the Virtualization Guide states that for Intel-based machines with IOMMU support (a requirement for passthrough/device-assignment), you have to add 'intel_iommu=on' to the kernel cmdline.