SR-IOV not working in Mitaka and Intel X series NIC
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Invalid
|
Undecided
|
Unassigned | ||
neutron |
Invalid
|
Undecided
|
Unassigned |
Bug Description
The SRIO functionality in Mitaka seems broken, all configuration options we evaluated lead to
NovaException: Unexpected vif_type=
errors, stack following.
We are currently using this code base, along with SRIOV configuration posted here
Nova SHA 611efbe77c712d9
Neutron SHA c73269fa480a8a9
Stack :
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
2016-09-27 16:09:09.156 10248 ERROR nova.compute.
Interestingly the nova resource tracker seem to be able to create a list of all available sriov devices and they show up correctly inside the database as pci_device table entries
2016-09-27 16:13:52.175 10248 INFO nova.compute.
2016-09-27 16:13:52.175 10248 INFO nova.compute.
MB used_ram=2048MB phys_disk=1935GB used_disk=2GB total_vcpus=32 used_vcpus=0 pci_stats=
_id='8086'), PciDevicePool(
Available ports inside DB:
+------
| compute_node_id | address | product_id | vendor_id | dev_type | dev_id | status |
+------
| 5 | 0000:88:10.1 | 10ed | 8086 | type-VF | pci_0000_88_10_1 | available |
| 5 | 0000:88:10.3 | 10ed | 8086 | type-VF | pci_0000_88_10_3 | available |
| 5 | 0000:88:10.5 | 10ed | 8086 | type-VF | pci_0000_88_10_5 | available |
| 5 | 0000:88:10.7 | 10ed | 8086 | type-VF | pci_0000_88_10_7 | available |
| 5 | 0000:88:11.1 | 10ed | 8086 | type-VF | pci_0000_88_11_1 | available |
| 5 | 0000:88:11.3 | 10ed | 8086 | type-VF | pci_0000_88_11_3 | available |
| 5 | 0000:88:11.5 | 10ed | 8086 | type-VF | pci_0000_88_11_5 | available |
| 5 | 0000:88:11.7 | 10ed | 8086 | type-VF | pci_0000_88_11_7 | available |
| 5 | 0000:88:12.1 | 10ed | 8086 | type-VF | pci_0000_88_12_1 | available |
| 5 | 0000:88:12.3 | 10ed | 8086 | type-VF | pci_0000_88_12_3 | available |
| 5 | 0000:88:12.5 | 10ed | 8086 | type-VF | pci_0000_88_12_5 | available |
| 5 | 0000:88:12.7 | 10ed | 8086 | type-VF | pci_0000_88_12_7 | available |
| 5 | 0000:88:13.1 | 10ed | 8086 | type-VF | pci_0000_88_13_1 | available |
| 5 | 0000:88:13.3 | 10ed | 8086 | type-VF | pci_0000_88_13_3 | available |
| 5 | 0000:88:13.5 | 10ed | 8086 | type-VF | pci_0000_88_13_5 | available |
| 5 | 0000:88:00.0 | 10fb | 8086 | type-PF | pci_0000_88_00_0 | available |
| 5 | 0000:88:00.1 | 10fb | 8086 | type-PF | pci_0000_88_00_1 | available |
| 2 | 0000:88:11.5 | 10ed | 8086 | type-VF | pci_0000_88_11_5 | available |
| 2 | 0000:88:10.5 | 10ed | 8086 | type-VF | pci_0000_88_10_5 | available |
| 2 | 0000:88:11.1 | 10ed | 8086 | type-VF | pci_0000_88_11_1 | available |
| 2 | 0000:88:10.7 | 10ed | 8086 | type-VF | pci_0000_88_10_7 | available |
| 2 | 0000:88:10.1 | 10ed | 8086 | type-VF | pci_0000_88_10_1 | available |
| 2 | 0000:88:10.3 | 10ed | 8086 | type-VF | pci_0000_88_10_3 | available |
| 2 | 0000:88:11.3 | 10ed | 8086 | type-VF | pci_0000_88_11_3 | available |
+------
Also the NICs seem to be available just fine :
# lspci -nnnn | grep 'Virtual Function'
88:10.1 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:10.3 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:10.5 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:10.7 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:11.1 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:11.3 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:11.5 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:11.7 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:12.1 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:12.3 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:12.5 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:12.7 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:13.1 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:13.3 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
88:13.5 Ethernet controller [0200]: Intel Corporation 82599 Ethernet Controller Virtual Function [8086:10ed] (rev 01)
VFs:
ip link show dev p4p2
11: p4p2: <BROADCAST,
link/ether 14:02:ec:68:49:65 brd ff:ff:ff:ff:ff:ff
vf 0 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 1 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 2 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 3 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 4 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 5 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 6 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 7 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 8 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 9 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 10 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 11 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 12 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 13 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
vf 14 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
iommu:
[ 0.000000] ACPI: DMAR 000000007b7fd000 000332 (v01 INTEL INTEL ID 00000001 ? 00000001)
[ 0.096499] dmar: Host address width 46
[ 0.096502] dmar: DRHD base: 0x000000fbffc000 flags: 0x0
[ 0.096508] dmar: IOMMU 0: reg_base_addr fbffc000 ver 1:0 cap d2078c106f0466 ecap f020df
[ 0.096510] dmar: DRHD base: 0x000000c7ffc000 flags: 0x1
[ 0.096515] dmar: IOMMU 1: reg_base_addr c7ffc000 ver 1:0 cap d2078c106f0466 ecap f020df
[ 0.096517] dmar: RMRR base: 0x0000007916d000 end: 0x0000007916ffff
[ 0.096518] dmar: RMRR base: 0x000000791eb000 end: 0x000000791eefff
[ 0.096520] dmar: RMRR base: 0x000000791db000 end: 0x000000791eafff
[ 0.096521] dmar: RMRR base: 0x000000791c8000 end: 0x000000791d8fff
[ 0.096523] dmar: RMRR base: 0x000000791d9000 end: 0x000000791dafff
[ 0.096524] dmar: RMRR base: 0x0000005a7a1000 end: 0x0000005a7e0fff
[ 1.488485] DMAR: No ATSR found
grep -i "Enabled IRQ" /var/log/dmesg
[ 0.097126] Enabled IRQ remapping in x2apic mode
The neutron-
2016-09-27 18:15:01.951 14081 DEBUG neutron.
2016-09-27 18:15:02.003 14081 DEBUG neutron.
in a loop which maybe ok, considering that the code mostly container check conditions.
/etc/nova/
[DEFAULT]
pci_passthrough
/etc/neutron/
[ml2]
type_drivers = flat,vlan,
tenant_
mechanism_drivers = linuxbridge,
extension_drivers = port_security
[m2_sriov]
supported_
agent_required = True
/etc/neutron/
[DEFAULT]
verbose = True
debug = True
[securitygroup]
firewall_driver = neutron.
[sriov_nic]
physical_
exclude_devices =
[m2_sriov]
supported_
agent_required = True
Sample network configuration:
neutron net-create --provider:
neutron subnet-create INSIDE_NET 1.2.3.0/22 --name INSIDE_SUBNET1 --gateway=1.2.3.1 --allocation-pool start=1.
port_id=`neutron port-create INSIDE_NET --name sriov_port1 --binding:vnic_type direct --device_owner nova-compute | awk '/ id / { print $4 }'`
Afterwards we tried to boot a simple instance with --nic port-id $port_id parameter, leading to the error above.
description: | updated |
tags: | added: sriov |
Changed in nova: | |
status: | New → Incomplete |
Can we also get the neutron logs pertaining to 00c620f0- 1b5d-43c2- 89f6-d5a5c4ce98 fa ?