ACPI: Attach the ACPI device to the ACPI handle as early as possible
authorZhao Yakui <yakui.zhao@intel.com>
Mon, 11 Aug 2008 06:54:16 +0000 (14:54 +0800)
committerLen Brown <len.brown@intel.com>
Wed, 22 Oct 2008 21:59:36 +0000 (17:59 -0400)
Attach the ACPI device to the ACPI handle as early as possible so that OS
can get the corresponding ACPI device by the acpi handle in the course
of getting the power/wakeup/performance flags.

http://bugzilla.kernel.org/show_bug.cgi?id=8049
http://bugzilla.kernel.org/show_bug.cgi?id=11000

Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/scan.c

index 308ddb1c207c420ca6cade93eb175f27c11e524e..ad0679843bd567ea88f3428f6d4e684168ac408e 100644 (file)
@@ -1252,6 +1252,16 @@ acpi_add_single_object(struct acpi_device **child,
         */
        acpi_device_set_id(device, parent, handle, type);
 
+       /*
+        * The ACPI device is attached to acpi handle before getting
+        * the power/wakeup/peformance flags. Otherwise OS can't get
+        * the corresponding ACPI device by the acpi handle in the course
+        * of getting the power/wakeup/performance flags.
+        */
+       result = acpi_device_set_context(device, type);
+       if (result)
+               goto end;
+
        /*
         * Power Management
         * ----------------
@@ -1282,8 +1292,6 @@ acpi_add_single_object(struct acpi_device **child,
                        goto end;
        }
 
-       if ((result = acpi_device_set_context(device, type)))
-               goto end;
 
        result = acpi_device_register(device, parent);