ACPI: EC: wait for ongoing transactions before suspending

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxx>

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;
 }
 


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

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux