I'm really stymied by this issue so thanks in advance for any help!
Problem statement:
The virtual functions of an SR-IOV NIC are not being assigned assigned as
specified in the VM guest's XML definitions.
Data Points:
Server Information: HP ProLiant DL165 G7
Ethernet Card Information: Intel 82576
uname: Linux 3.0.0-16-server x86_64 GNU/Linux
OS Release: Ubuntu 11.10
KVM version: 0.14.1+noroms-0ubuntu6.2
Steps to Reproduce:
# ip link show:
2: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0
state UP qlen 1000
link/ether 00:1b:21:7d:70:16 brd ff:ff:ff:ff:ff:ff
vf 0 MAC 02:22:25:00:00:00
vf 1 MAC 02:22:25:00:00:01
vf 2 MAC 02:22:25:00:00:02
vf 3 MAC 02:22:25:00:00:03
vf 4 MAC 02:22:25:00:00:04
vf 5 MAC 02:22:25:00:00:05
vf 6 MAC 02:22:25:00:00:06
3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc mq master
bond0 state DOWN qlen 1000
link/ether 00:1b:21:7d:70:16 brd ff:ff:ff:ff:ff:ff
vf 0 MAC 02:22:25:01:00:00
vf 1 MAC 02:22:25:01:00:01
vf 2 MAC 02:22:25:01:00:02
vf 3 MAC 02:22:25:01:00:03
vf 4 MAC 02:22:25:01:00:04
vf 5 MAC 02:22:25:01:00:05
vf 6 MAC 02:22:25:01:00:06
# lspci |grep 05
05:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection
(rev 01)
05:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection
(rev 01)
05:10.0 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
05:10.1 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
05:10.2 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
05:10.3 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
05:10.4 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
05:10.5 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
05:10.6 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
05:10.7 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
05:11.0 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
05:11.1 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
05:11.2 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
05:11.3 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
05:11.4 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
05:11.5 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
# virsh nodedev-list |grep 05
pci_0000_05_00_0
pci_0000_05_00_1
pci_0000_05_10_0
pci_0000_05_10_1
pci_0000_05_10_2
pci_0000_05_10_3
pci_0000_05_10_4
pci_0000_05_10_5
pci_0000_05_10_6
pci_0000_05_10_7
pci_0000_05_11_0
pci_0000_05_11_1
pci_0000_05_11_2
pci_0000_05_11_3
pci_0000_05_11_4
pci_0000_05_11_5
# virsh nodedev-dettach pci_0000_05_10_0
Device pci_0000_05_10_0 dettached
# virsh nodedev-dettach pci_0000_05_10_1
Device pci_0000_05_10_1 dettached
# virsh nodedev-dettach pci_0000_05_11_0
Device pci_0000_05_11_0 dettached
# virsh nodedev-dettach pci_0000_05_11_1
Device pci_0000_05_11_1 dettached
# virsh nodedev-dumpxml pci_0000_05_10_0|grep -e bus -e slot -e fun |head -3
<bus>5</bus>
<slot>16</slot>
<function>0</function>
# virsh nodedev-dumpxml pci_0000_05_10_1|grep -e bus -e slot -e fun |head -3
<bus>5</bus>
<slot>16</slot>
<function>1</function>
# virsh nodedev-dumpxml pci_0000_05_11_0|grep -e bus -e slot -e fun |head -3
<bus>5</bus>
<slot>17</slot>
<function>0</function>
# virsh nodedev-dumpxml pci_0000_05_11_1|grep -e bus -e slot -e fun |head -3
<bus>5</bus>
<slot>17</slot>
<function>1</function>
== HOST-A ==
XML:
...
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x05' slot='0x10' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x0'/>
</hostdev>
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x05' slot='0x11' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05'
function='0x0'/>
</hostdev>
...
dmesg:
[ 2.765683] Intel(R) Virtual Function Network Driver - version 1.0.8-k0
[ 2.765687] Copyright (c) 2009 - 2010 Intel Corporation.
[ 2.765809] igbvf 0000:00:04.0: setting latency timer to 64
[ 2.766050] igbvf 0000:00:04.0: irq 42 for MSI/MSI-X
[ 2.766073] igbvf 0000:00:04.0: irq 43 for MSI/MSI-X
[ 2.766094] igbvf 0000:00:04.0: irq 44 for MSI/MSI-X
[ 3.072509] igbvf 0000:00:04.0: Intel(R) 82576 Virtual Function
[ 3.072514] igbvf 0000:00:04.0: Address: 02:22:25:00:00:00
[ 3.072516] igbvf 0000:00:04.0: MAC: 1
[ 3.072658] igbvf 0000:00:05.0: setting latency timer to 64
[ 3.072902] igbvf 0000:00:05.0: irq 45 for MSI/MSI-X
[ 3.072924] igbvf 0000:00:05.0: irq 46 for MSI/MSI-X
[ 3.072946] igbvf 0000:00:05.0: irq 47 for MSI/MSI-X
[ 3.241325] igbvf 0000:00:05.0: Intel(R) 82576 Virtual Function
[ 3.241329] igbvf 0000:00:05.0: Address: 02:22:25:00:00:04
[ 3.241332] igbvf 0000:00:05.0: MAC: 1
[ 4.070069] igbvf 0000:00:04.0: Link is Up 1000 Mbps Full Duplex
[ 4.110094] igbvf 0000:00:05.0: Link is Up 1000 Mbps Full Duplex
[ 4.110127] igbvf 0000:00:04.0: Link is Up 1000 Mbps Full Duplex
ip link
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
qlen 1000
link/ether 02:22:25:00:00:00 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
qlen 1000
link/ether 02:22:25:00:00:04 brd ff:ff:ff:ff:ff:ff
== HOST-B ==
XML:
...
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x05' slot='0x10' function='0x2'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x0'/>
</hostdev>
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x05' slot='0x11' function='0x2'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05'
function='0x0'/>
</hostdev>
...
dmesg:
[ 2.235455] igbvf 0000:00:04.0: setting latency timer to 64
[ 2.235682] igbvf 0000:00:04.0: irq 42 for MSI/MSI-X
[ 2.235704] igbvf 0000:00:04.0: irq 43 for MSI/MSI-X
[ 2.235724] igbvf 0000:00:04.0: irq 44 for MSI/MSI-X
[ 2.540856] igbvf 0000:00:04.0: Intel(R) 82576 Virtual Function
[ 2.540861] igbvf 0000:00:04.0: Address: 02:22:25:01:00:00
[ 2.540864] igbvf 0000:00:04.0: MAC: 1
[ 2.541017] igbvf 0000:00:05.0: setting latency timer to 64
[ 2.541272] igbvf 0000:00:05.0: irq 45 for MSI/MSI-X
[ 2.541294] igbvf 0000:00:05.0: irq 46 for MSI/MSI-X
[ 2.541314] igbvf 0000:00:05.0: irq 47 for MSI/MSI-X
[ 2.800795] igbvf 0000:00:05.0: Intel(R) 82576 Virtual Function
[ 2.800799] igbvf 0000:00:05.0: Address: 02:22:25:01:00:04
[ 2.800802] igbvf 0000:00:05.0: MAC: 1
ip link:
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state
DOWN qlen 1000
link/ether 02:22:25:01:00:00 brd ff:ff:ff:ff:ff:ff
3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state
DOWN qlen 1000
link/ether 02:22:25:01:00:04 brd ff:ff:ff:ff:ff:ff
Expected Results:
HOST-A should have the following assignment:
* eth0 should = eth0-vf0 (bus:5, slot:10, fun:0), mac: 02:22:25:00:00:00
* eth1 should = eth1-vf0 (bus:5, slot:11, fun:0), mac: 02:22:25:01:00:00
HOST-b should have the following assignment:
* eth0 should = eth0-vf1 (bus:5, slot:10, fun:1), mac: 02:22:25:00:00:01
* eth1 should = eth1-vf1 (bus:5, slot:11, fun:1), mac: 02:22:25:01:00:01--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html