Bug 203579 - Can't wake from S0ix using LID/Keyboard (Regression starting 4.21 / 4.19.36)
Summary: Can't wake from S0ix using LID/Keyboard (Regression starting 4.21 / 4.19.36)
Status: RESOLVED CODE_FIX
Alias: None
Product: ACPI
Classification: Unclassified
Component: EC (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: acpi_ec
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-05-12 03:32 UTC by Rajat Jain
Modified: 2019-05-14 22:59 UTC (History)
4 users (show)

See Also:
Kernel Version: 4.21
Tree: Mainline
Regression: No


Attachments
Proposed patch (2.91 KB, patch)
2019-05-12 04:42 UTC, Rajat Jain
Details | Diff
dmesg log (184.87 KB, text/plain)
2019-05-12 04:42 UTC, Rajat Jain
Details

Description Rajat Jain 2019-05-12 03:32:19 UTC
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
                *disabled  platform:cros-ec-dev.1.auto
                *disabled  platform:cros-ec-accel.0
                *disabled  platform:cros-ec-accel.1
                *disabled  platform:cros-ec-gyro.0
                *disabled  platform:cros-ec-ring.0
                *disabled  platform:cros-usbpd-charger.2.auto
                *disabled  platform:cros-usbpd-logger.3.auto
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:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f941d3e41da7f86bdb9dcc1977c2bcc6b89bfe47

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.
Comment 1 Rajat Jain 2019-05-12 04:42:30 UTC
Created attachment 282729 [details]
Proposed patch

Here is an RFC patch that I also plan to post to linux-pm mailing lists.
Comment 2 Rajat Jain 2019-05-12 04:42:50 UTC
Created attachment 282731 [details]
dmesg log
Comment 3 Rajat Jain 2019-05-13 19:23:16 UTC
I posted my patch here:

https://lkml.org/lkml/2019/5/13/835

Note You need to log in before you can comment on or make changes to this bug.