diff mbox

ACPI: EC: wait for ongoing transactions before suspending

Message ID 4A9FE298.4050303@tuffmail.co.uk (mailing list archive)
State Accepted
Delegated to: Len Brown
Headers show

Commit Message

Alan Jenkins Sept. 3, 2009, 3:36 p.m. UTC
If a transaction is started just before suspend we should wait for it
before disabling the GPE.  Otherwise the GPE could be re-enabled by the
"disable gpe during transactions" workaround (EC_FLAGS_GPE_STORM).

I hope this also solves EC timeouts and resume hangs when pressing acpi
hotkeys during hibernation.  However this problem is difficult to
reproduce and I have not been able to confirm the fix.

References: http://bugzilla.kernel.org/show_bug.cgi?id=14112

Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>



--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 64a20ef..6fd1be2 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -979,7 +979,9 @@  static int acpi_ec_suspend(struct acpi_device *device, pm_message_t state)
 {
 	struct acpi_ec *ec = acpi_driver_data(device);
 	/* Stop using GPE */
+	mutex_lock(&ec->lock);
 	acpi_disable_gpe(NULL, ec->gpe);
+	mutex_unlock(&ec->lock);
 	return 0;
 }