xen-users
[Xen-users] Re: Unable to pass device to IOMMU
Hi all,
I have worked with Michael on this problem, here are some further
details that may help troubleshoot the issue:
The error seen when starting DomU is in fact "Failed to assign
device to IOMMU".
We're using the following system setup for our Xen environment:
SunBlade 6000 chassis
SunBlade X6270 blade
SuSE ES11 SP1 64bit Dom0 (Xen 4.0.0 - Kernel 2.6.32.12-0.7-xen )
SuSE ES11 SP1 64bit DomU
The lspci -vt output at Dom0 looks like this:
###
-[0000:00]-+-00.0 Intel Corporation 5520 I/O Hub to ESI Port
+-01.0-[0000:01-06]----00.0 LSI Logic / Symbios Logic
SAS1068E PCI-Express Fusion-MPT SAS
+-03.0-[0000:07-0c]--
+-05.0-[0000:0d-12]----00.0-[0000:0e]----00.0 Freescale
Semiconductor Inc Device 0091
+-07.0-[0000:13-18]--
+-09.0-[0000:19-1e]--
+-13.0 Intel Corporation 5520/5500/X58 I/O Hub I/OxAPIC
Interrupt Controller
+-14.0 Intel Corporation 5520/5500/X58 I/O Hub System
Management Registers
+-14.1 Intel Corporation 5520/5500/X58 I/O Hub GPIO and
Scratch Pad Registers
+-14.2 Intel Corporation 5520/5500/X58 I/O Hub Control
Status and RAS Registers
+-14.3 Intel Corporation 5520/5500/X58 I/O Hub Throttle
Registers
+-16.0 Intel Corporation 5520/5500/X58 Chipset QuickData
Technology Device
+-16.1 Intel Corporation 5520/5500/X58 Chipset QuickData
Technology Device
+-16.2 Intel Corporation 5520/5500/X58 Chipset QuickData
Technology Device
+-16.3 Intel Corporation 5520/5500/X58 Chipset QuickData
Technology Device
+-16.4 Intel Corporation 5520/5500/X58 Chipset QuickData
Technology Device
+-16.5 Intel Corporation 5520/5500/X58 Chipset QuickData
Technology Device
+-16.6 Intel Corporation 5520/5500/X58 Chipset QuickData
Technology Device
+-16.7 Intel Corporation 5520/5500/X58 Chipset QuickData
Technology Device
+-1a.0 Intel Corporation 82801JI (ICH10 Family) USB UHCI
Controller #4
+-1a.1 Intel Corporation 82801JI (ICH10 Family) USB UHCI
Controller #5
+-1a.2 Intel Corporation 82801JI (ICH10 Family) USB UHCI
Controller #6
+-1a.7 Intel Corporation 82801JI (ICH10 Family) USB2
EHCI Controller #2
+-1c.0-[0000:1f]--+-00.0 Intel Corporation 82575EB
Gigabit Network Connection
| \-00.1 Intel Corporation 82575EB
Gigabit Network Connection
+-1d.0 Intel Corporation 82801JI (ICH10 Family) USB UHCI
Controller #1
+-1d.1 Intel Corporation 82801JI (ICH10 Family) USB UHCI
Controller #2
+-1d.2 Intel Corporation 82801JI (ICH10 Family) USB UHCI
Controller #3
+-1d.7 Intel Corporation 82801JI (ICH10 Family) USB2
EHCI Controller #1
+-1e.0-[0000:20]----05.0 ASPEED Technology, Inc. ASPEED
Graphics Family
+-1f.0 Intel Corporation 82801JIR (ICH10R) LPC Interface
Controller
+-1f.2 Intel Corporation 82801JI (ICH10 Family) SATA
AHCI Controller
\-1f.3 Intel Corporation 82801JI (ICH10 Family) SMBus
Controller
###
The following commands are used to hide the single device
(0000:0e:00.0) we want to pass back to DomU:
###
modprobe pciback
echo -n "0000:0e:00.0" > /sys/bus/pci/drivers/pciback/new_slot
echo -n "0000:0e:00.0" > /sys/bus/pci/drivers/pciback/bind
###
After this the device is shown correctly in the assignable devices
list.
###
SunBlade2:/etc/xen/vm # xm pci-list-assignable-devices
0000:0e:00.0
###
The DomU is then started/created using the following configuration
file:
###
import os, re
arch = os.uname()[4]
if re.search('64', arch):
arch_libdir = 'lib64'
else:
arch_libdir = 'lib'
kernel = "/usr/lib/xen/boot/hvmloader"
builder = 'hvm'
device_model = '/usr/'
+ arch_libdir + '/xen/bin/qemu-dm'
name = "node1"
vcpus = 1
memory = 1024
pae = 1
acpi = 1
apic = 1
boot = "dc"
vif =['mac=00:11:22:33:00:04, bridge=br0, model=e1000']
disk =['phy:sda5,hda,w']
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
snapshot = 0
sdl = 0
opengl = 1
vnc = 1
vnclisten = "127.0.0.1"
vncdisplay = 4
vncunused = 0
vncpasswd = ''
nographic = 0
stdvga = 0
serial = 'pty'
pci = ['0000:0e:00.0']
###
After running the create command the "failed to assign to IOMMU"
error is seen:
###
SunBlade2:/etc/xen/vm # xm create node1.conf
Using config file "./node1.conf".
Error: Failed to assign device to IOMMU
(0000:0e:00.0@100,msitranslate=1,power_mgmt=0)
###
We have enabled the debug traces (iommu=verbose loglvl=all
guest_loglvl=all) which show the following at the point of failure
(Please ignore the time stamps):
/var/log/messages
--------------------------
Mar 10 02:57:05 SunBlade2 kernel: [ 1495.751322]
(cdrom_add_media_watch()
file=/usr/src/packages/BUILD/kernel-xen-2.6.32.12/linux-2.6.32/drivers/xen/blkback/cdrom.c,
line=108) nodename:backend/vbd/2/768
Mar 10 02:57:05 SunBlade2 kernel: [ 1495.751327] (cdrom_is_type()
file=/usr/src/packages/BUILD/kernel-xen-2.6.32.12/linux-2.6.32/drivers/xen/blkback/cdrom.c,
line=95) type:0
Mar 10 02:57:05 SunBlade2 kernel: [ 1495.936015] pcieport
0000:00:05.0: AER: Uncorrected (Non-Fatal) error received: id=0028
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.023732] pcieport
0000:00:05.0: PCIE Bus Error: severity=Uncorrected (Non-Fatal),
type=Transaction Layer, id=0028(Requester ID)
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.023737] pcieport
0000:00:05.0: device [8086:340c] error
status/mask=00004000/00000000
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.023742] pcieport
0000:00:05.0: [14] Completion Timeout (First)
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.024193] pcieport
0000:00:05.0: broadcast error_detected message
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.024198] pciback
0000:0e:00.0: pciback device is not found/assigned
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.024201] pcieport
0000:00:05.0: broadcast mmio_enabled message
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.024203] pciback
0000:0e:00.0: pciback device is not found/assigned
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.024205] pcieport
0000:00:05.0: broadcast resume message
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.024208] pciback
0000:0e:00.0: pciback device is not found/assigned
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.024213] pcieport
0000:00:05.0: AER driver successfully recovered
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.024216] pcieport
0000:00:05.0: AER: Uncorrected (Non-Fatal) error received: id=0028
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.024305] pcieport
0000:00:05.0: can't find device of ID0028
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.024307] pcieport
0000:00:05.0: AER: Uncorrected (Non-Fatal) error received: id=0028
Mar 10 02:57:05 SunBlade2 kernel: [ 1496.024395] pcieport
0000:00:05.0: can't find device of ID0028
Mar 10 02:57:05 SunBlade2 kernel: [ 1495.587191] device tap2.0
entered promiscuous mode
Mar 10 02:57:05 SunBlade2 kernel: [ 1495.587205] br0: port 3(tap2.0)
entering forwarding state
Mar 10 02:57:05 SunBlade2 kernel: [ 1495.771897] br0: port 3(tap2.0)
entering disabled state
Mar 10 02:57:06 SunBlade2 kernel: [ 1495.959814] device tap2.0 left
promiscuous mode
/var/log/xen/xend.log
----------------------------
[2011-03-10 02:58:42 5613] DEBUG (XendDomainInfo:825)
XendDomainInfo.hvm_pci_device_insert_dev:
0000:0e:00.0@100,msitranslate=1,power_mgmt=0
[2011-03-10 02:58:42 5613] ERROR (XendDomainInfo:2957)
XendDomainInfo.initDomain: exception occurred
Traceback (most recent call last):
File
"/usr/lib64/python2.6/site-packages/xen/xend/XendDomainInfo.py",
line 2949, in _initDomain
self._createDevices()
File
"/usr/lib64/python2.6/site-packages/xen/xend/XendDomainInfo.py",
line 2440, in _createDevices
self.pci_device_configure_boot()
File
"/usr/lib64/python2.6/site-packages/xen/xend/XendDomainInfo.py",
line 641, in pci_device_configure_boot
self.pci_device_configure(dev_sxp, first_dev = first)
File
"/usr/lib64/python2.6/site-packages/xen/xend/XendDomainInfo.py",
line 934, in pci_device_configure
vdevfn = self.hvm_pci_device_insert(dev_config)
File
"/usr/lib64/python2.6/site-packages/xen/xend/XendDomainInfo.py",
line 800, in hvm_pci_device_insert
return self.hvm_pci_device_insert_dev(new_dev)
File
"/usr/lib64/python2.6/site-packages/xen/xend/XendDomainInfo.py",
line 828, in hvm_pci_device_insert_dev
raise VmError("Failed to assign device to IOMMU (%s)" % bdf_str)
VmError: Failed to assign device to IOMMU
(0000:0e:00.0@100,msitranslate=1,power_mgmt=0)
[2011-03-10 02:58:42 5613] ERROR (XendDomainInfo:486) VM start
failed
Traceback (most recent call last):
File
"/usr/lib64/python2.6/site-packages/xen/xend/XendDomainInfo.py",
line 472, in start
XendTask.log_progress(31, 60, self._initDomain)
File "/usr/lib64/python2.6/site-packages/xen/xend/XendTask.py",
line 209, in log_progress
retval = func(*args, **kwds)
File
"/usr/lib64/python2.6/site-packages/xen/xend/XendDomainInfo.py",
line 2960, in _initDomain
raise exn
VmError: Failed to assign device to IOMMU
(0000:0e:00.0@100,msitranslate=1,power_mgmt=0)
xm dmes
-------------
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to
switch input to Xen)
(XEN) Freed 184kB init memory.
(XEN) mtrr: type mismatch for fb000000,800000 old: write-back new:
write-combining
(XEN) [VT-D]iommu.c:1461: d0:PCI: unmap bdf = e:0.0
(XEN) [VT-D]iommu.c:1332: d1:PCI: map bdf = e:0.0
(XEN) domctl.c:853:d0 XEN_DOMCTL_assign_device: assign device
(e:0.0) failed
(XEN) event_channel.c:192:d0 EVTCHNOP failure: domain 1, error -22
(XEN) [VT-D]iommu.c:1461: d0:PCI: unmap bdf = e:0.0
(XEN) [VT-D]iommu.c:1332: d2:PCI: map bdf = e:0.0
(XEN) domctl.c:853:d0 XEN_DOMCTL_assign_device: assign device
(e:0.0) failed
(XEN) [VT-D]iommu.c:1461: d0:PCI: unmap bdf = e:0.0
(XEN) [VT-D]iommu.c:1332: d3:PCI: map bdf = e:0.0
(XEN) domctl.c:853:d0 XEN_DOMCTL_assign_device: assign device
(e:0.0) failed
(XEN) [VT-D]iommu.c:1461: d0:PCI: unmap bdf = e:0.0
(XEN) [VT-D]iommu.c:1332: d4:PCI: map bdf = e:0.0
(XEN) domctl.c:853:d0 XEN_DOMCTL_assign_device: assign device
(e:0.0) failed
The full trace (xm dmes, xend.log) output and other relevant
information from the system is attached.
Things to note
===========
1) The problem still occurs if we try and hotplug the device using
"xm pci-attach ..."
2) If the same hardware and software configuration is used with Xen
3.3.1 at Dom0 (SLES11) the problem is not seen.
3) We have compiled Xen 4.0.1 for SLES11 SP1 at Dom0 and still see
the same problem.
4) We have tried passing back the PLX bridge device "0d:00.0"
associated with the device as well as the device itself however we
then see the error "Error: pci: PCI Backend and pci-stub don't own
device 0000:0d:00.0" during DomU startup even though 0d:00.0 is
shown in the assignable device list.
Looking at recent posts this problems looks very similar to the one
in subject "PCI Passthrough Problems/Questions" posted today.
Any pointers at this stage would be great.
Thanks,
Adam
----------
Adam Moss
Adax Europe Ltd
Email : Adam.Moss@xxxxxxxxxx
On 21/09/2010 20:05, Michael Maher wrote:
Hello,
I was wondering if anybody had any insight they could lend us on this?
Your help would be very much appreciated,
Many Thanks,
Michael
On Thu, 2010-09-16 at 18:44 +0100, Michael Maher wrote:
Hello,
I’m hoping someone may be able to push us in the right direction. I’m
trying to get one of our products to work with the current branch of
Xen (4.0/4.0.0) but I’m hitting a problem.
We are currently using Xen 3.3.2 on a Sun Blade 600 chassis (with
x6270 blades) this works great.
But when we upgrade to Xen 4.0/4.0.1 we get the following message when
starting the DomU:
Device Cannot be passed to IOMMU
I understand from the release note that there were some changes made
to the IOMMU/pciback pass-through in this release, does anyone have
any details as to what might be going wrong?
We’re using SLES11/sp1 and I’ve tried with the Novell build and
compiled it myself. I also have the latest firmware for the chassis
and blade from Sun, all of which show the same problem.
Has anyone seen to same thing?
Any help would be greatly appreciated,
Many Thanks,
Michael
Michael Maher
Adax Europe Ltd
mmaher@xxxxxxxxxx
|
Xen-Issue-Logs.txt
Description: Text document
_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-users] Re: Unable to pass device to IOMMU,
Adam Moss <=
|
|
|