ACPI: EC / PM: Disable non-wakeup GPEs for suspend-to-idle
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 17 Dec 2018 11:21:55 +0000 (12:21 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 18 Dec 2018 09:51:16 +0000 (10:51 +0100)
commitf941d3e41da7f86bdb9dcc1977c2bcc6b89bfe47
treeaecf36606bfff4ad9e6d3c7efdbf26059237ab34
parent7566ec393f4161572ba6f11ad5171fd5d59b0fbd
ACPI: EC / PM: Disable non-wakeup GPEs for suspend-to-idle

There are systems in which non-wakeup GPEs fire during the "noirq"
suspend stage of suspending devices and that effectively prevents the
system that tries to suspend to idle from entering any low-power
state at all.  If the offending GPE fires regularly and often enough,
the system appears to be suspended, but in fact it is in a tight loop
over "noirq" suspend and "noirq" resume of devices all the time.

To prevent that from happening, disable all non-wakeup GPEs except
for the EC GPE for suspend-to-idle (the EC GPE is special, because
on some systems it has to be enabled for power button wakeup events
to be generated as expected).

Fixes: 147a7d9d25ca (ACPI / PM: Do not reconfigure GPEs for suspend-to-idle)
Link: https://bugzilla.kernel.org/show_bug.cgi?id=201987
Reported-by: Zhang Rui <rui.zhang@intel.com>
Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Tested-by: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/ec.c
drivers/acpi/internal.h
drivers/acpi/sleep.c