> -----Original Message----- > From: Rafael J. Wysocki [mailto:rjw@xxxxxxxxxxxxx] > Sent: Sunday, July 8, 2018 2:10 AM > To: Linux ACPI <linux-acpi@xxxxxxxxxxxxxxx> > Cc: Thomas Hänig <haenig@xxxxxxxxxx>; Takashi Iwai <tiwai@xxxxxxx>; > Schmauss, Erik <erik.schmauss@xxxxxxxxx>; Linux PM <linux- > pm@xxxxxxxxxxxxxxx>; Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx> > Subject: [PATCH] ACPICA: Clear status of all events when entering S5 > > From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> > > After commit 18996f2db918 (ACPICA: Events: Stop unconditionally clearing ACPI > IRQs during suspend/resume) the status of ACPI events is not cleared any more > when entering the ACPI S5 system state (power > off) which causes some systems to power up immediately after turing off power > in certain situations. > > That is a functional regression, so address it by making the code clear the status > of all ACPI events again when entering S5 (for system-wide suspend or > hibernation the clearing of the status of all events is not desirable, as it might > cause the kernel to miss wakeup events sometimes). > > Fixes: 18996f2db918 (ACPICA: Events: Stop unconditionally clearing ACPI IRQs > during suspend/resume) > Reported-by: Takashi Iwai <tiwai@xxxxxxx> > Tested-by: Thomas Hänig <haenig@xxxxxxxxxx> > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> > --- > > Resend https://patchwork.kernel.org/patch/10511451/ with a changelig and > tags. > > --- > drivers/acpi/acpica/hwsleep.c | 15 +++++++++++---- > 1 file changed, 11 insertions(+), 4 deletions(-) > > Index: linux-pm/drivers/acpi/acpica/hwsleep.c > ================================================================= > == > --- linux-pm.orig/drivers/acpi/acpica/hwsleep.c > +++ linux-pm/drivers/acpi/acpica/hwsleep.c > @@ -51,16 +51,23 @@ acpi_status acpi_hw_legacy_sleep(u8 slee > return_ACPI_STATUS(status); > } > > - /* > - * 1) Disable all GPEs > - * 2) Enable all wakeup GPEs > - */ > + /* Disable all GPEs */ > status = acpi_hw_disable_all_gpes(); > if (ACPI_FAILURE(status)) { > return_ACPI_STATUS(status); > } > + /* > + * If the target sleep state is S5, clear all GPEs and fixed events too > + */ > + if (sleep_state == ACPI_STATE_S5) { > + status = acpi_hw_clear_acpi_status(); > + if (ACPI_FAILURE(status)) { > + return_ACPI_STATUS(status); > + } > + } > acpi_gbl_system_awake_and_running = FALSE; > > + /* Enable all wakeup GPEs */ > status = acpi_hw_enable_all_wakeup_gpes(); > if (ACPI_FAILURE(status)) { > return_ACPI_STATUS(status); Rafael, I've created an ACPICA pull request containing this patch. Thanks, Erik -- 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