On Tue, 16 Jul 2019, Rafael J. Wysocki wrote: > Hi All, > > The rationale for these changes is explained in the changelog of patch [6/8] > as follows: > > "After commit 33e4f80ee69b ("ACPI / PM: Ignore spurious SCI wakeups > from suspend-to-idle") the "noirq" phases of device suspend and > resume may run for multiple times during suspend-to-idle, if there > are spurious system wakeup events while suspended. However, this > is complicated and fragile and actually unnecessary. > > The main reason for doing this is that on some systems the EC may > signal system wakeup events (power button events, for example) as > well as events that should not cause the system to resume (spurious > system wakeup events). Thus, in order to determine whether or not > a given event signaled by the EC while suspended is a proper system > wakeup one, the EC GPE needs to be dispatched and to start with that > was achieved by allowing the ACPI SCI action handler to run, which > was only possible after calling resume_device_irqs(). > > However, dispatching the EC GPE this way turned out to take too much > time in some cases and some EC events might be missed due to that, so > commit 68e22011856f ("ACPI: EC: Dispatch the EC GPE directly on > s2idle wake") started to dispatch the EC GPE right after a wakeup > event has been detected, so in fact the full ACPI SCI action handler > doesn't need to run any more to deal with the wakeups coming from the > EC. > > Use this observation to simplify the suspend-to-idle control flow > so that the "noirq" phases of device suspend and resume are each > run only once in every suspend-to-idle cycle, which is reported to > significantly reduce power drawn by some systems when suspended to > idle (by allowing them to reach a deep platform-wide low-power state > through the suspend-to-idle flow)." > > A bonus is that after the essential changes the s2idle flow can be > integrated back into the generic suspend/resume one (patch [7/8]) > and some simplifications can be made in drivers/base/power/main.c > after that (patch [8/8]).
Nice work! Acked-by: Thomas Gleixner <t...@linutronix.de>