Hi Dexuan,
Thanks for your patch. It looks like the
below problem fixed.
But now I ended up with “non-page aligned
bar address” error.
Xend log and lspci config space are given below,
By the way, I could see in the script that
all the pci devices behind the bridge should be co-assigned to the same guest.
Does it mean that we could not export each
device function on a multi-function card to separate guests?
Xend log is,
[2008-10-09 18:07:16 7867] ERROR
(xmlrpclib2:178) Internal error handling xend.domain.device_configure
Traceback (most recent call last):
File
"//usr/lib64/python/xen/util/xmlrpclib2.py", line 131, in
_marshaled_dispatch
response =
self._dispatch(method, params)
File
"/usr/lib64/python2.5/SimpleXMLRPCServer.py", line 415, in _dispatch
return func(*params)
File "<string>",
line 1, in <lambda>
File
"//usr/lib64/python/xen/xend/server/XMLRPCServer.py", line 55, in
dispatch
return getattr(info,
fn)(*args)
File
"//usr/lib64/python/xen/xend/XendDomainInfo.py", line 821, in
device_configure
return
self.pci_device_configure(dev_sxp)
File
"//usr/lib64/python/xen/xend/XendDomainInfo.py", line 722, in
pci_device_configure
self.device_create(dev_sxp)
File
"//usr/lib64/python/xen/xend/XendDomainInfo.py", line 637, in
device_create
self._createDevice(dev_type, dev_config_dict)
File
"//usr/lib64/python/xen/xend/XendDomainInfo.py", line 1869, in
_createDevice
return self.getDeviceController(deviceClass).createDevice(devConfig)
File
"//usr/lib64/python/xen/xend/server/DevController.py", line 94, in
createDevice
self.setupDevice(config)
File
"//usr/lib64/python/xen/xend/server/pciif.py", line 431, in
setupDevice
self.setupOneDevice(domain, bus, slot, func)
File
"//usr/lib64/python/xen/xend/server/pciif.py", line 289, in
setupOneDevice
raise
VmError("pci: %: non-page-aligned MMIO BAR found." % dev.name)
ValueError: unsupported format character
\047:\047 (0x3a) at index 6
Config space dump of the NIC is,
linux-242:# lspci -d 17d5: -v -xxx
08:01.0 Ethernet controller: S2io Inc.
Xframe II 10Gbps Ethernet (rev 02)
Subsystem: Hewlett-Packard Company Unknown device 1337
Flags: 66MHz, medium devsel, IRQ 9
Memory at ff5f8000 (64-bit, prefetchable) [disabled] [size=32K]
Memory at ff400000 (64-bit, prefetchable) [disabled] [size=1M]
Memory
at ff5f7800 (64-bit, prefetchable) [disabled] [size=2K]
Expansion ROM at fea00000 [disabled] [size=1M]
Capabilities: [40] Message Signalled Interrupts: Mask+ 64bit+ Queue=0/5 Enable-
Capabilities: [60] PCI-X non-bridge device
Capabilities: [80] Vital Product Data
Capabilities: [90] MSI-X: Enable- Mask- TabSize=64
Capabilities: [a0] Power Management version 3
00: d5 17 32 58 00 00 30 02 02 00 00 02 10
40 00 00
10: 0c 80 5f ff 00 00 00 00 0c 00 40 ff 00
00 00 00
20: 0c 78 5f ff 00 00 00 00 00 00 00 00 3c
10 37 13
30: 00 00 a0 fe 40 00 00 00 00 00 00 00 09
01 ff 01
40: 05 60 8a 01 00 00 00 00 00 00 00 00 00
00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00
60: 07 80 73 10 08 08 e3 5f 00 00 00 00 00
00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00
80: 03 90 fc 80 00 00 00 78 00 00 00 00 00
00 00 00
90: 11 a0 3f 00 04 00 00 00 04 04 00 00 00
00 00 00
a0: 01 00 23 7e 00 20 00 dc 00 00 00 00 00
00 00 00
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00
Thanks,
Masroor
From: Cui, Dexuan
[mailto:dexuan.cui@xxxxxxxxx]
Sent: Wednesday, October 08, 2008
2:31 AM
To: Masroor Vettuparambil;
'xen-devel@xxxxxxxxxxxxxxxxxxx'
Subject: RE: pci pass-through
failure on xen 3.3.0
Hi Masroor,
BTW, you can simply apply the patch directly: login the
target host, cd /usr/lib64/python/xen, patch -p4 < fix_find_parent.patch;
xend restart.
From:
xen-devel-bounces@xxxxxxxxxxxxxxxxxxx [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx]
On Behalf Of Cui, Dexuan
Sent: 2008年10月8日 17:16
To: 'Masroor Vettuparambil';
'xen-devel@xxxxxxxxxxxxxxxxxxx'
Subject: [Xen-devel] RE: pci
pass-through failure on xen 3.3.0
Hi Masroor,
Looks there is an incorrect assumption.
Could you please help to test the attached patch? If it
doesn't work, can you attached your output of "lspci -tv" and
"lspci -xxx -vvv"?
Thanks!
-- Dexuan
From:
xen-devel-bounces@xxxxxxxxxxxxxxxxxxx [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx]
On Behalf Of Masroor Vettuparambil
Sent: 2008年10月8日 8:33
To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] pci
pass-through failure on xen 3.3.0
Hi all,
I downloaded the xen 3.3.0 and now testing the pci
pass-through with the NIC.
Using late binding, the pci slot 0000:08:01.0 is
assigned to pciback.
But pci related xm commands are not working.
For eg:
linux-242:/home/xen-3.3.0 # xm pci-list-assignable-devices
Unexpected error: <type 'exceptions.OSError'>
Please report to xen-devel@xxxxxxxxxxxxxxxxxxx
Traceback (most recent call last):
File "/usr/sbin/xm", line 10, in
<module>
main.main(sys.argv)
File "//usr/lib64/python/xen/xm/main.py",
line 2883, in main
_, rc = _run_cmd(cmd, cmd_name, args)
File "//usr/lib64/python/xen/xm/main.py",
line 2907, in _run_cmd
return True, cmd(args)
File "//usr/lib64/python/xen/xm/main.py",
line 2202, in xm_pci_list_assignable_devices
devs_list =
check_FLR_capability(dev_list)
File "/usr/lib64/python2.5/xen/util/pci.py",
line 288, in check_FLR_capability
coassigned_pci_list =
dev.find_coassigned_devices(True)
File
"/usr/lib64/python2.5/xen/util/pci.py", line 461, in
find_coassigned_devices
dev =
self.find_the_uppermost_pci_bridge()
File "/usr/lib64/python2.5/xen/util/pci.py",
line 424, in find_the_uppermost_pci_bridge
dev_parent = PciDevice(dom, b, d, f)
File
"/usr/lib64/python2.5/xen/util/pci.py", line 382, in __init__
self.detect_dev_info()
File
"/usr/lib64/python2.5/xen/util/pci.py", line 604, in detect_dev_info
class_dev =
self.pci_conf_read16(PCI_CLASS_DEVICE)
File
"/usr/lib64/python2.5/xen/util/pci.py", line 567, in pci_conf_read16
fd = os.open(self.cfg_space_path,
os.O_RDONLY)
OSError: [Errno 2] No such file or directory:
'/sys/bus/pci/devices/0000:06:00.0/config'
I checked the above python scripts.
The function find_parent() in file util/pci.py, tries to
find the parent device from the file link
../../../devices/pci0000:06/0000:06:01.0/0000:08:01.0
When it sees pci0000:06, it tries to read the config space
of 0000:06:00.0 which doesn’t exist. This causes the above error.
Lspci tree is,
linux-242:/home/xen-3.3.0 # lspci -t
-+-[0000:06]-+-01.0-[0000:08]----01.0
|
+-01.1
|
+-02.0-[0000:07]--
|
\-02.1
\-[0000:00]-+-00.0
+-01.0
+-01.1
+-06.0
+-07.0
+-08.0
+-09.0-[0000:05]----07.0
+-0b.0-[0000:04]----00.0
+-0c.0-[0000:03]----00.0
+-0d.0-[0000:02]--
+-0e.0-[0000:01]--
+-18.0
+-18.1
+-18.2
+-18.3
+-19.0
+-19.1
+-19.2
\-19.3
Thanks,
Masroor