| From 3b2b49e6dfdcf423506a771bf44cee842596351a Mon Sep 17 00:00:00 2001 |
| From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com> |
| Date: Wed, 17 Nov 2021 17:05:41 +0100 |
| Subject: Revert "ACPI: scan: Release PM resources blocked by unused objects" |
| |
| From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| |
| commit 3b2b49e6dfdcf423506a771bf44cee842596351a upstream. |
| |
| Revert commit c10383e8ddf4 ("ACPI: scan: Release PM resources blocked |
| by unused objects"), because it causes boot issues to appear on some |
| platforms. |
| |
| Reported-by: Kyle D. Pelton <kyle.d.pelton@intel.com> |
| Reported-by: Saranya Gopal <saranya.gopal@intel.com> |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/acpi/glue.c | 25 ------------------------- |
| drivers/acpi/internal.h | 1 - |
| drivers/acpi/scan.c | 6 ------ |
| 3 files changed, 32 deletions(-) |
| |
| --- a/drivers/acpi/glue.c |
| +++ b/drivers/acpi/glue.c |
| @@ -363,28 +363,3 @@ int acpi_platform_notify(struct device * |
| } |
| return 0; |
| } |
| - |
| -int acpi_dev_turn_off_if_unused(struct device *dev, void *not_used) |
| -{ |
| - struct acpi_device *adev = to_acpi_device(dev); |
| - |
| - /* |
| - * Skip device objects with device IDs, because they may be in use even |
| - * if they are not companions of any physical device objects. |
| - */ |
| - if (adev->pnp.type.hardware_id) |
| - return 0; |
| - |
| - mutex_lock(&adev->physical_node_lock); |
| - |
| - /* |
| - * Device objects without device IDs are not in use if they have no |
| - * corresponding physical device objects. |
| - */ |
| - if (list_empty(&adev->physical_node_list)) |
| - acpi_device_set_power(adev, ACPI_STATE_D3_COLD); |
| - |
| - mutex_unlock(&adev->physical_node_lock); |
| - |
| - return 0; |
| -} |
| --- a/drivers/acpi/internal.h |
| +++ b/drivers/acpi/internal.h |
| @@ -117,7 +117,6 @@ bool acpi_device_is_battery(struct acpi_ |
| bool acpi_device_is_first_physical_node(struct acpi_device *adev, |
| const struct device *dev); |
| int acpi_bus_register_early_device(int type); |
| -int acpi_dev_turn_off_if_unused(struct device *dev, void *not_used); |
| |
| /* -------------------------------------------------------------------------- |
| Device Matching and Notification |
| --- a/drivers/acpi/scan.c |
| +++ b/drivers/acpi/scan.c |
| @@ -2560,12 +2560,6 @@ int __init acpi_scan_init(void) |
| } |
| } |
| |
| - /* |
| - * Make sure that power management resources are not blocked by ACPI |
| - * device objects with no users. |
| - */ |
| - bus_for_each_dev(&acpi_bus_type, NULL, NULL, acpi_dev_turn_off_if_unused); |
| - |
| acpi_turn_off_unused_power_resources(); |
| |
| acpi_scan_initialized = true; |