mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-30 13:03:01 +00: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>
75 lines
1.9 KiB
Makefile
75 lines
1.9 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Makefile for the Linux kernel pci hotplug controller drivers.
|
|
#
|
|
|
|
obj-$(CONFIG_HOTPLUG_PCI) += pci_hotplug.o
|
|
obj-$(CONFIG_HOTPLUG_PCI_COMPAQ) += cpqphp.o
|
|
obj-$(CONFIG_HOTPLUG_PCI_IBM) += ibmphp.o
|
|
|
|
# native drivers should be linked before acpiphp in order to allow the
|
|
# native driver to attempt to bind first. We can then fall back to
|
|
# generic support.
|
|
|
|
obj-$(CONFIG_HOTPLUG_PCI_PCIE) += pciehp.o
|
|
obj-$(CONFIG_HOTPLUG_PCI_CPCI_ZT5550) += cpcihp_zt5550.o
|
|
obj-$(CONFIG_HOTPLUG_PCI_CPCI_GENERIC) += cpcihp_generic.o
|
|
obj-$(CONFIG_HOTPLUG_PCI_SHPC) += shpchp.o
|
|
obj-$(CONFIG_HOTPLUG_PCI_POWERNV) += pnv-php.o
|
|
obj-$(CONFIG_HOTPLUG_PCI_RPA) += rpaphp.o
|
|
obj-$(CONFIG_HOTPLUG_PCI_RPA_DLPAR) += rpadlpar_io.o
|
|
obj-$(CONFIG_HOTPLUG_PCI_ACPI) += acpiphp.o
|
|
obj-$(CONFIG_HOTPLUG_PCI_S390) += s390_pci_hpc.o
|
|
obj-$(CONFIG_HOTPLUG_PCI_OCTEONEP) += octep_hp.o
|
|
|
|
# acpiphp_ibm extends acpiphp, so should be linked afterwards.
|
|
|
|
obj-$(CONFIG_HOTPLUG_PCI_ACPI_AMPERE_ALTRA) += acpiphp_ampere_altra.o
|
|
obj-$(CONFIG_HOTPLUG_PCI_ACPI_IBM) += acpiphp_ibm.o
|
|
|
|
pci_hotplug-objs := pci_hotplug_core.o
|
|
|
|
ifdef CONFIG_HOTPLUG_PCI_CPCI
|
|
pci_hotplug-objs += cpci_hotplug_core.o \
|
|
cpci_hotplug_pci.o
|
|
endif
|
|
ifdef CONFIG_ACPI
|
|
pci_hotplug-objs += acpi_pcihp.o
|
|
endif
|
|
|
|
cpqphp-objs := cpqphp_core.o \
|
|
cpqphp_ctrl.o \
|
|
cpqphp_sysfs.o \
|
|
cpqphp_pci.o
|
|
cpqphp-$(CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM) += cpqphp_nvram.o
|
|
cpqphp-objs += $(cpqphp-y)
|
|
|
|
ibmphp-objs := ibmphp_core.o \
|
|
ibmphp_ebda.o \
|
|
ibmphp_pci.o \
|
|
ibmphp_res.o \
|
|
ibmphp_hpc.o
|
|
|
|
acpiphp-objs := acpiphp_core.o \
|
|
acpiphp_glue.o
|
|
|
|
pnv-php-objs := pnv_php.o
|
|
|
|
rpaphp-objs := rpaphp_core.o \
|
|
rpaphp_pci.o \
|
|
rpaphp_slot.o
|
|
|
|
rpadlpar_io-objs := rpadlpar_core.o \
|
|
rpadlpar_sysfs.o
|
|
|
|
pciehp-objs := pciehp_core.o \
|
|
pciehp_ctrl.o \
|
|
pciehp_pci.o \
|
|
pciehp_hpc.o
|
|
|
|
shpchp-objs := shpchp_core.o \
|
|
shpchp_ctrl.o \
|
|
shpchp_pci.o \
|
|
shpchp_sysfs.o \
|
|
shpchp_hpc.o
|