diff options
Diffstat (limited to 'drivers/pci/hotplug/acpiphp_glue.c')
| -rw-r--r-- | drivers/pci/hotplug/acpiphp_glue.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c index 648596d469f6..91156f85a926 100644 --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c | |||
| @@ -700,9 +700,10 @@ cleanup_p2p_bridge(acpi_handle handle, u32 lvl, void *context, void **rv) | |||
| 700 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, (u32)1, | 700 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, (u32)1, |
| 701 | cleanup_p2p_bridge, NULL, NULL); | 701 | cleanup_p2p_bridge, NULL, NULL); |
| 702 | 702 | ||
| 703 | if (!(bridge = acpiphp_handle_to_bridge(handle))) | 703 | bridge = acpiphp_handle_to_bridge(handle); |
| 704 | return AE_OK; | 704 | if (bridge) |
| 705 | cleanup_bridge(bridge); | 705 | cleanup_bridge(bridge); |
| 706 | |||
| 706 | return AE_OK; | 707 | return AE_OK; |
| 707 | } | 708 | } |
| 708 | 709 | ||
| @@ -715,9 +716,19 @@ static void remove_bridge(acpi_handle handle) | |||
| 715 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, | 716 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, |
| 716 | (u32)1, cleanup_p2p_bridge, NULL, NULL); | 717 | (u32)1, cleanup_p2p_bridge, NULL, NULL); |
| 717 | 718 | ||
| 719 | /* | ||
| 720 | * On root bridges with hotplug slots directly underneath (ie, | ||
| 721 | * no p2p bridge inbetween), we call cleanup_bridge(). | ||
| 722 | * | ||
| 723 | * The else clause cleans up root bridges that either had no | ||
| 724 | * hotplug slots at all, or had a p2p bridge underneath. | ||
| 725 | */ | ||
| 718 | bridge = acpiphp_handle_to_bridge(handle); | 726 | bridge = acpiphp_handle_to_bridge(handle); |
| 719 | if (bridge) | 727 | if (bridge) |
| 720 | cleanup_bridge(bridge); | 728 | cleanup_bridge(bridge); |
| 729 | else | ||
| 730 | acpi_remove_notify_handler(handle, ACPI_SYSTEM_NOTIFY, | ||
| 731 | handle_hotplug_event_bridge); | ||
| 721 | } | 732 | } |
| 722 | 733 | ||
| 723 | static struct pci_dev * get_apic_pci_info(acpi_handle handle) | 734 | static struct pci_dev * get_apic_pci_info(acpi_handle handle) |
