mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 14:45:24 +00:00
Fix PCIe FLR detection
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()
This commit is contained in:
parent
f4e7157716
commit
a49cf8a57d
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user