Bug 990061

Summary: The 'virt_function' in the nodedev-dumpxml of VF should be removed
Product: Red Hat Enterprise Linux 7 Reporter: Xuesong Zhang <xuzhang>
Component: libvirtAssignee: Laine Stump <laine>
Status: CLOSED CURRENTRELEASE QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.0CC: acathrow, dallan, dyuan, honzhang
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-04-07 09:49:15 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Xuesong Zhang 2013-07-30 10:17:05 UTC
Description of problem:
The 'virt_function' in the nodedev-dumpxml of VF should be removed.

Version-Release number of selected component (if applicable):
libvirt-0.10.2-21.el6.x86_64
qemu-kvm-rhev-0.12.1.2-2.381.el6.x86_64
2.6.32-401.el6.x86_64

How reproducible:
100%

Steps:
1. prepare one healthy SR-IOV machine, check the PF and VFS.
# lspci|grep 82576
0e:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
0e:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
0f:10.0 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
0f:10.1 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
0f:10.2 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
0f:10.3 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
0f:10.4 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
0f:10.5 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
0f:10.6 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
0f:10.7 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
0f:11.0 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
0f:11.1 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
0f:11.2 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
0f:11.3 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
0f:11.4 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
0f:11.5 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)

2. check the nodedev-dumpxml of the PF, the 'virt_functions' of this PF can been seen.
# virsh nodedev-dumpxml pci_0000_0e_00_1
<device>
  <name>pci_0000_0e_00_1</name>
  <parent>pci_0000_0d_02_0</parent>
  <driver>
    <name>igb</name>
  </driver>
  <capability type='pci'>
    <domain>0</domain>
    <bus>14</bus>
    <slot>0</slot>
    <function>1</function>
    <product id='0x10e8'>82576 Gigabit Network Connection</product>
    <vendor id='0x8086'>Intel Corporation</vendor>
    <capability type='virt_functions'>
      <address domain='0x0000' bus='0x0f' slot='0x10' function='0x1'/>
      <address domain='0x0000' bus='0x0f' slot='0x10' function='0x3'/>
      <address domain='0x0000' bus='0x0f' slot='0x10' function='0x5'/>
      <address domain='0x0000' bus='0x0f' slot='0x10' function='0x7'/>
      <address domain='0x0000' bus='0x0f' slot='0x11' function='0x1'/>
      <address domain='0x0000' bus='0x0f' slot='0x11' function='0x3'/>
      <address domain='0x0000' bus='0x0f' slot='0x11' function='0x5'/>
    </capability>
  </capability>
</device>

3. check the nodedev-dumpxml of the VF, the 'phys_function' and 'virt_functions' of this VF can been seen, shouldn't contains 'virt_functions' in the nodedev-dumpxml of one VF.
# virsh nodedev-dumpxml pci_0000_0f_11_5
<device>
  <name>pci_0000_0f_11_5</name>
  <parent>pci_0000_0d_02_0</parent>
  <driver>
    <name>igbvf</name>
  </driver>
  <capability type='pci'>
    <domain>0</domain>
    <bus>15</bus>
    <slot>17</slot>
    <function>5</function>
    <product id='0x10ca'>82576 Virtual Function</product>
    <vendor id='0x8086'>Intel Corporation</vendor>
    <capability type='phys_function'>
      <address domain='0x0000' bus='0x0e' slot='0x00' function='0x1'/>
    </capability>
    <capability type='virt_functions'>
    </capability>
  </capability>
</device>

Actual results:
In step3, should not contains 'virt_functions' in the nodedev-dumpxml of one VF.

Expected results:
In step3, the capability of 'virt_functions' in the nodedev-dumpxml of VF should be removed.
The step3 in addtional info is for reference, in rhel7, there isn't 'virt_function' in the nodedev-dumpxml of VF.

Addtional info:

Find one SR-IOV with latest rhel7.
libvirt version: libvirt-1.1.0-2.el7.x86_64

Steps:
1. check the PF and VF in this SR-IOV.
# lspci|grep 82576
03:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
03:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
03:10.0 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:10.1 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:10.2 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:10.3 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:10.4 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:10.5 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:10.6 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:10.7 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:11.0 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:11.1 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:11.2 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:11.3 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:11.4 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
03:11.5 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
2. check the nodedev-dumpxml of the PF, the 'virt_functions' can be seen.
# virsh nodedev-dumpxml pci_0000_03_00_1
<device>
  <name>pci_0000_03_00_1</name>
  <path>/sys/devices/pci0000:00/0000:00:01.0/0000:03:00.1</path>
  <parent>pci_0000_00_01_0</parent>
  <driver>
    <name>igb</name>
  </driver>
  <capability type='pci'>
    <domain>0</domain>
    <bus>3</bus>
    <slot>0</slot>
    <function>1</function>
    <product id='0x10c9'>82576 Gigabit Network Connection</product>
    <vendor id='0x8086'>Intel Corporation</vendor>
    <capability type='virt_functions'>
      <address domain='0x0000' bus='0x03' slot='0x10' function='0x1'/>
      <address domain='0x0000' bus='0x03' slot='0x10' function='0x3'/>
      <address domain='0x0000' bus='0x03' slot='0x10' function='0x5'/>
      <address domain='0x0000' bus='0x03' slot='0x10' function='0x7'/>
      <address domain='0x0000' bus='0x03' slot='0x11' function='0x1'/>
      <address domain='0x0000' bus='0x03' slot='0x11' function='0x3'/>
      <address domain='0x0000' bus='0x03' slot='0x11' function='0x5'/>
    </capability>
    <iommuGroup number='14'>
      <address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
      <address domain='0x0000' bus='0x03' slot='0x00' function='0x1'/>
    </iommuGroup>
  </capability>
</device>

3. check the nodedev-dumpxml of the VF, the 'phys_function' can be seen, no 'virt_function'
# virsh nodedev-dumpxml pci_0000_03_11_5
<device>
  <name>pci_0000_03_11_5</name>
  <path>/sys/devices/pci0000:00/0000:00:01.0/0000:03:11.5</path>
  <parent>pci_0000_00_01_0</parent>
  <driver>
    <name>igbvf</name>
  </driver>
  <capability type='pci'>
    <domain>0</domain>
    <bus>3</bus>
    <slot>17</slot>
    <function>5</function>
    <product id='0x10ca'>82576 Virtual Function</product>
    <vendor id='0x8086'>Intel Corporation</vendor>
    <capability type='phys_function'>
      <address domain='0x0000' bus='0x03' slot='0x00' function='0x1'/>
    </capability>
    <iommuGroup number='35'>
      <address domain='0x0000' bus='0x03' slot='0x11' function='0x5'/>
    </iommuGroup>
  </capability>
</device>

Comment 4 Jiri Denemark 2014-04-04 21:38:05 UTC
This bug was not selected to be addressed in Red Hat Enterprise Linux 6. We will look at it again within the Red Hat Enterprise Linux 7 product.

Comment 5 Laine Stump 2014-04-07 09:49:15 UTC
AS noted in the bug description, RHEL7 libvirt doesn't have this problem.