ec icon indicating copy to clipboard operation
ec copied to clipboard

galp3-c: Touchpad not always restored on S3 resume

Open crawfxrd opened this issue 4 years ago • 3 comments

This blocks the Open Firmware release for galp3-c and galp4.

Affects

  • galp3-c
  • galp4

Steps to reproduce

  • Perform S3 suspend
  • Wake system
  • Check touchpad functionality
  • Repeat

To ease reproduction of this issue, I am using a modified suspender.sh script from the private testing repo. It checks for the existence of/sys/devices/platform/i8042/serio1/input instead of running a certain number of times.

Expected behavior

The touchpad functions on every resume.

Actual behavior

Consistently, but after an arbitrary amount of suspends, the touchpad no longer functions.

After enabling TRACE debugging, I see that all kbc mouse logs stop occurring once the device is lost.

In the case of the galp3-c, functionality does not seem to be restored until a reboot. (Although I was not particularly interested in seeing it would return after more suspend cycles, so only attempted more suspend cycles once.)

crawfxrd avatar May 13 '21 21:05 crawfxrd

With i8042.debug=1 on Linux, you can see that IRQ12 stops happening.

  • Good: Touchpad restored on resume
  • Bad: Touchpad not restored, no IRQ12

crawfxrd avatar May 17 '21 16:05 crawfxrd

The mouse reset (0xDD 0xFF) never completes: TDS isn't set after 10k (PS2_TIMEOUT) reads, but neither is TOER. It's normally complete on the first read.

I sometimes see more ACPI timeouts related to this as well (about 3 times in 20 repros).

[  403.492994] i8042: [100527] d4 -> i8042 (command)
[  403.493581] i8042: [100527] ff -> i8042 (parameter)
[  403.574765] usb 1-7: reset high-speed USB device number 3 using xhci_hcd
[  403.583216] ata1: SATA link down (SStatus 4 SControl 300)
[  403.749599] OOM killer enabled.
[  403.749603] Restarting tasks ... done.
[  403.753510] video LNXVIDEO:00: Restoring backlight state
[  403.774779] PM: suspend exit
[  404.514746] i8042: [100783] d4 -> i8042 (command)
[  405.138280] i8042: [100938]      -- i8042 (wait write timeout)
[  405.991647] ACPI Error: AE_TIME, Returned by Handler for [EmbeddedControl] (20201113/evregion-294)
[  405.991655] ACPI Error: Timeout from EC hardware or EC device driver (20201113/evregion-304)

[  405.991670] No Local Variables are initialized for Method [SKBL]

[  405.991672] Initialized Arguments for Method [SKBL]:  (1 arguments defined for method invocation)
[  405.991672]   Arg0:   00000000adf03106 <Obj>           Integer 0000000000000000

[  408.492877] ACPI Error: AE_TIME, Aborting method \_SB.S76D.SKBL due to previous error (AE_TIME) (20201113/psparse-529)
[  408.492921] leds system76_acpi::kbd_backlight: Setting an LED's brightness failed (-1)
[  408.492924]  (20201113/psparse-529)
[  408.492925] Returned by Handler for [EmbeddedControl] (20201113/evregion-294)
[  408.492926] ACPI Error: Timeout from EC hardware or EC device driver (20201113/evregion-304)

[  408.492933] No Local Variables are initialized for Method [SAPL]

[  408.492934] Initialized Arguments for Method [SAPL]:  (1 arguments defined for method invocation)
[  408.492935]   Arg0:   00000000ae89d4fc <Obj>           Integer 0000000000000000

[  408.492940] ACPI Error: Aborting method \_SB.S76D.SAPL due to previous error (AE_TIME) (20201113/psparse-529)
[  408.492946] leds system76_acpi::airplane: Setting an LED's brightness failed (-1)
[  408.814697] i8042: [101857] d4 -> i8042 (command)
[  408.825646] i8042: [101860] e8 -> i8042 (parameter)

crawfxrd avatar May 17 '21 20:05 crawfxrd

#201 appears to have fixed the ACPI timeouts.

crawfxrd avatar May 24 '21 21:05 crawfxrd