Re: [PATCH 1/2] Use kacpi_hotplug_wq to handle container hotplug event.
From: Yinghai Lu <yinghai@kernel.org>
Date: 2012-10-23 17:36:18
Also in:
linux-pci, lkml
From: Yinghai Lu <yinghai@kernel.org>
Date: 2012-10-23 17:36:18
Also in:
linux-pci, lkml
On Tue, Oct 23, 2012 at 6:10 AM, Tang Chen [off-list ref] wrote:
As the comments in __acpi_os_execute() said:
We can't run hotplug code in keventd_wq/kacpid_wq/kacpid_notify_wq
because the hotplug code may call driver .remove() functions,
which invoke flush_scheduled_work/acpi_os_wait_events_complete
to flush these workqueues.
we should keep the hotplug code in kacpi_hotplug_wq.
But we have the following call series in kernel now:
acpi_ev_queue_notify_request()
|--> acpi_os_execute()
|--> __acpi_os_execute(type, function, context, 0)
The last parameter 0 makes the container_notify_cb() executed in
kacpi_notify_wq or kacpid_wq. So, we need to put the real hotplug code
into kacpi_hotplug_wq.I had other patches that merge acpi_hp_work in acpiphp and pci_root_hp. I just put them in to for-pci-split-pci-root-hp-2. can you check them to see if you can use it? Thanks Yinghai