linux/drivers/pci
Shijith Thotton e434e54d3f PCI: hotplug: Add OCTEON PCI hotplug controller driver
Add a PCI hotplug controller driver for the OCTEON PCIe device. The OCTEON
PCIe device is a multi-function device where function 0 serves as the PCI
hotplug controller.

There is an out-of-band management console interface to firmware running on
function 0 whereby an administrator can disable functions to save power or
enable them with one of several personalities (virtio-net, virtio-crypto,
NVMe, etc) for the other functions.  Function 0 initiates hotplug events
handled by this driver when the other functions are enabled or disabled.

                 +--------------------------------+
                 |           Root Port            |
                 +--------------------------------+
                                 |
                                PCIe
                                 |
  +---------------------------------------------------------------+
  |              OCTEON PCIe Multifunction Device                 |
  +---------------------------------------------------------------+
               |                    |              |            |
               |                    |              |            |
  +---------------------+  +----------------+  +-----+  +----------------+
  |      Function 0     |  |   Function 1   |  | ... |  |   Function 7   |
  | (Hotplug controller)|  | (Hotplug slot) |  |     |  | (Hotplug slot) |
  +---------------------+  +----------------+  +-----+  +----------------+
               |
               |
  +-------------------------+
  |   Controller Firmware   |
  +-------------------------+

The hotplug controller driver enables hotplugging of non-controller
functions within the same device. During probing, the driver removes
the non-controller functions and registers them as PCI hotplug slots.
These slots are added back by the driver, only upon request from the
device firmware.

The controller uses MSI-X interrupts to notify the host of hotplug
events initiated by the OCTEON firmware. Additionally, the driver
allows users to enable or disable individual functions via sysfs slot
entries, as provided by the PCI hotplug framework.

Link: https://lore.kernel.org/r/20241111134523.2796699-1-sthotton@marvell.com
Co-developed-by: Vamsi Attunuru <vattunuru@marvell.com>
Signed-off-by: Vamsi Attunuru <vattunuru@marvell.com>
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
[bhelgaas: use pci_info() when possible]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
2024-11-13 17:51:39 -06:00
..
controller pci-v6.12-changes 2024-09-23 12:47:06 -07:00
endpoint PCI: Pass domain number to pci_bus_release_domain_nr() explicitly 2024-09-13 22:12:29 +00:00
hotplug PCI: hotplug: Add OCTEON PCI hotplug controller driver 2024-11-13 17:51:39 -06:00
msi Switch ARM/ARM64 over to the modern per device MSI domains: 2024-07-22 14:02:19 -07:00
pcie PCI/AER: Use PCI_DEVID() macro in aer_inject() 2024-09-01 17:05:45 +00:00
pwrctl pci-v6.12-changes 2024-09-23 12:47:06 -07:00
switch
access.c
ats.c pci-v6.12-changes 2024-09-23 12:47:06 -07:00
bus.c pci-v6.11-changes 2024-07-19 19:03:18 -07:00
devres.c pci-v6.12-changes 2024-09-23 12:47:06 -07:00
doe.c
ecam.c
host-bridge.c
iomap.c PCI: Fix typos 2024-09-19 14:24:00 -05:00
iov.c
irq.c
Kconfig PCI/NPEM: Add Native PCIe Enclosure Management support 2024-09-04 17:25:12 -05:00
Makefile PCI/NPEM: Add Native PCIe Enclosure Management support 2024-09-04 17:25:12 -05:00
mmap.c
npem.c PCI/NPEM: Add _DSM PCIe SSD status LED management 2024-09-06 11:37:24 -05:00
of.c pci-v6.11-changes 2024-07-19 19:03:18 -07:00
of_property.c PCI: of_property: Add interrupt-controller property in PCI device nodes 2024-07-08 17:40:30 -06:00
p2pdma.c
pci-acpi.c ACPI: RISC-V: Implement PCI related functionality 2024-08-27 15:48:35 +02:00
pci-bridge-emul.c PCI: Rename CRS Completion Status to RRS 2024-09-10 19:52:30 -05:00
pci-bridge-emul.h
pci-driver.c PCI: Make pci_bus_type constant 2024-08-23 12:46:22 -05:00
pci-label.c
pci-mid.c
pci-pf-stub.c PCI: Add missing MODULE_DESCRIPTION() macros 2024-07-08 08:35:35 +00:00
pci-stub.c PCI: Add missing MODULE_DESCRIPTION() macros 2024-07-08 08:35:35 +00:00
pci-sysfs.c s390/pci: Stop usurping pdev->dev.groups 2024-08-09 14:58:27 -05:00
pci.c pci-v6.12-changes 2024-09-23 12:47:06 -07:00
pci.h Merge branch 'pci/misc' 2024-09-19 14:25:34 -05:00
probe.c Merge branch 'pci/controller/qcom' 2024-09-19 14:25:32 -05:00
proc.c
quirks.c Merge branch 'pci/quirks' 2024-09-19 14:25:34 -05:00
remove.c pci-v6.12-changes 2024-09-23 12:47:06 -07:00
rom.c
search.c
setup-bus.c PCI: Relax bridge window tail sizing rules 2024-06-12 14:51:30 -05:00
setup-res.c
slot.c
syscall.c
vc.c
vgaarb.c
vpd.c
xen-pcifront.c