Hello,

I was just try to assign Virtual Function (VF) of my network card to openstack VM. I tries it on devstack installation. After I prepare all according to https://wiki.openstack.org/wiki/Pci_passthrough I have got error:

DEBUG nova.compute.resource_tracker [-] Hypervisor: assignable PCI devices: [{"dev_id": "pci_0000_02_10_0", "product_id": "10ed", "phys_function": [["0x0000", "0x02", "0x00", "0x0"]], "address": "0000:02:10.0", "dev_type": "type-VF", "vendor_id": "8086", "label": "label_8086_10ed"}, {"dev_id": "pci_0000_02_10_1", "product_id": "10ed", "phys_function": [["0x0000", "0x02", "0x00", "0x1"]], "address": "0000:02:10.1", "dev_type": "type-VF", "vendor_id": "8086", "label": "label_8086_10ed"}, {"dev_id": "pci_0000_02_10_2", "product_id": "10ed", "phys_function": [["0x0000", "0x02", "0x00", "0x0"]], "address": "0000:02:10.2", "dev_type": "type-VF", "vendor_id": "8086", "label": "label_8086_10ed"}, {"dev_id": "pci_0000_02_10_3", "product_id": "10ed", "phys_function": [["0x0000", "0x02", "0x00", "0x1"]], "address": "0000:02:10.3", "dev_type": "type-VF", "vendor_id": "8086", "label": "label_8086_10ed"}, {"dev_id": "pci_0000_02_10_4", "product_id": "10ed", "phys_function": [["0x0000", "0x02", "0x00", "0x0"]], "address": "0000:02:10.4", "dev_type": "type-VF", "vendor_id": "8086", "label": "label_8086_10ed"}, {"dev_id": "pci_0000_02_10_5", "product_id": "10ed", "phys_function": [["0x0000", "0x02", "0x00", "0x1"]], "address": "0000:02:10.5", "dev_type": "type-VF", "vendor_id": "8086", "label": "label_8086_10ed"}, {"dev_id": "pci_0000_08_01_0", "product_id": "0532", "address": "0000:08:01.0", "dev_type": "type-PCI", "vendor_id": "102b", "label": "label_102b_0532"}] from (pid=22603) _report_hypervisor_resource_view /opt/stack/nova/nova/compute/resource_tracker.py:429 2014-01-09 11:13:11.969 ERROR object [-] Error setting PciDevice.extra_info
2014-01-09 11:13:11.969 TRACE object Traceback (most recent call last):
2014-01-09 11:13:11.969 TRACE object File "/opt/stack/nova/nova/objects/base.py", line 70, in setter 2014-01-09 11:13:11.969 TRACE object field.coerce(self, name, value)) 2014-01-09 11:13:11.969 TRACE object File "/opt/stack/nova/nova/objects/fields.py", line 166, in coerce 2014-01-09 11:13:11.969 TRACE object return self._type.coerce(obj, attr, value) 2014-01-09 11:13:11.969 TRACE object File "/opt/stack/nova/nova/objects/fields.py", line 332, in coerce 2014-01-09 11:13:11.969 TRACE object obj, '%s["%s"]' % (attr, key), element) 2014-01-09 11:13:11.969 TRACE object File "/opt/stack/nova/nova/objects/fields.py", line 166, in coerce 2014-01-09 11:13:11.969 TRACE object return self._type.coerce(obj, attr, value) 2014-01-09 11:13:11.969 TRACE object File "/opt/stack/nova/nova/objects/fields.py", line 218, in coerce
2014-01-09 11:13:11.969 TRACE object     value.__class__.__name__)
2014-01-09 11:13:11.969 TRACE object ValueError: A string is required here, not list
2014-01-09 11:13:11.969 TRACE object
2014-01-09 11:13:11.971 DEBUG nova.openstack.common.lockutils [-] Semaphore / lock released "update_available_resource" from (pid=22603) inner /opt/stack/nova/nova/openstack/common/lockutils.py:252
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/eventlet/hubs/hub.py", line 346, in fire_timers
    timer()
File "/usr/local/lib/python2.7/dist-packages/eventlet/hubs/timer.py", line 56, in __call__
    cb(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/eventlet/event.py", line 163, in _do_send
    waiter.switch(result)
File "/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py", line 194, in main
    result = function(*args, **kwargs)
File "/opt/stack/nova/nova/openstack/common/service.py", line 480, in run_service
    service.start()
  File "/opt/stack/nova/nova/service.py", line 182, in start
    self.manager.pre_start_hook()
File "/opt/stack/nova/nova/compute/manager.py", line 814, in pre_start_hook
    self.update_available_resource(nova.context.get_admin_context())
File "/opt/stack/nova/nova/compute/manager.py", line 4967, in update_available_resource
    rt.update_available_resource(context)
File "/opt/stack/nova/nova/openstack/common/lockutils.py", line 249, in inner
    return f(*args, **kwargs)
File "/opt/stack/nova/nova/compute/resource_tracker.py", line 318, in update_available_resource
    'pci_passthrough_devices')))
File "/opt/stack/nova/nova/pci/pci_manager.py", line 193, in set_hvdevs
    dev_obj = pci_device.PciDevice.create(dev)
  File "/opt/stack/nova/nova/objects/pci_device.py", line 174, in create
    pci_device.update_device(dev_dict)
File "/opt/stack/nova/nova/objects/pci_device.py", line 136, in update_device
    self.extra_info = extra_info
  File "/opt/stack/nova/nova/objects/base.py", line 70, in setter
    field.coerce(self, name, value))
  File "/opt/stack/nova/nova/objects/fields.py", line 166, in coerce
    return self._type.coerce(obj, attr, value)
  File "/opt/stack/nova/nova/objects/fields.py", line 332, in coerce
    obj, '%s["%s"]' % (attr, key), element)
  File "/opt/stack/nova/nova/objects/fields.py", line 166, in coerce
    return self._type.coerce(obj, attr, value)
  File "/opt/stack/nova/nova/objects/fields.py", line 218, in coerce
    value.__class__.__name__)
ValueError: A string is required here, not list
2014-01-09 11:13:11.973 ERROR nova.openstack.common.threadgroup [-] A string is required here, not list 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup Traceback (most recent call last): 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/openstack/common/threadgroup.py", line 117, in wait 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup x.wait() 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/openstack/common/threadgroup.py", line 49, in wait 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup return self.thread.wait() 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py", line 168, in wait 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup return self._exit_event.wait() 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/usr/local/lib/python2.7/dist-packages/eventlet/event.py", line 116, in wait 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup return hubs.get_hub().switch() 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/usr/local/lib/python2.7/dist-packages/eventlet/hubs/hub.py", line 187, in switch 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup return self.greenlet.switch() 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py", line 194, in main 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup result = function(*args, **kwargs) 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/openstack/common/service.py", line 480, in run_service 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup service.start() 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/service.py", line 182, in start 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup self.manager.pre_start_hook() 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/compute/manager.py", line 814, in pre_start_hook 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup self.update_available_resource(nova.context.get_admin_context()) 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/compute/manager.py", line 4967, in update_available_resource 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup rt.update_available_resource(context) 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/openstack/common/lockutils.py", line 249, in inner 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup return f(*args, **kwargs) 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/compute/resource_tracker.py", line 318, in update_available_resource 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup 'pci_passthrough_devices'))) 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/pci/pci_manager.py", line 193, in set_hvdevs 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup dev_obj = pci_device.PciDevice.create(dev) 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/objects/pci_device.py", line 174, in create 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup pci_device.update_device(dev_dict) 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/objects/pci_device.py", line 136, in update_device 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup self.extra_info = extra_info 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/objects/base.py", line 70, in setter 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup field.coerce(self, name, value)) 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/objects/fields.py", line 166, in coerce 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup return self._type.coerce(obj, attr, value) 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/objects/fields.py", line 332, in coerce 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup obj, '%s["%s"]' % (attr, key), element) 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/objects/fields.py", line 166, in coerce 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup return self._type.coerce(obj, attr, value) 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup File "/opt/stack/nova/nova/objects/fields.py", line 218, in coerce 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup value.__class__.__name__) 2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup ValueError: A string is required here, not list
2014-01-09 11:13:11.973 TRACE nova.openstack.common.threadgroup



I checked in source that problem is probably due to "phys_function": [["0x0000", "0x02", "0x00", "0x0"]] in dict with devices. So I wonder is it supported in havana release and I made something wrong or maybe it is not implemented in openstack yet? I prepare kernel and kvm correctly because i test running vm directly with qemu and this Virtual Function of my network card and it works fine.
My Ethernet is Intel 82599:
lspci | grep 82599
02:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01) 02:00.1 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01) 02:10.0 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 02:10.1 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 02:10.2 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 02:10.3 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 02:10.4 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01) 02:10.5 Ethernet controller: Intel Corporation 82599 Ethernet Controller Virtual Function (rev 01)

Thanks in advance for any help :)

--
Sławek Kapłoński
[email protected]

_______________________________________________
Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
Post to     : [email protected]
Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack

Reply via email to