From: Lv Zheng Subject: [PATCH] ACPICA: Events: Stop unconditionally clearing ACPI IRQs' status This patch removes ACPI IRQ status clearing code for suspend/resume procedures. They are not required, and may lead to false IRQ missing. However this is an experimental fix, as the drivers may not support to gracefully shutdown related ACPI IRQs. Fixed by Lv Zheng. Link: https://bugzilla.kernel.org/show_bug.cgi?id=196249 Signed-off-by: Lv Zheng --- Index: linux-acpica/drivers/acpi/acpica/hwgpe.c =================================================================== --- linux-acpica.orig/drivers/acpi/acpica/hwgpe.c +++ linux-acpica/drivers/acpi/acpica/hwgpe.c @@ -497,7 +497,6 @@ acpi_status acpi_hw_disable_all_gpes(voi ACPI_FUNCTION_TRACE(hw_disable_all_gpes); status = acpi_ev_walk_gpe_list(acpi_hw_disable_gpe_block, NULL); - status = acpi_ev_walk_gpe_list(acpi_hw_clear_gpe_block, NULL); return_ACPI_STATUS(status); } Index: linux-acpica/drivers/acpi/acpica/hwsleep.c =================================================================== --- linux-acpica.orig/drivers/acpi/acpica/hwsleep.c +++ linux-acpica/drivers/acpi/acpica/hwsleep.c @@ -85,15 +85,8 @@ acpi_status acpi_hw_legacy_sleep(u8 slee return_ACPI_STATUS(status); } - /* Clear all fixed and general purpose status bits */ - - status = acpi_hw_clear_acpi_status(); - if (ACPI_FAILURE(status)) { - return_ACPI_STATUS(status); - } - /* - * 1) Disable/Clear all GPEs + * 1) Disable all GPEs * 2) Enable all wakeup GPEs */ status = acpi_hw_disable_all_gpes(); @@ -299,7 +292,7 @@ acpi_status acpi_hw_legacy_wake(u8 sleep * might get fired there * * Restore the GPEs: - * 1) Disable/Clear all GPEs + * 1) Disable all GPEs * 2) Enable all runtime GPEs */ status = acpi_hw_disable_all_gpes(); Index: linux-acpica/drivers/acpi/acpica/hwxfsleep.c =================================================================== --- linux-acpica.orig/drivers/acpi/acpica/hwxfsleep.c +++ linux-acpica/drivers/acpi/acpica/hwxfsleep.c @@ -202,7 +202,7 @@ acpi_status acpi_enter_sleep_state_s4bio } /* - * 1) Disable/Clear all GPEs + * 1) Disable all GPEs * 2) Enable all wakeup GPEs */ status = acpi_hw_disable_all_gpes(); Index: linux-acpica/drivers/acpi/acpica/evgpe.c =================================================================== --- linux-acpica.orig/drivers/acpi/acpica/evgpe.c +++ linux-acpica/drivers/acpi/acpica/evgpe.c @@ -115,13 +115,6 @@ acpi_status acpi_ev_enable_gpe(struct ac ACPI_FUNCTION_TRACE(ev_enable_gpe); - /* Clear the GPE (of stale events) */ - - status = acpi_hw_clear_gpe(gpe_event_info); - if (ACPI_FAILURE(status)) { - return_ACPI_STATUS(status); - } - /* Enable the requested GPE */ status = acpi_hw_low_set_gpe(gpe_event_info, ACPI_GPE_ENABLE);