linux-stable/drivers/pci
Chiqijun 411e2a43d2 PCI: Work around Huawei Intelligent NIC VF FLR erratum
pcie_flr() starts a Function Level Reset (FLR), waits 100ms (the maximum
time allowed for FLR completion by PCIe r5.0, sec 6.6.2), and waits for the
FLR to complete.  It assumes the FLR is complete when a config read returns
valid data.

When we do an FLR on several Huawei Intelligent NIC VFs at the same time,
firmware on the NIC processes them serially.  The VF may respond to config
reads before the firmware has completed its reset processing.  If we bind a
driver to the VF (e.g., by assigning the VF to a virtual machine) in the
interval between the successful config read and completion of the firmware
reset processing, the NIC VF driver may fail to load.

Prevent this driver failure by waiting for the NIC firmware to complete its
reset processing.  Not all NIC firmware supports this feature.

[bhelgaas: commit log]
Link: https://support.huawei.com/enterprise/en/doc/EDOC1100063073/87950645/vm-oss-occasionally-fail-to-load-the-in200-driver-when-the-vf-performs-flr
Link: https://lore.kernel.org/r/20210414132301.1793-1-chiqijun@huawei.com
Signed-off-by: Chiqijun <chiqijun@huawei.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Alex Williamson <alex.williamson@redhat.com>
2021-05-24 18:42:26 -05:00
..
controller pci-v5.13-changes 2021-05-05 13:24:11 -07:00
endpoint Merge branch 'remotes/lorenzo/pci/endpoint' 2021-05-04 10:43:27 -05:00
hotplug more s390 updates for 5.13 merge window 2021-05-06 14:39:50 -07:00
pcie Merge branch 'pci/kernel-doc' 2021-05-04 10:43:24 -05:00
switch PCI: switchtec: Add missing __iomem tag to fix sparse warnings 2020-07-31 11:23:45 -05:00
access.c Merge branch 'pci/misc' 2020-08-05 18:24:16 -05:00
ats.c PCI: Fix kernel-doc errors 2021-03-11 17:37:20 -06:00
bus.c PCI: Add device even if driver attach failed 2020-07-07 17:33:41 -05:00
ecam.c PCI: Unify ECAM constants in native PCI Express drivers 2020-12-10 14:55:49 -06:00
host-bridge.c
iov.c PCI/IOV: Add sysfs MSI-X vector assignment interface 2021-04-04 10:26:30 +03:00
irq.c PCI: Remove unused pci_lost_interrupt() 2020-07-29 14:25:18 -05:00
Kconfig pci-v5.10-changes 2020-10-22 12:41:00 -07:00
Makefile PCI: Apply CONFIG_PCI_DEBUG to entire drivers/pci hierarchy 2021-02-09 15:10:20 -06:00
mmap.c
msi.c PCI/MSI: Document the various ways of ending up with NO_MSI 2021-04-20 14:11:22 +01:00
of.c PCI: Fix kernel-doc errors 2021-03-11 17:37:20 -06:00
p2pdma.c RDMA 5.11 pull request 2020-12-16 13:42:26 -08:00
pci-acpi.c PCI/ACPI: Fix acpi_pci_set_power_state() debug message 2021-04-01 14:54:43 -05:00
pci-bridge-emul.c PCI: pci-bridge-emul: Fix array overruns, improve safety 2021-02-17 17:25:31 -06:00
pci-bridge-emul.h
pci-driver.c Merge branch 'pci/misc' 2020-12-15 15:11:08 -06:00
pci-label.c PCI/sysfs: Use sysfs_emit() and sysfs_emit_at() in "show" functions 2021-04-29 10:07:31 -05:00
pci-mid.c
pci-pf-stub.c PCI/IOV: Simplify pci-pf-stub with module_pci_driver() 2020-09-17 12:40:20 -05:00
pci-stub.c
pci-sysfs.c pci-v5.13-changes 2021-05-05 13:24:11 -07:00
pci.c PCI: Add pci_reset_bus_function() Secondary Bus Reset interface 2021-05-24 17:30:02 -05:00
pci.h pci-v5.13-changes 2021-05-05 13:24:11 -07:00
probe.c Merge branch 'remotes/lorenzo/pci/msi' 2021-05-04 10:43:30 -05:00
proc.c PCI: Revoke mappings like devmem 2021-02-11 15:59:19 +01:00
quirks.c PCI: Work around Huawei Intelligent NIC VF FLR erratum 2021-05-24 18:42:26 -05:00
remove.c PCI/sysfs: Convert "reset" to static attribute 2021-04-27 17:53:20 -05:00
rom.c
search.c PCI: Remove WARN_ON(in_interrupt()) 2021-02-10 16:46:29 -06:00
setup-bus.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
setup-irq.c
setup-res.c PCI: Decline to resize resources if boot config must be preserved 2021-01-12 16:39:52 -06:00
slot.c Merge branch 'pci/misc' 2020-12-15 15:11:08 -06:00
syscall.c PCI: Align checking of syscall user config accessors 2021-01-27 10:41:59 -06:00
vc.c PCI: Fix kerneldoc warnings 2020-08-05 18:23:14 -05:00
vpd.c Merge branch 'pci/sysfs' 2021-05-04 10:43:23 -05:00
xen-pcifront.c swiotlb: remove swiotlb_nr_tbl 2021-03-19 04:58:25 +00:00