diff mbox

[1/2] ACPI / scan: Apply default enumeration to devices with ACPI drivers

Message ID 7942620.ijDeSLx5PQ@aspire.rjw.lan (mailing list archive)
State Accepted, archived
Delegated to: Rafael Wysocki
Headers show

Commit Message

Rafael J. Wysocki April 16, 2017, 11:19 p.m. UTC
From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

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>
---
 drivers/acpi/scan.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)


--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Mika Westerberg April 18, 2017, 10:21 a.m. UTC | #1
On Mon, Apr 17, 2017 at 01:19:50AM +0200, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> 
> 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>
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
joeyli April 19, 2017, 4:38 p.m. UTC | #2
On Mon, Apr 17, 2017 at 01:19:50AM +0200, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> 
> 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>

I did my best to review the context of codes in this patchset. 

Reviewed-by: Joey Lee <jlee@suse.com>

Thanka a lot!
Joey Lee

> ---
>  drivers/acpi/scan.c |    6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> Index: linux-pm/drivers/acpi/scan.c
> ===================================================================
> --- linux-pm.orig/drivers/acpi/scan.c
> +++ linux-pm/drivers/acpi/scan.c
> @@ -1866,10 +1866,10 @@ static void acpi_bus_attach(struct acpi_
>  	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)
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

Index: linux-pm/drivers/acpi/scan.c
===================================================================
--- linux-pm.orig/drivers/acpi/scan.c
+++ linux-pm/drivers/acpi/scan.c
@@ -1866,10 +1866,10 @@  static void acpi_bus_attach(struct acpi_
 	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)