linux/drivers/pci/hotplug
Jiang Liu 5ba113f7c4 PCI: acpiphp: Handle PCIe ports without native hotplug capability
Commit 0d52f54e2e (PCI / ACPI: Make acpiphp
ignore root bridges using PCIe native hotplug) added code that made the
acpiphp driver completely ignore PCIe root complexes for which the kernel
had been granted control of the native PCIe hotplug feature by the BIOS
through _OSC. Later commit 619a5182d1
"PCI hotplug: Always allow acpiphp to handle non-PCIe bridges" relaxed
the constraints to allow acpiphp driver handle non-PCIe bridges under
such a complex.  The constraint needs to be relaxed further to allow
acpiphp driver to handle PCIe ports without native PCIe hotplug capability.

Some MR-IOV switch chipsets, such PLX8696, support multiple virtual PCIe
switches and may migrate downstream ports among virtual switches.  To
migrate a downstream port from the source virtual switch to the target, the
port needs to be hot-removed from the source and hot-added into the target.
The pciehp driver can't be used here because there are no slots within the
virtual PCIe switch.  So acpiphp driver is used to support downstream port
migration.  A typical configuration is as below:

    [Root without native PCIe HP]
        [Upstream port of vswitch without native PCIe HP]
            [Downstream port of vswitch with native PCIe HP]
                [PCIe endpoint]

Here acpiphp driver will be used to handle root ports and upstream port
in the virtual switch, and pciehp driver will be used to handle downstream
ports in the virtual switch.

Signed-off-by: Jiang Liu <liuj97@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
2012-09-24 15:48:37 -06:00
..
acpi_pcihp.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
acpiphp_core.c PCI: acpiphp: merge acpiphp_debug and debug 2012-07-10 17:02:37 -06:00
acpiphp_glue.c PCI: acpiphp: Handle PCIe ports without native hotplug capability 2012-09-24 15:48:37 -06:00
acpiphp_ibm.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
acpiphp.h PCI: acpiphp: merge acpiphp_debug and debug 2012-07-10 17:02:37 -06:00
cpci_hotplug_core.c PCI: hotplug: ensure a consistent return value in error case 2012-07-16 09:25:56 -06:00
cpci_hotplug_pci.c PCI: cpci_hotplug: use generic pci_hp_add_bridge() 2012-06-13 15:42:26 -06:00
cpci_hotplug.h PCI: cpci_hotplug: stop managing hotplug_slot->name 2008-10-22 16:42:39 -07:00
cpcihp_generic.c PCI hotplug: cpcihp: fix debug module parameter to be bool 2012-02-14 08:45:03 -08:00
cpcihp_zt5550.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
cpcihp_zt5550.h
cpqphp_core.c PCI: hotplug: ensure a consistent return value in error case 2012-07-16 09:25:56 -06:00
cpqphp_ctrl.c PCI: Make current and maximum bus speeds part of the PCI core 2010-02-22 16:15:17 -08:00
cpqphp_nvram.c PCI Hotplug: cpqphp: fix comment style 2009-06-11 12:04:08 -07:00
cpqphp_nvram.h
cpqphp_pci.c PCI: cpqhp: use generic pci_hp_add_bridge() 2012-06-13 15:42:26 -06:00
cpqphp_sysfs.c drivers: autoconvert trivial BKL users to private mutex 2010-10-05 15:01:04 +02:00
cpqphp.h PCI: Make current and maximum bus speeds part of the PCI core 2010-02-22 16:15:17 -08:00
fakephp.c PCI: Rename pci_remove_bus_device to pci_stop_and_remove_bus_device 2012-02-27 12:12:18 -08:00
ibmphp_core.c PCI changes for the 3.6 merge window: 2012-07-24 16:17:07 -07:00
ibmphp_ebda.c pci: hotplug: Fix typo in pci 2012-07-24 12:59:30 +02:00
ibmphp_hpc.c PCI hotplug: ibmphp-hpc: semaphore cleanup 2010-10-15 13:09:48 -07:00
ibmphp_pci.c pci: hotplug: Fix typo in pci 2012-07-24 12:59:30 +02:00
ibmphp_res.c ibmphp: Rename add_range() to add_bus_range() to avoid conflict 2010-02-10 17:45:09 -08:00
ibmphp.h PCI: ibmphp: stop managing hotplug_slot->name 2008-10-22 16:42:41 -07:00
Kconfig PCI: drivers/pci/slot.c should depend on CONFIG_SYSFS 2009-06-18 13:57:24 -07:00
Makefile PCI hotplug: acpiphp should be linked after vendor drivers 2009-11-04 08:47:14 -08:00
pci_hotplug_core.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pciehp_acpi.c PCI/pciehp: Use PCI Express Capability accessors 2012-08-23 10:11:11 -06:00
pciehp_core.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
pciehp_ctrl.c PCI: pciehp: Handle push button event asynchronously 2011-12-05 10:21:47 -08:00
pciehp_hpc.c PCI/pciehp: Use PCI Express Capability accessors 2012-08-23 10:11:11 -06:00
pciehp_pci.c PCI: pciehp: use generic pci_hp_add_bridge() 2012-06-13 15:42:26 -06:00
pciehp.h PCI: pciehp: remove unused pciehp_get_max_lnk_width(), pciehp_get_cur_lnk_width() 2012-07-12 15:41:32 -06:00
pcihp_skeleton.c PCI: hotplug: ensure a consistent return value in error case 2012-07-16 09:25:56 -06:00
pcihp_slot.c PCI/hotplug: Use PCI Express Capability accessors 2012-08-23 10:11:11 -06:00
rpadlpar_core.c PCI: Rename pci_remove_bus_device to pci_stop_and_remove_bus_device 2012-02-27 12:12:18 -08:00
rpadlpar_sysfs.c PCI: introduce pci_slot 2008-06-10 14:37:03 -07:00
rpadlpar.h
rpaphp_core.c module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
rpaphp_pci.c PCI hotplug: rpaphp: make debug var unique 2008-10-20 10:54:27 -07:00
rpaphp_slot.c headers: kobject.h redux 2011-01-10 08:51:44 -08:00
rpaphp.h module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
sgi_hotplug.c PCI: sgihp: use generic pci_hp_add_bridge() 2012-06-13 15:42:27 -06:00
shpchp_core.c PCI: hotplug: ensure a consistent return value in error case 2012-07-16 09:25:56 -06:00
shpchp_ctrl.c PCI: shpchp: remove dead code 2012-06-20 17:28:53 -06:00
shpchp_hpc.c PCI hotplug: shpchp: don't blindly claim non-AMD 0x7450 device IDs 2011-11-14 09:43:14 -08:00
shpchp_pci.c PCI: shpchp: use generic pci_hp_add_bridge() 2012-06-13 15:42:26 -06:00
shpchp_sysfs.c PCI: replace struct pci_bus secondary/subordinate with busn_res 2012-06-13 15:42:22 -06:00
shpchp.h module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30