Hi, The container hotplug handler container_notify_cb() didn't implement the hot-remove functionality. So, these 3 patches implement it like the following way:
patch 1. Do not use kacpid_wq/kacpid_notify_wq to handle container hotplug event, use kacpi_hotplug_wq instead to avoid deadlock. Doing this is to reuse acpi_bus_hot_remove_device() in container hot-remove handling. patch 2. Introduce a new function container_device_remove() to handle ACPI_NOTIFY_EJECT_REQUEST event for container. change log v2 -> v3: 1. Add 1 patch(patch1). As Toshi Kan mentioned, acpi_os_hotplug_execute() is already kernel. So use it instead of alloc_acpi_hp_work() to add hotplug job onto kacpi_hotplug_wq. 2. In patch3: Print caller's function name when container_device_remove() fails to help to debug. 3. In patch3: Add commit message to describ why we need to call acpi_bus_trim() twice when removing devices. change log v1 -> v2: 1. In patch1: Based on the lastest for-pci-split-pci-root-hp-2 branch from Lu Yinghai, use alloc_acpi_hp_work() to add container hotplug work into kacpi_hotplug_wq. 2. In patch2: Allocate ej_event after container is stopped, so that we don't need to kfree the ej_event if stopping container failed. This is based on Lu Yinghai's job. git://git.kernel.org/pub/scm/linux/kernel/git/yinghai/linux-yinghai.git for-pci-split-pci-root-hp-2 Tang Chen (3): Use acpi_os_hotplug_execute() instead of alloc_acpi_hp_work(). Use kacpi_hotplug_wq to handle container hotplug event. Improve container_notify_cb() to support container hot-remove. drivers/acpi/container.c | 95 +++++++++++++++++++++++++++++++----- drivers/acpi/osl.c | 28 +++++----- drivers/acpi/pci_root_hp.c | 25 ++++++--- drivers/pci/hotplug/acpiphp_glue.c | 39 ++++++++------- include/acpi/acpiosxf.h | 7 +-- 5 files changed, 137 insertions(+), 57 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/