Suspend stopped working on Lenovo Legion 7 (cs35l41-hda) after upgrade to kernel 6.1

Hi,
I think it is rather an issue which I should opened with the kernel maintainers, I have noticed that after switching from 6.0.15-1 to 6.1.1-1 kernel suspend stopped working. I can see in logs the following entries:

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.

Looks like the issue with the sound driver, there was a lot of changes to cs35l41-hda in 6.1 Changelog or it might be something else?

Does anyone have any suggestions before I do that?

Thanks a lot!

Waldek

I got a patch from the module maintainer and it fixed the issue.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.