• R
    ACPI: Allow ACPI handles of devices to be initialized in advance · f3fd0c8a
    Rafael J. Wysocki 提交于
    Currently, the ACPI handles of devices are initialized from within
    device_add(), by acpi_bind_one() called from acpi_platform_notify()
    which first uses the .find_device() routine provided by the device's
    bus type to find the matching device node in the ACPI namespace.
    This is a source of some computational overhead and, moreover, the
    correctness of the result depends on the implementation of
    .find_device() which is known to fail occasionally for some bus types
    (e.g. PCI).  In some cases, however, the corresponding ACPI device
    node is known already before calling device_add() for the given
    struct device object and the whole .find_device() dance in
    acpi_platform_notify() is then simply unnecessary.
    
    For this reason, make it possible to initialize the ACPI handles of
    devices before calling device_add() for them.  Modify
    acpi_platform_notify() to call acpi_bind_one() in advance to check
    the device's existing ACPI handle and skip the .find_device()
    search if that is successful.  Change acpi_bind_one() accordingly.
    Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: NMika Westerberg <mika.westerberg@linux.intel.com>
    f3fd0c8a
glue.c 7.3 KB