linux-next: manual merge of the pm tree with the pci tree

From: Stephen Rothwell
Date: Thu Feb 14 2013 - 20:23:33 EST


Hi Rafael,

Today's linux-next merge of the pm tree got conflicts in
drivers/acpi/scan.c and drivers/pci/hotplug/acpiphp_glue.c between
commits 668192b67820 ("PCI: acpiphp: Move host bridge hotplug to
pci_root.c") and be6d2867b4f6 ("PCI: acpiphp: Remove dead code for PCI
host bridge hotplug") from the pci tree and commit 3757b94802fb ("ACPI /
hotplug: Fix concurrency issues and memory leaks") from the pm tree.

I fixed it up (thanks to Yinghai Lu for the resolution - see below) and
can carry the fix as necessary (no action is required).

--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx

diff --cc drivers/acpi/scan.c
index a363f87,daee749..0000000
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@@ -1707,7 -1804,7 +1804,9 @@@ int __init acpi_scan_init(void

acpi_update_all_gpes();

+ acpi_pci_root_hp_init();
+
- return 0;
+ out:
+ mutex_unlock(&acpi_scan_lock);
+ return result;
}
diff --cc drivers/pci/hotplug/acpiphp_glue.c
index 4681d2c,a951c22..0000000
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@@ -1136,11 -1214,29 +1132,13 @@@ static void _handle_hotplug_event_bridg
acpi_handle handle;
u32 type;

- hp_work = container_of(work, struct acpiphp_hp_work, work);
+ hp_work = container_of(work, struct acpi_hp_work, work);
handle = hp_work->handle;
type = hp_work->type;
+ bridge = (struct acpiphp_bridge *)hp_work->context;

+ acpi_scan_lock_acquire();
+
- if (acpi_bus_get_device(handle, &device)) {
- /* This bridge must have just been physically inserted */
- handle_bridge_insertion(handle, type);
- goto out;
- }
-
- bridge = acpiphp_handle_to_bridge(handle);
- if (type == ACPI_NOTIFY_BUS_CHECK) {
- acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, ACPI_UINT32_MAX,
- count_sub_bridges, NULL, &num_sub_bridges, NULL);
- }
-
- if (!bridge && !num_sub_bridges) {
- err("cannot get bridge info\n");
- goto out;
- }
-
acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer);

switch (type) {
@@@ -1195,6 -1296,8 +1193,7 @@@
break;
}

-out:
+ acpi_scan_lock_release();
kfree(hp_work); /* allocated in handle_hotplug_event_bridge */
}

@@@ -1237,6 -1342,10 +1236,8 @@@ static void _handle_hotplug_event_func(

acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer);

- func = (struct acpiphp_func *)context;
-
+ acpi_scan_lock_acquire();
+
switch (type) {
case ACPI_NOTIFY_BUS_CHECK:
/* bus re-enumerate */

Attachment: pgp00000.pgp
Description: PGP signature