I'm a chromeos developer. The chromebooks use S0ix (i.e. s2idle) for suspend.
I noticed that recently multiple systems couldn't wake from S0ix using LID/Keyboard, after I upgraded from 4.19.35 to 4.19.36.
I cannot wake my system up using keystrokes and using lid open. The power button wake still continues to work, but the keyboard and lid open wake does not work.
localhost /sys # cat /proc/acpi/wakeup
Device S-state Status Sysfs node
LID0 S4 *enabled platform:PNP0C0D:00
CREC S5 *disabled platform:GOOG0004:00
D015 S3 *enabled i2c:i2c-ELAN0000:00
PENH S3 *enabled platform:PRP0001:00
XHCI S3 *enabled pci:0000:00:14.0
GLAN S4 *disabled
WIFI S3 *disabled pci:0000:00:14.3
localhost /sys #
I bisected and the regression started with this commit:
If I revert the patch, things start to work OK.
I debugged and found that although PNP0C0D:00 is wake capable and should wakeup the system, its corresponding GPE is not being enabled. The particular GPE's gpe_register_info->enable_for_wake does not have any bits set when acpi_enable_all_wakeup_gpes() comes around to use it.
Please let me know if you need any more info / logs for this.
Created attachment 282729 [details]
Here is an RFC patch that I also plan to post to linux-pm mailing lists.
Created attachment 282731 [details]
I posted my patch here:
I verified that this is fixed with