Re: [PATCH] ACPI / scan: Treat power resources in a special way

Toshi Kani
2013-01-07T17:26:40Z

On Mon, 2012-12-31 at 00:46 +0000, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>
> Commit 1d57433 (ACPI: Separate adding ACPI device objects from
> probing ACPI drivers) introduced an ACPI power resources management

I am seeing a different commit id for this.

commit 805d410fb0dbd65e1a57a810858fa2491e75822d
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date: Fri Dec 21 00:36:39 2012 +0100

ACPI: Separate adding ACPI device objects from probing ACPI drivers

> regression, because it didn't ensure that the power resources
> driver bind to the struct acpi_device objects corresponding
> to power resources as soon as they were created. As a result,
> ACPI power management routines may attempt to access power resource
> objects before they are ready to use.
>
> To fix this problem, tell the acpi_add_single_object() in
> acpi_bus_check_add() to probe the driver for objects of type
> ACPI_BUS_TYPE_POWER. This fix has been verified to work on
> HP nx6325 where the problem was first observed.
>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

The change looks good.

Acked-by: Toshi Kani <toshi.kani@hp.com>

Thanks,
-Toshi

> ---
>
> The commit mentioned in the changelog is in linux-next only for now, but
> it's likely to go upstream in this form anyway and the fix on top of the
> whole ACPI scan series is trivial.
>
> Thanks,
> Rafael
>
> ---
> drivers/acpi/scan.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> Index: linux/drivers/acpi/scan.c
> ===================================================================
> --- linux.orig/drivers/acpi/scan.c
> +++ linux/drivers/acpi/scan.c
> @@ -1606,7 +1606,8 @@ static acpi_status acpi_bus_check_add(ac
> return AE_CTRL_DEPTH;
> }
>
> - acpi_add_single_object(&device, handle, type, sta, false);
> + acpi_add_single_object(&device, handle, type, sta,
> + type == ACPI_BUS_TYPE_POWER);
> if (!device)
> return AE_CTRL_DEPTH;
>
>