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