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
..
2024-09-19 11:12:49 +02:00
2024-09-27 11:42:03 -07:00
2024-09-27 09:05:18 -07:00
2024-09-27 08:48:37 -07:00
2024-09-27 10:27:22 -07:00
2024-09-27 08:48:37 -07:00
2024-09-26 12:00:25 -07:00
2024-09-17 15:27:01 +02:00
2024-09-18 10:49:45 +02:00
2024-09-27 11:42:03 -07:00
2024-09-26 12:00:25 -07:00
2024-09-19 10:18:15 +02:00
2024-09-28 08:47:46 -07:00
2024-09-19 10:18:15 +02:00
2024-09-29 09:47:33 -07:00
2024-09-09 08:36:23 +02:00
2024-09-27 09:12:51 -07:00
2024-09-29 09:22:34 -07:00
2024-09-26 08:43:17 -07:00
2024-09-25 14:56:40 -07:00
2024-09-24 13:02:06 -07:00
2024-09-23 14:05:10 -07:00
2024-09-26 12:00:25 -07:00
2024-09-26 12:00:25 -07:00
2024-09-26 12:00:25 -07:00
2024-09-29 09:22:34 -07:00
2024-09-26 12:00:25 -07:00
2024-09-23 14:00:46 -07:00
2024-09-09 12:22:06 +02:00
2024-09-29 09:22:34 -07:00
2024-09-11 16:02:54 +02:00
2024-09-26 08:43:17 -07:00
2024-09-26 08:43:17 -07:00
2024-09-26 08:43:17 -07:00
2024-09-27 09:55:30 -07:00
2024-09-04 17:24:58 -05:00