RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1256486 - NetXtreme II BCM5709 - device is behind a switch lacking ACS
Summary: NetXtreme II BCM5709 - device is behind a switch lacking ACS
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: libvirt
Version: 7.1
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: rc
: ---
Assignee: Laine Stump
QA Contact: Virtualization Bugs
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2015-08-24 17:34 UTC by lejeczek
Modified: 2015-11-19 06:52 UTC (History)
6 users (show)

Fixed In Version: libvirt-1.2.17-7.el7
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-11-19 06:52:41 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2015:2202 0 normal SHIPPED_LIVE libvirt bug fix and enhancement update 2015-11-19 08:17:58 UTC

Description lejeczek 2015-08-24 17:34:18 UTC
Description of problem:

essentially it's the same hardware base platform as:

00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890 Northbridge only dual slot (2x16) PCI-e GFX Hydra part (rev 02)
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD/ATI] RD990 I/O Memory Management Unit (IOMMU)
00:0b.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890 PCI to PCI bridge (NB-SB link)
00:0d.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890 PCI to PCI bridge (external gfx1 port B)

and there an Intel 82576 gets passed through, but here (Dell PowerEdge R815):

00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890 PCI to PCI bridge (external gfx0 port A) (rev 02)
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD/ATI] RD990 I/O Memory Management Unit (IOMMU)
00:02.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890 PCI to PCI bridge (PCI express gpp port B)
00:03.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890 PCI to PCI bridge (PCI express gpp port C)
00:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890 PCI to PCI bridge (PCI express gpp port D)
00:09.0 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] RD890 PCI to PCI bridge (PCI express gpp port H)

an NetXtreme II BCM5709 gets:

internal error: Device 0000:23:00.0 is behind a switch lacking ACS and cannot be assigned

I'd be grateful for a clarification on which hardware here is no good so I can try to eliminate it - that is if it's hardware issue.


Version-Release number of selected component (if applicable):

libvirt-daemon-driver-interface-1.2.8-16.el7_1.3.x86_64
libvirt-daemon-driver-network-1.2.8-16.el7_1.3.x86_64
libvirt-daemon-driver-nodedev-1.2.8-16.el7_1.3.x86_64
libvirt-daemon-driver-nwfilter-1.2.8-16.el7_1.3.x86_64
libvirt-daemon-driver-qemu-1.2.8-16.el7_1.3.x86_64
libvirt-daemon-driver-secret-1.2.8-16.el7_1.3.x86_64
libvirt-daemon-driver-storage-1.2.8-16.el7_1.3.x86_64
libvirt-daemon-kvm-1.2.8-16.el7_1.3.x86_64
3.10.0-229.11.1.el7.x86_64

How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 2 Laine Stump 2015-08-25 15:24:08 UTC
Yeah, the ACS check is a relic of pre-vfio device assignment that wasn't noticed when adding support for vfio. It needs to be bypassed when vfio is used for device assignment. I'll work up a patch for it.

Comment 3 Laine Stump 2015-08-26 06:08:58 UTC
Posted this patch upstream for review. *very* simple, which has me wondering what I did wrong :-)

https://www.redhat.com/archives/libvir-list/2015-August/msg00890.html

Comment 4 lejeczek 2015-08-26 10:57:31 UTC
ok, many thanks.
Trying with relaxed_acs_check = 1 also fails, throwing different errors, or rather almost no error:

internal error: unable to execute QEMU command 'device_add': Device initialization failed.

I'm trying simply to attach this:

<hostdev mode='subsystem' type='pci' managed='yes'>
  <source>
    <address domain='0x0' bus='0x24' slot='0x0' function='0x1'/>
  </source>
</hostdev>

virsh # nodedev-dumpxml pci_0000_24_00_1
<device>
  <name>pci_0000_24_00_1</name>
  <path>/sys/devices/pci0000:20/0000:20:02.0/0000:21:00.0/0000:22:04.0/0000:24:00.1</path>
  <parent>pci_0000_22_04_0</parent>
  <driver>
    <name>vfio-pci</name>
  </driver>
  <capability type='pci'>
    <domain>0</domain>
    <bus>36</bus>
    <slot>0</slot>
    <function>1</function>
    <product id='0x1639'>NetXtreme II BCM5709 Gigabit Ethernet</product>
    <vendor id='0x14e4'>Broadcom Corporation</vendor>
    <iommuGroup number='27'>
      <address domain='0x0000' bus='0x22' slot='0x04' function='0x0'/>
      <address domain='0x0000' bus='0x24' slot='0x00' function='0x0'/>
      <address domain='0x0000' bus='0x24' slot='0x00' function='0x1'/>
    </iommuGroup>
    <pci-express>
      <link validity='cap' port='0' speed='5' width='4'/>
      <link validity='sta' speed='5' width='4'/>
    </pci-express>
  </capability>
</device>

Comment 5 Laine Stump 2015-08-26 18:30:27 UTC
Pushed this upstream:

commit 108d591b1144bc6cb5d1199f6fc23ee972b76e86
Author: Laine Stump <laine>
Date:   Wed Aug 26 02:04:23 2015 -0400

    hostdev: skip ACS check when using VFIO for device assignment
    
    The ACS checks are meaningless when using the more modern VFIO driver
    for device assignment since VFIO has its own more complete and exact
    checks, but I didn't realize that when I added support for VFIO. This
    patch eliminates the ACS check when preparing PCI devices for
    assignment if VFIO is being used.

Comment 8 hongming 2015-09-09 09:19:47 UTC
Verify it as follows.

# rpm -q libvirt
libvirt-1.2.17-8.el7.x86_64

# cat /etc/libvirt/qemu.conf |grep relax
# to guests. By setting relaxed_acs_check to 1 such devices will be allowed to
#relaxed_acs_check = 1

# virsh nodedev-dumpxml pci_0000_03_00_0
<device>
  <name>pci_0000_03_00_0</name>
  <path>/sys/devices/pci0000:00/0000:00:01.0/0000:03:00.0</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>0</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='0x0'/>
      <address domain='0x0000' bus='0x03' slot='0x10' function='0x2'/>
      <address domain='0x0000' bus='0x03' slot='0x10' function='0x4'/>
      <address domain='0x0000' bus='0x03' slot='0x10' function='0x6'/>
      <address domain='0x0000' bus='0x03' slot='0x11' function='0x0'/>
      <address domain='0x0000' bus='0x03' slot='0x11' function='0x2'/>
      <address domain='0x0000' bus='0x03' slot='0x11' function='0x4'/>
    </capability>
    <iommuGroup number='14'>
      <address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </iommuGroup>
    <pci-express>
      <link validity='cap' port='247' speed='2.5' width='4'/>
      <link validity='sta' speed='2.5' width='1'/>
    </pci-express>
  </capability>
</device>


# virsh edit r7 (Add the following VF xml to guest)
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x10' function='0x0'/>
      </source>
    </hostdev>

Domain r7 XML configuration edited.

# virsh start r7
Domain r7 started

# virsh dumpxml r7|grep /hostdev -B7
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x10' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </hostdev>

Comment 9 hongming 2015-09-10 03:29:39 UTC
Test hotplug scenario.The result is expected.

[root@sriov1 /]# cat /etc/libvirt/qemu.conf |grep relax
# to guests. By setting relaxed_acs_check to 1 such devices will be allowed to
#relaxed_acs_check = 1


[root@sriov1 /]# 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)

[root@sriov1 /]# virsh start r7
Domain r7 started

[root@sriov1 ~]# cat hostdev.xml 
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x03' slot='0x10' function='0x0'/>
</source>
</hostdev>

[root@sriov1 ~]# cat hostdev1.xml 
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x03' slot='0x10' function='0x1'/>
</source>
</hostdev>

[root@sriov1 ~]# cat hostdev2.xml 
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x03' slot='0x10' function='0x2'/>
</source>
</hostdev>

[root@sriov1 ~]# virsh attach-device r7 hostdev.xml 
Device attached successfully

[root@sriov1 ~]# virsh attach-device r7 hostdev1.xml 
Device attached successfully

[root@sriov1 ~]# virsh attach-device r7 hostdev2.xml 
Device attached successfully

[root@sriov1 ~]# virsh dumpxml r7|grep /hostdev -B7
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x10' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x10' function='0x1'/>
      </source>
      <alias name='hostdev1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x10' function='0x2'/>
      </source>
      <alias name='hostdev2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
    </hostdev>

Comment 10 hongming 2015-09-10 03:47:05 UTC
Hi laine  

Do we need to verify the bug using NetXtreme II BCM5709 ?

Thanks
hongming

Comment 11 hongming 2015-09-10 05:35:57 UTC
The network devices in the verification from Comment8 and Comment9 is a intel 82576 with ACS capabilites.


Verify it using a intel 82576 without ACS as follows.

1) reproduce the bug using libvirt-1.2.17-6.el7.x86_64
# 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)
10:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
10:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
11:10.0 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
11:10.1 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
11:10.2 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)
11:10.3 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)


# rpm -q libvirt
libvirt-1.2.17-6.el7.x86_64

# cat /etc/libvirt/qemu.conf |grep relax
# to guests. By setting relaxed_acs_check to 1 such devices will be allowed to
#relaxed_acs_check = 1

# virsh dumpxml r7|grep /hostdev -B5
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x0f' slot='0x10' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </hostdev>

# virsh start r7
error: Failed to start domain r7
error: Requested operation is not valid: PCI device 0000:0f:10.0 is not assignable


2) Verify it using libvirt-1.2.17-8.el7.x86_64

# cat /etc/libvirt/qemu.conf |grep relax
# to guests. By setting relaxed_acs_check to 1 such devices will be allowed to
#relaxed_acs_check = 1

# virsh dumpxml r7|grep /hostdev -B5
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x0f' slot='0x10' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </hostdev>

# virsh start r7
error: Failed to start domain r7
error: internal error: process exited while connecting to monitor: 2015-09-10T05:13:47.479416Z qemu-kvm: -device vfio-pci,host=0f:10.0,id=hostdev0,bus=pci.0,addr=0x8: vfio: error, group 24 is not viable, please ensure all devices within the iommu_group are bound to their vfio bus driver.
2015-09-10T05:13:47.479469Z qemu-kvm: -device vfio-pci,host=0f:10.0,id=hostdev0,bus=pci.0,addr=0x8: vfio: failed to get group 24
2015-09-10T05:13:47.479504Z qemu-kvm: -device vfio-pci,host=0f:10.0,id=hostdev0,bus=pci.0,addr=0x8: Device initialization failed
2015-09-10T05:13:47.479518Z qemu-kvm: -device vfio-pci,host=0f:10.0,id=hostdev0,bus=pci.0,addr=0x8: Device 'vfio-pci' could not be initialized


Because the VF and its PF in the same iommu group 24 as follows, there exists a Bug 1046838 - [Intel 7.1 Bug] PF and VF are in the same iommu_group. Now it is failed to pci passthrough. The device in Comment8 and Comment9 is a 82576 with ACS , its VFs are each alone in their own group.


# virsh nodedev-dumpxml pci_0000_0f_10_0
<device>
  <name>pci_0000_0f_10_0</name>
  <path>/sys/devices/pci0000:00/0000:00:1c.6/0000:0c:00.0/0000:0d:02.0/0000:0f:10.0</path>
  <parent>pci_0000_0d_02_0</parent>
  <driver>
    <name>igbvf</name>
  </driver>
  <capability type='pci'>
    <domain>0</domain>
    <bus>15</bus>
    <slot>16</slot>
    <function>0</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='0x0'/>
    </capability>
    <iommuGroup number='24'>
      <address domain='0x0000' bus='0x0d' slot='0x02' function='0x0'/>
      <address domain='0x0000' bus='0x0e' slot='0x00' function='0x0'/>
      <address domain='0x0000' bus='0x0e' slot='0x00' function='0x1'/>
      <address domain='0x0000' bus='0x0f' slot='0x10' function='0x0'/>
      <address domain='0x0000' bus='0x0f' slot='0x10' function='0x1'/>
      <address domain='0x0000' bus='0x0f' slot='0x10' function='0x2'/>
      <address domain='0x0000' bus='0x0f' slot='0x10' function='0x3'/>
    </iommuGroup>
    <pci-express>
      <link validity='cap' port='2' speed='2.5' width='4'/>
      <link validity='sta' width='0'/>
    </pci-express>
  </capability>
</device>


# virsh nodedev-dumpxml pci_0000_0e_00_0
<device>
  <name>pci_0000_0e_00_0</name>
  <path>/sys/devices/pci0000:00/0000:00:1c.6/0000:0c:00.0/0000:0d:02.0/0000:0e:00.0</path>
  <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>0</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='0x0'/>
      <address domain='0x0000' bus='0x0f' slot='0x10' function='0x2'/>
    </capability>
    <iommuGroup number='24'>
      <address domain='0x0000' bus='0x0d' slot='0x02' function='0x0'/>
      <address domain='0x0000' bus='0x0e' slot='0x00' function='0x0'/>
      <address domain='0x0000' bus='0x0e' slot='0x00' function='0x1'/>
      <address domain='0x0000' bus='0x0f' slot='0x10' function='0x0'/>
      <address domain='0x0000' bus='0x0f' slot='0x10' function='0x1'/>
      <address domain='0x0000' bus='0x0f' slot='0x10' function='0x2'/>
      <address domain='0x0000' bus='0x0f' slot='0x10' function='0x3'/>
    </iommuGroup>
    <pci-express>
      <link validity='cap' port='2' speed='2.5' width='4'/>
      <link validity='sta' speed='2.5' width='4'/>
    </pci-express>
  </capability>
</device>

Comment 12 hongming 2015-09-10 05:41:53 UTC
Also refer to https://bugzilla.redhat.com/show_bug.cgi?id=1046838#c18

Intel has published an update to the E3-1200 spec that calls out the lack of ACS support and recommends that direct device assignment should be avoided on these machines.  The spec update is here:

https://www-ssl.intel.com/content/dam/www/public/us/en/documents/specification-updates/xeon-e3-1200v3-spec-update.pdf

Comment 13 Laine Stump 2015-09-11 18:52:41 UTC
I don't understand all the details, but as far as I do understand it, ACS checks were inadequate in some cases, and too pedantic in others, leading to inability to assign some devices that should have been assignable as well as vice versa.

If you just want to test that the ACS check has been removed from the code, you can try setting up vfio device assignment in an unprivileged libvirt domain (see http://vfio.blogspot.com/2015/09/libvirt-1219-session-mode-device.html ). This definitely will not work with the ACS check present, but will work if its been removed (and you get all the other details correct, e.g. managed='no', setting ulimit -l etc).

If you want to check that a device/bus combination which would have failed the ACS check but can actually be safely assigned is now assignable, you'll need to get some advice on a particular piece of hardware that fits the description. I had thought that *someone* somewhere responded to this patch saying that it solved their problem, but can't find it now (it's possible I imagined it)

The person who filed this bug will not get relief from this patch by itself, because they actually have multiple devices in the same IOMMU group, so simply eliminating the ACS check isn't going to be enough - they'll need to switch to "managed='no'", and manually unbind all three of the devices in the IOMMU group from their host drivers, i.e. the XML should be changed to this:

<hostdev mode='subsystem' type='pci' managed='no'>
  <source>
    <address domain='0x0' bus='0x24' slot='0x0' function='0x1'/>
  </source>
</hostdev>

and prior to attempting the device assignment, they need to run this:

virsh nodedev-detach pci_0000_22_04_0
virsh nodedev-detach pci_0000_24_00_0
virsh nodedev-detach pci_0000_24_00_1

Of course this would mean that the devices at 22:04.0 and 24:00.0 wouldn't be usable by either the host or any other guests, which probably isn't what they want, but VFIO has apparently determined that is unsafe (due to the possibility of the host/guest that controls one of the devices using it to examing/alter the DMA space of another device that is being used by a different guest or the host).

Comment 14 hongming 2015-09-23 09:10:07 UTC
Verify it as follows. The result is expected.Move its status to VERIFIED.


[root@sriov1 ~]# rpm -q libvirt
libvirt-1.2.17-9.el7.x86_64

[root@sriov1 ~]# virsh nodedev-detach pci_0000_03_10_0 --driver vfio
Device pci_0000_03_10_0 detached

[root@sriov1 ~]# virsh nodedev-dumpxml pci_0000_03_10_0
<device>
  <name>pci_0000_03_10_0</name>
  <path>/sys/devices/pci0000:00/0000:00:01.0/0000:03:10.0</path>
  <parent>pci_0000_00_01_0</parent>
  <driver>
    <name>vfio-pci</name>
  </driver>
  <capability type='pci'>
    <domain>0</domain>
    <bus>3</bus>
    <slot>16</slot>
    <function>0</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='0x0'/>
    </capability>
    <iommuGroup number='25'>
      <address domain='0x0000' bus='0x03' slot='0x10' function='0x0'/>
    </iommuGroup>
    <pci-express>
      <link validity='cap' port='0' speed='2.5' width='4'/>
      <link validity='sta' width='0'/>
    </pci-express>
  </capability>
</device>

[root@sriov1 ~]# grep test /etc/security/limits.conf
test  hard   memlock  unlimited
test  soft   memlock  unlimited


[root@sriov1 ~]# ll /dev/vfio/25
crw-------. 1 root root 245, 0 Sep 23 16:45 /dev/vfio/25

[root@sriov1 ~]# chown test:test /dev/vfio/25

[root@sriov1 ~]# ll /dev/vfio/25
crw-------. 1 test test 245, 0 Sep 23 16:45 /dev/vfio/25

[root@sriov1 ~]# su - test
Last login: Wed Sep 23 16:53:32 CST 2015 on pts/0

[test@sriov1 root]$ ulimit -l
unlimited

[test@sriov1 ~]$ virsh start r7.1
Domain r7.1 started

[test@sriov1 ~]$ cat hostdev.xml
<hostdev mode='subsystem' type='pci' managed='no'>
 <driver name='vfio'/>
 <source>
  <address domain='0x0000' bus='0x03' slot='0x10' function='0x0'/>
 </source>
</hostdev>

[test@sriov1 ~]$ virsh attach-device r7.1 hostdev.xml
Device attached successfully

[test@sriov1 ~]$ virsh dumpxml r7.1|grep /hostdev -B7
    <hostdev mode='subsystem' type='pci' managed='no'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x10' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </hostdev>

Comment 16 errata-xmlrpc 2015-11-19 06:52:41 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2015-2202.html


Note You need to log in before you can comment on or make changes to this bug.