]> git.ipfire.org Git - people/ms/linux.git/commitdiff
ACPI: PM: Do not turn off power resources in unknown state
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 15 Oct 2021 17:12:21 +0000 (19:12 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 19 Oct 2021 17:28:56 +0000 (19:28 +0200)
Commit 6381195ad7d0 ("ACPI: power: Rework turning off unused power
resources") caused power resources in unknown state with reference
counters equal to zero to be turned off too, but that caused issues
to appear in the field, so modify the code to only turn off power
resources that are known to be "on".

Link: https://lore.kernel.org/linux-acpi/6faf4b92-78d5-47a4-63df-cc2bab7769d0@molgen.mpg.de/
Fixes: 6381195ad7d0 ("ACPI: power: Rework turning off unused power resources")
Reported-by: Andreas K. Huettel <andreas.huettel@ur.de>
Tested-by: Andreas K. Huettel <andreas.huettel@ur.de>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Cc: 5.14+ <stable@vger.kernel.org> # 5.14+
drivers/acpi/power.c

index b9863e22b952d39f4397a8e5da90b5a756a5dd46..f0ed4414edb1fc75f7959bbe38529906aba33d2c 100644 (file)
@@ -1035,13 +1035,8 @@ void acpi_turn_off_unused_power_resources(void)
        list_for_each_entry_reverse(resource, &acpi_power_resource_list, list_node) {
                mutex_lock(&resource->resource_lock);
 
-               /*
-                * Turn off power resources in an unknown state too, because the
-                * platform firmware on some system expects the OS to turn off
-                * power resources without any users unconditionally.
-                */
                if (!resource->ref_count &&
-                   resource->state != ACPI_POWER_RESOURCE_STATE_OFF) {
+                   resource->state == ACPI_POWER_RESOURCE_STATE_ON) {
                        acpi_handle_debug(resource->device.handle, "Turning OFF\n");
                        __acpi_power_off(resource);
                }