[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20130215122313.19a651c33ef3bb60c0f3d827@canb.auug.org.au>
Date: Fri, 15 Feb 2013 12:23:13 +1100
From: Stephen Rothwell <sfr@...b.auug.org.au>
To: "Rafael J. Wysocki" <rjw@...k.pl>
Cc: linux-next@...r.kernel.org, linux-kernel@...r.kernel.org,
Yinghai Lu <yinghai@...nel.org>,
Bjorn Helgaas <bhelgaas@...gle.com>,
Jiang Liu <jiang.liu@...wei.com>
Subject: linux-next: manual merge of the pm tree with the pci tree
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@...b.auug.org.au
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 */
Content of type "application/pgp-signature" skipped
Powered by blists - more mailing lists