]> Git Repo - J-linux.git/commitdiff
ACPI: glue: Look for ACPI bus type only if ACPI companion is not known
authorRafael J. Wysocki <[email protected]>
Sat, 18 Sep 2021 13:02:23 +0000 (15:02 +0200)
committerRafael J. Wysocki <[email protected]>
Mon, 27 Sep 2021 15:01:37 +0000 (17:01 +0200)
Notice that it is not necessary to look for the "ACPI bus type" of
the device in acpi_device_notify() if the device's ACPI companion
is set upfront, so modify the code to do that lookup only if it is
necessary to find the ACPI companion.

Also notice that if the device's ACPI companion is not set upfront
in acpi_device_notify(), the device cannot be either a PCI one or a
platform one, so check for these bus types only if the device's
ACPI companion is set.

Signed-off-by: Rafael J. Wysocki <[email protected]>
Tested-by: Ferry Toth <[email protected]>
drivers/acpi/glue.c

index 49aaf18243f6ebb883b08bfae6bd9f4816e29988..17ec6e57c4b766bc1515e7e19215b4af2679ef5c 100644 (file)
@@ -289,12 +289,13 @@ EXPORT_SYMBOL_GPL(acpi_unbind_one);
 
 void acpi_device_notify(struct device *dev)
 {
-       struct acpi_bus_type *type = acpi_get_bus_type(dev);
        struct acpi_device *adev;
        int ret;
 
        ret = acpi_bind_one(dev, NULL);
        if (ret) {
+               struct acpi_bus_type *type = acpi_get_bus_type(dev);
+
                if (!type)
                        goto err;
 
@@ -306,21 +307,26 @@ void acpi_device_notify(struct device *dev)
                ret = acpi_bind_one(dev, adev);
                if (ret)
                        goto err;
-       }
-       adev = ACPI_COMPANION(dev);
 
-       if (dev_is_pci(dev)) {
-               pci_acpi_setup(dev, adev);
+               if (type->setup) {
+                       type->setup(dev);
+                       goto done;
+               }
        } else {
-               if (dev_is_platform(dev))
-                       acpi_configure_pmsi_domain(dev);
+               adev = ACPI_COMPANION(dev);
 
-               if (type && type->setup)
-                       type->setup(dev);
-               else if (adev->handler && adev->handler->bind)
-                       adev->handler->bind(dev);
+               if (dev_is_pci(dev)) {
+                       pci_acpi_setup(dev, adev);
+                       goto done;
+               } else if (dev_is_platform(dev)) {
+                       acpi_configure_pmsi_domain(dev);
+               }
        }
 
+       if (adev->handler && adev->handler->bind)
+               adev->handler->bind(dev);
+
+done:
        acpi_handle_debug(ACPI_HANDLE(dev), "Bound to device %s\n",
                          dev_name(dev));
 
This page took 0.049465 seconds and 4 git commands to generate.