linux/arch/s390/pci
Niklas Schnelle b97bf44f99 s390/pci: fix PF/VF linking on hot plug
Currently there are four places in which a PCI function is scanned
and made available to drivers:
 1. In pci_scan_root_bus() as part of the initial zbus
    creation.
 2. In zpci_bus_add_devices() when registering
    a device in configured state on a zbus that has already been
    scanned.
 3. When a function is already known to zPCI (in reserved/standby state)
    and configuration is triggered through firmware by PEC 0x301.
 4. When a device is already known to zPCI (in standby/reserved state)
    and configuration is triggered from within Linux using
    enable_slot().

The PF/VF linking step and setting of pdev->is_virtfn introduced with
commit e5794cf1a2 ("s390/pci: create links between PFs and VFs") was
only triggered for the second case, which is where VFs created through
sriov_numvfs usually land. However unlike some other platforms but like
POWER VFs can be individually enabled/disabled through
/sys/bus/pci/slots.

Fix this by doing VF setup as part of pcibios_bus_add_device() which is
called in all of the above cases.

Finally to remove the PF/VF links call the common code
pci_iov_remove_virtfn() function to remove linked VFs.
This takes care of the necessary sysfs cleanup.

Fixes: e5794cf1a2 ("s390/pci: create links between PFs and VFs")
Cc: <stable@vger.kernel.org> # 5.8: 2f0230b2f2d5: s390/pci: re-introduce zpci_remove_device()
Cc: <stable@vger.kernel.org> # 5.8
Acked-by: Pierre Morel <pmorel@linux.ibm.com>
Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
2020-08-17 13:17:34 +02:00
..
Makefile s390/pci: create zPCI bus 2020-04-28 13:49:46 +02:00
pci.c s390/pci: fix PF/VF linking on hot plug 2020-08-17 13:17:34 +02:00
pci_bus.c s390/pci: fix PF/VF linking on hot plug 2020-08-17 13:17:34 +02:00
pci_bus.h s390/pci: fix PF/VF linking on hot plug 2020-08-17 13:17:34 +02:00
pci_clp.c s390/pci: Log new handle in clp_disable_fh() 2020-05-28 12:26:03 +02:00
pci_debug.c locking/atomic, s390/pci: Remove redundant casts 2019-06-03 12:32:57 +02:00
pci_dma.c dma-mapping updates for 5.4: 2019-09-19 13:27:23 -07:00
pci_event.c s390/pci: re-introduce zpci_remove_device() 2020-08-17 13:17:25 +02:00
pci_insn.c s390/pci: provide support for MIO instructions 2019-04-29 10:47:01 +02:00
pci_irq.c s390/pci: do not set affinity for floating irqs 2020-04-22 16:20:55 +02:00
pci_mmio.c s390/pci: clarify comment in s390_mmio_read/write 2020-07-27 10:33:24 +02:00
pci_sysfs.c s390/pci: create zPCI bus 2020-04-28 13:49:46 +02:00