Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ACPI: EC: PM: Flush EC work unconditionally after wakeup

Commit 607b9df63057 ("ACPI: EC: PM: Avoid flushing EC work when EC
GPE is inactive") has been reported to cause some power button wakeup
events to be missed on some systems, so modify acpi_ec_dispatch_gpe()
to call acpi_ec_flush_work() unconditionally to effectively reverse
the changes made by that commit.

Also note that the problem which prompted commit 607b9df63057 is not
reproducible any more on the affected machine.

Fixes: 607b9df63057 ("ACPI: EC: PM: Avoid flushing EC work when EC GPE is inactive")
Reported-by: Raymond Tan <raymond.tan@intel.com>
Cc: 5.4+ <stable@vger.kernel.org> # 5.4+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

+3 -4
+3 -4
drivers/acpi/ec.c
··· 2019 2019 * to allow the caller to process events properly after that. 2020 2020 */ 2021 2021 ret = acpi_dispatch_gpe(NULL, first_ec->gpe); 2022 - if (ret == ACPI_INTERRUPT_HANDLED) { 2022 + if (ret == ACPI_INTERRUPT_HANDLED) 2023 2023 pm_pr_dbg("ACPI EC GPE dispatched\n"); 2024 2024 2025 - /* Flush the event and query workqueues. */ 2026 - acpi_ec_flush_work(); 2027 - } 2025 + /* Flush the event and query workqueues. */ 2026 + acpi_ec_flush_work(); 2028 2027 2029 2028 return false; 2030 2029 }