mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
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>
187 lines
4.9 KiB
Plaintext
187 lines
4.9 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# PCI Hotplug support
|
|
#
|
|
|
|
menuconfig HOTPLUG_PCI
|
|
bool "Support for PCI Hotplug"
|
|
depends on PCI && SYSFS
|
|
default y if USB4
|
|
help
|
|
Say Y here if you have a motherboard with a PCI Hotplug controller.
|
|
This allows you to add and remove PCI cards while the machine is
|
|
powered up and running.
|
|
|
|
Thunderbolt/USB4 PCIe tunneling depends on native PCIe hotplug.
|
|
|
|
When in doubt, say N.
|
|
|
|
if HOTPLUG_PCI
|
|
|
|
config HOTPLUG_PCI_COMPAQ
|
|
tristate "Compaq PCI Hotplug driver"
|
|
depends on X86 && PCI_BIOS
|
|
help
|
|
Say Y here if you have a motherboard with a Compaq PCI Hotplug
|
|
controller.
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
module will be called cpqphp.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_COMPAQ_NVRAM
|
|
bool "Save configuration into NVRAM on Compaq servers"
|
|
depends on HOTPLUG_PCI_COMPAQ
|
|
help
|
|
Say Y here if you have a Compaq server that has a PCI Hotplug
|
|
controller. This will allow the PCI Hotplug driver to store the PCI
|
|
system configuration options in NVRAM.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_IBM
|
|
tristate "IBM PCI Hotplug driver"
|
|
depends on X86_IO_APIC && X86 && PCI_BIOS
|
|
help
|
|
Say Y here if you have a motherboard with a IBM PCI Hotplug
|
|
controller.
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
module will be called ibmphp.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_ACPI
|
|
bool "ACPI PCI Hotplug driver"
|
|
depends on HOTPLUG_PCI=y && ((!ACPI_DOCK && ACPI) || (ACPI_DOCK))
|
|
help
|
|
Say Y here if you have a system that supports PCI Hotplug using
|
|
ACPI.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_ACPI_AMPERE_ALTRA
|
|
tristate "ACPI PCI Hotplug driver Ampere Altra extensions"
|
|
depends on HOTPLUG_PCI_ACPI
|
|
depends on HAVE_ARM_SMCCC_DISCOVERY
|
|
help
|
|
Say Y here if you have an Ampere Altra system.
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
module will be called acpiphp_ampere_altra.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_ACPI_IBM
|
|
tristate "ACPI PCI Hotplug driver IBM extensions"
|
|
depends on HOTPLUG_PCI_ACPI
|
|
help
|
|
Say Y here if you have an IBM system that supports PCI Hotplug using
|
|
ACPI.
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
module will be called acpiphp_ibm.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_CPCI
|
|
bool "CompactPCI Hotplug driver"
|
|
help
|
|
Say Y here if you have a CompactPCI system card with CompactPCI
|
|
hotswap support per the PICMG 2.1 specification.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_CPCI_ZT5550
|
|
tristate "Ziatech ZT5550 CompactPCI Hotplug driver"
|
|
depends on HOTPLUG_PCI_CPCI && X86
|
|
help
|
|
Say Y here if you have an Performance Technologies (formerly Intel,
|
|
formerly just Ziatech) Ziatech ZT5550 CompactPCI system card.
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
module will be called cpcihp_zt5550.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_CPCI_GENERIC
|
|
tristate "Generic port I/O CompactPCI Hotplug driver"
|
|
depends on HOTPLUG_PCI_CPCI && X86
|
|
help
|
|
Say Y here if you have a CompactPCI system card that exposes the #ENUM
|
|
hotswap signal as a bit in a system register that can be read through
|
|
standard port I/O.
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
module will be called cpcihp_generic.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_OCTEONEP
|
|
bool "Marvell OCTEON PCI Hotplug driver"
|
|
depends on HOTPLUG_PCI
|
|
help
|
|
Say Y here if you have an OCTEON PCIe device with a hotplug
|
|
controller. This driver enables the non-controller functions of the
|
|
device to be registered as hotplug slots.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_SHPC
|
|
bool "SHPC PCI Hotplug driver"
|
|
help
|
|
Say Y here if you have a motherboard with a SHPC PCI Hotplug
|
|
controller.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_POWERNV
|
|
tristate "PowerPC PowerNV PCI Hotplug driver"
|
|
depends on PPC_POWERNV && EEH
|
|
select OF_DYNAMIC
|
|
help
|
|
Say Y here if you run PowerPC PowerNV platform that supports
|
|
PCI Hotplug
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
module will be called pnv-php.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_RPA
|
|
tristate "RPA PCI Hotplug driver"
|
|
depends on PPC_PSERIES && EEH
|
|
help
|
|
Say Y here if you have a RPA system that supports PCI Hotplug.
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
module will be called rpaphp.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_RPA_DLPAR
|
|
tristate "RPA Dynamic Logical Partitioning for I/O slots"
|
|
depends on HOTPLUG_PCI_RPA
|
|
help
|
|
Say Y here if your system supports Dynamic Logical Partitioning
|
|
for I/O slots.
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
module will be called rpadlpar_io.
|
|
|
|
When in doubt, say N.
|
|
|
|
config HOTPLUG_PCI_S390
|
|
bool "System z PCI Hotplug Support"
|
|
depends on S390 && 64BIT
|
|
help
|
|
Say Y here if you want to use the System z PCI Hotplug
|
|
driver for PCI devices. Without this driver it is not
|
|
possible to access stand-by PCI functions nor to deconfigure
|
|
PCI functions.
|
|
|
|
When in doubt, say Y.
|
|
|
|
endif # HOTPLUG_PCI
|