ACPI: Add _UID support for ACPI devices.
authorLv Zheng <lv.zheng@intel.com>
Tue, 30 Oct 2012 13:41:07 +0000 (14:41 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 14 Nov 2012 23:16:03 +0000 (00:16 +0100)
The _UID object is optional, but is required when the device has no
other way to report a persistent unique device ID.
This patch is required for ACPI 5.0 ACPI enumerated IP cores.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rui Zhang <rui.zhang@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/scan.c

index 19d3d4a..daa88d5 100644 (file)
@@ -381,6 +381,7 @@ static void acpi_device_release(struct device *dev)
        struct acpi_device *acpi_dev = to_acpi_device(dev);
 
        acpi_free_ids(acpi_dev);
+       kfree(acpi_dev->pnp.unique_id);
        kfree(acpi_dev);
 }
 
@@ -1211,6 +1212,9 @@ static void acpi_device_set_id(struct acpi_device *device)
                        device->pnp.bus_address = info->address;
                        device->flags.bus_address = 1;
                }
+               if (info->valid & ACPI_VALID_UID)
+                       device->pnp.unique_id = kstrdup(info->unique_id.string,
+                                                       GFP_KERNEL);
 
                kfree(info);