• Rafael J. Wysocki's avatar
    ACPI / scan: Add second pass to acpi_bus_trim() · 05404d8f
    Rafael J. Wysocki authored
    Make acpi_bus_trim() work in analogy with acpi_bus_scan() and carry
    out two passes such that ACPI drivers will be detached from device
    nodes being removed in the first pass and the device nodes themselves
    will be removed in the second pass.
    
    For this purpose split the driver unregistration out of
    acpi_bus_remove() into a new routine, acpi_bus_device_detach(), that
    will be executed by acpi_bus_trim() in the additional first pass as
    a post-order callback.
    
    This is necessary, because some ACPI drivers' .remove() routines
    unregister struct device objects associated with the ACPI device
    nodes being removed and that needs to happen while the ACPI
    device nodes are still around (for example, in case they need to be
    used for power management or similar things at that time).
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: default avatarToshi Kani <toshi.kani@hp.com>
    Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
    Acked-by: default avatarYasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
    05404d8f
scan.c 44.1 KB