preventing arbitrary virtual function assignment

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux