Skip to contentSkip to conversation

ACPI: PM: Fix up turning off unused power resources

PATCH In review Rafael J. Wysocki 3 participants 5 messages Oct 15, 2021 – Oct 19, 2021

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

cover ACPI: PM: Fix up turning off unused power resources

Hi,

This series fixes a regression introduced during the 5.14 cycle and related to turning off unused ACPI power resources (patch [1/2]) and causes the states of all power resources to be checked during initialization (patch [2/2]).

Please refer to the patch changelogs for details.

Thanks!

#1 lore raw

PATCH 1/2 ACPI: PM: Do not turn off power resources in unknown state

From: Rafael J. Wysocki <[email protected]>

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".

Fixes 6381195ad7d0 ("ACPI: power: Rework turning off unused power resources")
Cc 5.14+ <[email protected]> # 5.14+
---
 drivers/acpi/power.c |    7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)
drivers/acpi/power.c +1 -6
Index: linux-pm/drivers/acpi/power.c
===================================================================
@@ -1015,13 +1015,8 @@ void acpi_turn_off_unused_power_resource
 	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);
 		}
#2 lore raw

PATCH 2/2 ACPI: PM: Check states of power resources during initialization

In reply to Rafael J. Wysocki

From: Rafael J. Wysocki <[email protected]>

To avoid situations in which the actual states of certain ACPI power resources are not known just because they have never been referenced by any device configuration objects, check the initial states of all power resources as soon as they are found in the ACPI namespace (and fall back to turning them on if the state check fails).

---

Andreas, please test this patch (on top of the [1/2]) and let me know if it works for you.

Thanks!

---
 drivers/acpi/power.c |   30 +++++++++++++-----------------
 1 file changed, 13 insertions(+), 17 deletions(-)
drivers/acpi/power.c +5 -0
Index: linux-pm/drivers/acpi/power.c
===================================================================
@@ -923,6 +919,7 @@ struct acpi_device *acpi_add_power_resou
 	union acpi_object acpi_object;
 	struct acpi_buffer buffer = { sizeof(acpi_object), &acpi_object };
 	acpi_status status;
+	u8 state_dummy;
 	int result;
 
 	acpi_bus_get_device(handle, &device);
@@ -951,6 +948,10 @@ struct acpi_device *acpi_add_power_resou
 	resource->order = acpi_object.power_resource.resource_order;
 	resource->state = ACPI_POWER_RESOURCE_STATE_UNKNOWN;
 
+	/* Get the initial state or just flip it on if that fails. */
+	if (acpi_power_get_state(resource, &state_dummy))
+		__acpi_power_on(resource);
+
 	pr_info("%s [%s]\n", acpi_device_name(device), acpi_device_bid(device));
 
 	device->flags.match_driver = true;
#3 lore raw

Re: [EXT] [PATCH v1 2/2][RFT] ACPI: PM: Check states of power resources during initialization

Am Freitag, 15. Oktober 2021, 19:14:10 CEST schrieb Rafael J. Wysocki:

Quoted 8 lines

From: Rafael J. Wysocki <[email protected]>

To avoid situations in which the actual states of certain ACPI power resources are not known just because they have never been referenced by any device configuration objects, check the initial states of all power resources as soon as they are found in the ACPI namespace (and fall back to turning them on if the state check fails).

Quoted 6 lines

---

Andreas, please test this patch (on top of the [1/2]) and let me know if it works for you.

I see no negative impact (actually, no impact at all) of the second additional patch. The network card is again working fine now.

Boot logs (unpatched, with one patch, with both patches) at
https://dev.gentoo.org/~dilfridge/igb/ (the 5.14.12* files).

Best,
Andreas

Signature · 11 lines
PD Dr. Andreas K. Huettel
Institute for Experimental and Applied Physics
University of Regensburg
93040 Regensburg
Germany

tel. +49 151 241 67748 (mobile)
tel. +49 941 943 1618 (office)
e-mail [email protected]
http://www.akhuettel.de/
http://www.physik.uni-r.de/forschung/huettel/
#4 lore raw

Re: [EXT] [PATCH v1 2/2][RFT] ACPI: PM: Check states of power resources during initialization

Quoted 17 lines · Andreas K. Huettel

Am Freitag, 15. Oktober 2021, 19:14:10 CEST schrieb Rafael J. Wysocki:

Quoted 8 lines

From: Rafael J. Wysocki <[email protected]>

To avoid situations in which the actual states of certain ACPI power resources are not known just because they have never been referenced by any device configuration objects, check the initial states of all power resources as soon as they are found in the ACPI namespace (and fall back to turning them on if the state check fails).

Quoted 6 lines

---

Andreas, please test this patch (on top of the [1/2]) and let me know if it works for you.

Quoted 5 lines

I see no negative impact (actually, no impact at all) of the second additional patch. The network card is again working fine now.

Boot logs (unpatched, with one patch, with both patches) at
https://dev.gentoo.org/~dilfridge/igb/ (the 5.14.12* files).

Thanks!