ACPI: PM: Do not turn off power resources in unknown state

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1998269

commit bc28368596436e6e81ffc48c815b8225d96121c0
Author: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Date: Fri, 15 Oct 2021 19:12:21 +0200

Commit 6381195ad7 ("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: 6381195ad7 ("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+
Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
This commit is contained in:
Mark Langsdorf 2022-03-02 13:54:44 -05:00
parent 82798c0f62
commit ad106256a0
1 changed files with 1 additions and 6 deletions

View 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) { list_for_each_entry_reverse(resource, &acpi_power_resource_list, list_node) {
mutex_lock(&resource->resource_lock); 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 && 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_handle_debug(resource->device.handle, "Turning OFF\n");
__acpi_power_off(resource); __acpi_power_off(resource);
} }