]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ACPI / scan: Apply default enumeration to devices with ACPI drivers
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sun, 16 Apr 2017 23:19:50 +0000 (01:19 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Jun 2017 11:02:54 +0000 (13:02 +0200)
commit f5beabfe61794d9a9d9549d387cda2bffd81e504 upstream.

The current code in acpi_bus_attach() is inconsistent with respect
to device objects with ACPI drivers bound to them, as it allows
ACPI drivers to bind to device objects with existing "physical"
device companions, but it doesn't allow "physical" device objects
to be created for ACPI device objects with ACPI drivers bound to
them.  Thus, in some cases, the outcome depends on the ordering
of events which is confusing at best.

For this reason, modify acpi_bus_attach() to call
acpi_default_enumeration() for device objects with the
pnp.type.platform_id flag set regardless of whether or not
any ACPI drivers are bound to them.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Joey Lee <jlee@suse.com>
Cc: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/acpi/scan.c

index 2433569b02ef5cf40dd82cebec6fc83186f4dc3b..7b4d34b21d02630957def20cc967bd5f1b194ed0 100644 (file)
@@ -1866,10 +1866,10 @@ static void acpi_bus_attach(struct acpi_device *device)
        if (ret < 0)
                return;
 
-       if (ret > 0 || !device->pnp.type.platform_id)
-               acpi_device_set_enumerated(device);
-       else
+       if (device->pnp.type.platform_id)
                acpi_default_enumeration(device);
+       else
+               acpi_device_set_enumerated(device);
 
  ok:
        list_for_each_entry(child, &device->children, node)