On 04.01.23 10:29, Takashi Iwai wrote: > [ adding Cirrus people to Cc ] > > On Tue, 03 Jan 2023 21:39:42 +0100, > 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 > Indeed the suspend isn't supported for this chip wrt the specific > model/config, but it's a bad behavior to block the whole system > suspend due to that. > > Could you try the patch below? > > > Takashi > > -- 8< -- > diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c > index 91842c0c8c74..6322157c7ea2 100644 > --- a/sound/pci/hda/cs35l41_hda.c > +++ b/sound/pci/hda/cs35l41_hda.c > @@ -598,8 +598,8 @@ static int cs35l41_system_suspend(struct device *dev) > dev_dbg(cs35l41->dev, "System Suspend\n"); > > if (cs35l41->hw_cfg.bst_type == CS35L41_EXT_BOOST_NO_VSPK_SWITCH) { > - dev_err(cs35l41->dev, "System Suspend not supported\n"); > - return -EINVAL; > + dev_err_once(cs35l41->dev, "System Suspend not supported\n"); > + return 0; /* don't block the whole system suspend */ > } > > ret = pm_runtime_force_suspend(dev); > @@ -624,8 +624,8 @@ static int cs35l41_system_resume(struct device *dev) > dev_dbg(cs35l41->dev, "System Resume\n"); > > if (cs35l41->hw_cfg.bst_type == CS35L41_EXT_BOOST_NO_VSPK_SWITCH) { > - dev_err(cs35l41->dev, "System Resume not supported\n"); > - return -EINVAL; > + dev_err_once(cs35l41->dev, "System Resume not supported\n"); > + return 0; /* don't block the whole system resume */ > } > > if (cs35l41->reset_gpio) { > @@ -647,6 +647,15 @@ static int cs35l41_system_resume(struct device *dev) > return ret; > } > > +static int cs35l41_runtime_idle(struct device *dev) > +{ > + struct cs35l41_hda *cs35l41 = dev_get_drvdata(dev); > + > + if (cs35l41->hw_cfg.bst_type == CS35L41_EXT_BOOST_NO_VSPK_SWITCH) > + return -EBUSY; /* suspend not supported yet on this model */ > + return 0; > +} > + > static int cs35l41_runtime_suspend(struct device *dev) > { > struct cs35l41_hda *cs35l41 = dev_get_drvdata(dev); > @@ -1536,7 +1545,8 @@ void cs35l41_hda_remove(struct device *dev) > EXPORT_SYMBOL_NS_GPL(cs35l41_hda_remove, SND_HDA_SCODEC_CS35L41); > > const struct dev_pm_ops cs35l41_hda_pm_ops = { > - RUNTIME_PM_OPS(cs35l41_runtime_suspend, cs35l41_runtime_resume, NULL) > + RUNTIME_PM_OPS(cs35l41_runtime_suspend, cs35l41_runtime_resume, > + cs35l41_runtime_idle) > SYSTEM_SLEEP_PM_OPS(cs35l41_system_suspend, cs35l41_system_resume) > }; > EXPORT_SYMBOL_NS_GPL(cs35l41_hda_pm_ops, SND_HDA_SCODEC_CS35L41); Hi Takashi, Thank you for your prompt reply, I decided to patch the Manjaro 6.1.3 kernel and in case the issue persisted, try the same with mainline but it helped. I can suspend/resume the laptop same as I could with pre 6.1 kernels. If you are interested in any logs from my system let me know. Best Regards, Waldek Andrukiewicz