aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/hotplug/acpiphp.h
diff options
context:
space:
mode:
authorJiang Liu <liuj97@gmail.com>2013-04-12 01:44:26 -0400
committerBjorn Helgaas <bhelgaas@google.com>2013-04-12 18:52:01 -0400
commit3b63aaa70e1ccc4b66d60acc78da09700706a703 (patch)
tree6255864d51d65ab0d833e197a9ef9080d83a68de /drivers/pci/hotplug/acpiphp.h
parent6037a803b05eef9943fb64982e19964007fb7478 (diff)
PCI: acpiphp: Do not use ACPI PCI subdriver mechanism
Previously the acpiphp driver registered itself as an ACPI PCI subdriver, so its callbacks were invoked when creating/destroying PCI root buses to manage ACPI-based PCI hotplug slots. But it doesn't handle P2P bridge hotplug events, so it will cause strange behaviour if there are hotplug slots associated with a hot-removed P2P bridge. This patch fixes this issue by: 1) Directly hooking into PCI core to update hotplug slot devices when creating/destroying PCI buses through: pci_{add|remove}_bus() -> acpi_pci_{add|remove}_bus() 2) Getting rid of unused ACPI PCI subdriver-related code It also cleans up unused code in the acpiphp driver. [bhelgaas: keep acpi_pci_add_bus() stub for CONFIG_ACPI=n] Signed-off-by: Jiang Liu <jiang.liu@huawei.com> Signed-off-by: Yijing Wang <wangyijing@huawei.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Yinghai Lu <yinghai@kernel.org> Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com> Cc: Toshi Kani <toshi.kani@hp.com>
Diffstat (limited to 'drivers/pci/hotplug/acpiphp.h')
-rw-r--r--drivers/pci/hotplug/acpiphp.h3
1 files changed, 0 insertions, 3 deletions
diff --git a/drivers/pci/hotplug/acpiphp.h b/drivers/pci/hotplug/acpiphp.h
index b06ae681d5b7..abd48d309ad0 100644
--- a/drivers/pci/hotplug/acpiphp.h
+++ b/drivers/pci/hotplug/acpiphp.h
@@ -119,7 +119,6 @@ struct acpiphp_slot {
119 */ 119 */
120struct acpiphp_func { 120struct acpiphp_func {
121 struct acpiphp_slot *slot; /* parent */ 121 struct acpiphp_slot *slot; /* parent */
122 struct acpiphp_bridge *bridge; /* Ejectable PCI-to-PCI bridge */
123 122
124 struct list_head sibling; 123 struct list_head sibling;
125 struct notifier_block nb; 124 struct notifier_block nb;
@@ -176,8 +175,6 @@ extern int acpiphp_register_hotplug_slot(struct acpiphp_slot *slot);
176extern void acpiphp_unregister_hotplug_slot(struct acpiphp_slot *slot); 175extern void acpiphp_unregister_hotplug_slot(struct acpiphp_slot *slot);
177 176
178/* acpiphp_glue.c */ 177/* acpiphp_glue.c */
179extern int acpiphp_glue_init (void);
180extern void acpiphp_glue_exit (void);
181typedef int (*acpiphp_callback)(struct acpiphp_slot *slot, void *data); 178typedef int (*acpiphp_callback)(struct acpiphp_slot *slot, void *data);
182 179
183extern int acpiphp_enable_slot (struct acpiphp_slot *slot); 180extern int acpiphp_enable_slot (struct acpiphp_slot *slot);