[libvirt] [PATCH] Fix PCIe FLR detection

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

 



PCIe DevCap register is actually 32 bits, not 16 bits. Since FLR is
bit 28, we clearly are failing to detect FLR support.

Known to fix device reset with some SR-IOV devices.

* src/pci.c: fix pciDetectFunctionLevelReset()
---
 src/pci.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/pci.c b/src/pci.c
index 4030a14..2dc2e1c 100644
--- a/src/pci.c
+++ b/src/pci.c
@@ -321,7 +321,7 @@ pciFindCapabilityOffset(pciDevice *dev, unsigned capability)
 static unsigned
 pciDetectFunctionLevelReset(pciDevice *dev)
 {
-    uint16_t caps;
+    uint32_t caps;
     uint8_t pos;
 
     /* The PCIe Function Level Reset capability allows
@@ -331,7 +331,7 @@ pciDetectFunctionLevelReset(pciDevice *dev)
      * on SR-IOV NICs at the moment.
      */
     if (dev->pcie_cap_pos) {
-        caps = pciRead16(dev, dev->pcie_cap_pos + PCI_EXP_DEVCAP);
+        caps = pciRead32(dev, dev->pcie_cap_pos + PCI_EXP_DEVCAP);
         if (caps & PCI_EXP_DEVCAP_FLR) {
             VIR_DEBUG("%s %s: detected PCIe FLR capability", dev->id, dev->name);
             return 1;
-- 
1.6.2.5

--
Libvir-list mailing list
Libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]