WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-users

[Xen-users] Re: Unable to pass device to IOMMU

To: xen-users@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-users] Re: Unable to pass device to IOMMU
From: Adam Moss <amoss@xxxxxxxxxx>
Date: Thu, 21 Oct 2010 16:16:22 +0100
Cc: support@xxxxxxxxxx
Delivery-date: Mon, 25 Oct 2010 09:00:04 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <1285095902.4423.0.camel@memaher-desktop>
List-help: <mailto:xen-users-request@lists.xensource.com?subject=help>
List-id: Xen user discussion <xen-users.lists.xensource.com>
List-post: <mailto:xen-users@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-users>, <mailto:xen-users-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-users>, <mailto:xen-users-request@lists.xensource.com?subject=unsubscribe>
Organization: Adax Europe Ltd
References: <000601cb55c6$bef4c930$3cde5b90$@adax.co.uk> <1285095902.4423.0.camel@memaher-desktop>
Reply-to: Adam Moss <amoss@xxxxxxxxxx>
Sender: xen-users-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.11) Gecko/20101013 Lightning/1.0b2 Thunderbird/3.1.5
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



    

Attachment: 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>