Re: i2c-CLSA0100:00-cs35l41-hda.1: System Suspend not supported

From: Waldek Andrukiewicz
Date: Wed Jan 04 2023 - 15:06:09 EST



On 04.01.23 03:18, Bagas Sanjaya wrote:
> On Tue, Jan 03, 2023 at 08:45:05PM +0000, Waldek Andrukiewicz wrote:
>> Hello,
>>
>> I am running Manjaro, after upgrading from kernel 6.0.15 to 6.1.1
>> (https://gitlab.manjaro.org/packages/core/linux61) I have noticed that
>> suspend stopped working, what I can see in the logs is the following
>> issue which IMO points to cs35l41
>>
>> Machine:
>>   Type: Laptop System: LENOVO product: 82N6 v: Legion 7 16ACHg6
>>
>> journalctl output below:
>>
>> Jan 02 21:52:54 legion16 systemd[1]: Starting System Suspend...
>> Jan 02 21:52:54 legion16 wpa_supplicant[1193]: wlp4s0:
>> CTRL-EVENT-DSCP-POLICY clear_all
>> Jan 02 21:52:54 legion16 systemd-sleep[2912]: Entering sleep state
>> 'suspend'...
>> Jan 02 21:52:54 legion16 kernel: PM: suspend entry (deep)
>> Jan 02 21:52:54 legion16 kernel: Filesystems sync: 0.008 seconds
>> Jan 02 21:52:54 legion16 wpa_supplicant[1193]: wlp4s0:
>> CTRL-EVENT-DSCP-POLICY clear_all
>> Jan 02 21:52:54 legion16 wpa_supplicant[1193]: nl80211: deinit
>> ifname=wlp4s0 disabled_11b_rates=0
>> Jan 02 21:52:54 legion16 plasmashell[1770]: qml: [DEBUG] - onNewData
>> Jan 02 21:52:54 legion16 kernel: Freezing user space processes ...
>> (elapsed 0.002 seconds) done.
>> Jan 02 21:52:54 legion16 kernel: OOM killer disabled.
>> Jan 02 21:52:54 legion16 kernel: Freezing remaining freezable tasks ...
>> (elapsed 0.001 seconds) done.
>> Jan 02 21:52:54 legion16 kernel: printk: Suspending console(s) (use
>> no_console_suspend to debug)
>> Jan 02 21:52:54 legion16 kernel: cs35l41-hda
>> i2c-CLSA0100:00-cs35l41-hda.1: System Suspend not supported
>> Jan 02 21:52:54 legion16 kernel: cs35l41-hda
>> i2c-CLSA0100:00-cs35l41-hda.0: System Suspend not supported
>> Jan 02 21:52:54 legion16 kernel: cs35l41-hda
>> i2c-CLSA0100:00-cs35l41-hda.1: PM: dpm_run_callback():
>> cs35l41_system_suspend+0x0/0xd0 [snd_hda_scodec_cs35l41] returns -22
>> Jan 02 21:52:54 legion16 kernel: cs35l41-hda
>> i2c-CLSA0100:00-cs35l41-hda.0: PM: dpm_run_callback():
>> cs35l41_system_suspend+0x0/0xd0 [snd_hda_scodec_cs35l41] returns -22
>> Jan 02 21:52:54 legion16 kernel: cs35l41-hda
>> i2c-CLSA0100:00-cs35l41-hda.1: PM: failed to suspend async: error -22
>> Jan 02 21:52:54 legion16 kernel: cs35l41-hda
>> i2c-CLSA0100:00-cs35l41-hda.0: PM: failed to suspend async: error -22
>> Jan 02 21:52:54 legion16 kernel: PM: Some devices failed to suspend, or
>> early wake event detected
>> Jan 02 21:52:54 legion16 kernel: OOM killer enabled.
>> Jan 02 21:52:54 legion16 kernel: Restarting tasks ... done.
>> Jan 02 21:52:54 legion16 kernel: random: crng reseeded on system resumption
>> Jan 02 21:52:54 legion16 syncthing[1588]: [RBC2R] INFO: Relay listener
>> (dynamic+https://relays.syncthing.net/endpoint) shutting down
>> Jan 02 21:52:54 legion16 syncthing[1588]: [RBC2R] INFO:
>> listenerSupervisor@dynamic+https://relays.syncthing.net/endpoint:
>> service dynamic+https://relays.syncthing.net/endpoint failed: could not
>> find a connectable relay
>> Jan 02 21:52:54 legion16 syncthing[1588]: [RBC2R] INFO: Relay listener
>> (dynamic+https://relays.syncthing.net/endpoint) starting
>> Jan 02 21:52:54 legion16 syncthing[1588]: [RBC2R] INFO: Relay listener
>> (dynamic+https://relays.syncthing.net/endpoint) shutting down
>> Jan 02 21:52:54 legion16 syncthing[1588]: [RBC2R] INFO:
>> listenerSupervisor@dynamic+https://relays.syncthing.net/endpoint:
>> service dynamic+https://relays.syncthing.net/endpoint failed: Get
>> "https://relays.syncthing.net/endpoint": dial tcp: lookup
>> relays.syncthing.net on [::1]:53: read udp [::1]:58193->[::1]:53: read:
>> connection refused
>> Jan 02 21:52:54 legion16 syncthing[1588]: [RBC2R] INFO: Relay listener
>> (dynamic+https://relays.syncthing.net/endpoint) starting
>> Jan 02 21:52:54 legion16 syncthing[1588]: [RBC2R] INFO: Relay listener
>> (dynamic+https://relays.syncthing.net/endpoint) shutting down
>> Jan 02 21:52:54 legion16 syncthing[1588]: [RBC2R] INFO:
>> listenerSupervisor@dynamic+https://relays.syncthing.net/endpoint:
>> service dynamic+https://relays.syncthing.net/endpoint failed: Get
>> "https://relays.syncthing.net/endpoint": dial tcp: lookup
>> relays.syncthing.net on [::1]:53: read udp [::1]:35430->[::1]:53: read:
>> connection refused
>> Jan 02 21:52:55 legion16 bluetoothd[942]: Controller resume with wake
>> event 0x0
>> Jan 02 21:52:55 legion16 kernel: PM: suspend exit
>> Jan 02 21:52:55 legion16 kernel: PM: suspend entry (s2idle)
>> Jan 02 21:52:55 legion16 kernel: Filesystems sync: 0.004 seconds
>> Jan 02 21:52:55 legion16 kernel: Freezing user space processes ...
>> (elapsed 0.001 seconds) done.
>> Jan 02 21:52:55 legion16 kernel: OOM killer disabled.
>> Jan 02 21:52:55 legion16 kernel: Freezing remaining freezable tasks ...
>> (elapsed 0.216 seconds) done.
>> Jan 02 21:52:55 legion16 kernel: printk: Suspending console(s) (use
>> no_console_suspend to debug)
>> Jan 02 21:52:55 legion16 kernel: cs35l41-hda
>> i2c-CLSA0100:00-cs35l41-hda.1: System Suspend not supported
>> Jan 02 21:52:55 legion16 kernel: cs35l41-hda
>> i2c-CLSA0100:00-cs35l41-hda.1: PM: dpm_run_callback():
>> cs35l41_system_suspend+0x0/0xd0 [snd_hda_scodec_cs35l41] returns -22
>> Jan 02 21:52:55 legion16 kernel: cs35l41-hda
>> i2c-CLSA0100:00-cs35l41-hda.1: PM: failed to suspend async: error -22
>> Jan 02 21:52:55 legion16 kernel: PM: Some devices failed to suspend, or
>> early wake event detected
>> Jan 02 21:52:55 legion16 kernel: OOM killer enabled.
>> Jan 02 21:52:55 legion16 plasmashell[1770]: qml: [DEBUG] - onNewData
>> Jan 02 21:52:55 legion16 kernel: Restarting tasks ... done.
>> Jan 02 21:52:55 legion16 kernel: random: crng reseeded on system resumption
>> Jan 02 21:52:55 legion16 systemd-sleep[2912]: Failed to put system to
>> sleep. System resumed again: Invalid argument
>> Jan 02 21:52:55 legion16 kernel: PM: suspend exit
>> Jan 02 21:52:55 legion16 bluetoothd[942]: Controller resume with wake
>> event 0x0
>> Jan 02 21:52:55 legion16 systemd[1]: systemd-suspend.service: Main
>> process exited, code=exited, status=1/FAILURE
>> Jan 02 21:52:55 legion16 systemd[1]: systemd-suspend.service: Failed
>> with result 'exit-code'.
>> Jan 02 21:52:55 legion16 systemd[1]: Failed to start System Suspend.
>> Jan 02 21:52:55 legion16 systemd[1]: Dependency failed for Suspend.
>>
>> I have to admit I have not tried 6.1.2 yet but I could not find any
>> changes related to this module (opposite to 6.1 where there was quite a
>> few including suspend - commit dca45efbe3c870a4ad2107fe625109b3765c0fea).
>>
> Can you please try building mainline (Linus's tree) and boot from it?
> If the suspend success in the mainline, can you also bisect to find the
> culprit?
>
> In any case, I'm adding this to regzbot:
>
> #regzbot ^introduced v6.0..v6.1
> #regzbot title Suspend not supported on Lenovo Legion 7 since v6.1
>
> Thanks.
>
I have received a patch from Takashi Iwai and tested it, it helped, I
can suspend my laptop same as I could with kernels prior to 6.1.

Thank you.