diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-07-07 02:01:26 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-07-07 02:01:26 -0400 |
| commit | 032f82786f9be4635acaa5f77feca175a4ac5fe1 (patch) | |
| tree | 11ce43c1086d3dec43c92b0a2cc740240b338fb7 /drivers/pci/hotplug/acpiphp_glue.c | |
| parent | 46ac22bab42cc868b9c1d0e915ddbc8e8065a44d (diff) | |
| parent | b7279469d66b55119784b8b9529c99c1955fe747 (diff) | |
Merge commit 'v2.6.26-rc9' into sched/devel
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) |
