Skip to content

[BUG] Lenovo Yoga Slim 7 15ILL9 (LNL, 17aa:380e): CS42L43 stops responding after one s2idle resume, then blocks every system suspend; state survives S5, no re-probe when codec re-attaches #5959

Description

@marcin-personal

Summary

On a Lenovo Yoga Slim 7 15ILL9 (83HM, Lunar Lake, 8086:a828, SSID 17aa:380e), the CS42L43 (SoundWire link 0) stopped responding on the bus after one s2idle resume, out of 54 suspend/resume cycles on that boot. The codec never recovered at runtime. After that:

  1. The first playback attempt failed with Timed out waiting for device re-attach and -EBUSY from snd_soc_pcm_component_pm_runtime_get().
  2. Every subsequent system suspend aborted: intel_resume_child_device: pm_runtime_resume failed: -22 from the codec, so intel_pm_prepare failed and systemd-sleep reported Failed to put system to sleep. System resumed again: Invalid argument. The idle daemon retried every ~30 s, producing ~1,000 Failed to sync masks lines per minute and making the lock screen unusable (the user had to force power off).
  3. A forced power-off on battery did not clear the codec. On the next boot the codec never enumerated (no devid line, only Timed out waiting for device re-attach at boot +5 s), so no ALSA card was created. The same sof-firmware and kernel that had worked for ten days were in use.
  4. About 19 hours later (after one more s2idle cycle) the codec's sysfs status had changed to Attached with device_number 6, but the card was never rebuilt because probe had already given up. A warm reboot then produced a fully working card.

So the failure looks like a codec-side latched state that survives S5 on this board, plus two secondary problems on the kernel side: (a) once the codec fails pm_runtime_resume, system suspend is permanently blocked instead of the codec being marked unusable, and (b) if enumeration times out at boot there is no later retry when the peripheral finally attaches.

Environment

  • Lenovo Yoga Slim 7 15ILL9, model 83HM, board LNVNB161216, BIOS NYCN75WW (2025-12-26)
  • Intel Core Ultra 7 256V (Lunar Lake-M), HD Audio 8086:a828 rev 10, subsystem 17aa:380e
  • Codec: CS42L43 sdw:0:0:01fa:4243:01 (devid 0x042a43 rev 0xa1, otp 0x03) on link 0; 2x CS35L56 Rev B0 over SPI (spi-cs35l56-left/right, fw 3.4.4); 4 DMICs via NHLT
  • Topology: intel/sof-ipc4-tplg/sof-lnl-cs42l43-l0-4ch.tplg
  • Kernel: 7.2.5-4-omarchy (Arch-based Omarchy, linux-omarchy package); cmdline root=/dev/mapper/root acpi_alarm=1 quiet splash
  • SOF firmware: 2.14.1.1 on the boot where the resume failed; 2.15.0.1 (sof-firmware 2026.09-1) on the stuck boot and on the working boot afterwards. Firmware version does not correlate with the failure.
  • alsa-ucm-conf 1.2.16.1-1, linux-firmware 20260916-1, PipeWire 1.6.9, WirePlumber 0.5.17
  • Suspend: s2idle, lid-close triggered

Timeline (all 2026-09-28 unless noted, local time)

Time Event
09-18 22:32 Boot. Clean enumeration, card works. 53 s2idle cycles over ten days, all fine.
13:35:30 s2idle entry (lid close)
13:48:05 Resume. soundwire_intel.link.0: Program SCP Ack not received x many; trf on Slave 6 failed:-5 write addr e014/8104; cs42l43-spi: Failed to enable/disable SPI controller: -5; 87x Failed to sync masks. Codec never answers again.
14:25:00 First playback: Timed out waiting for device re-attach; ASoC error (-16): at snd_soc_pcm_component_pm_runtime_get() on cs42l43-codec; Failed to resume for shutters: -16. PipeWire falls back to Dummy Output.
15:44 Lid closed.
15:49–15:56 14 suspend attempts, ~30 s apart. Each: cs42l43 ...: intel_resume_child_device: pm_runtime_resume failed: -22 → soundwire_intel.link.0: intel_pm_prepare: intel_resume_child_device failed: -22 → systemd-sleep: Failed to put system to sleep. System resumed again: Invalid argument. ~7,500 Failed to sync masks lines in 7 minutes. Four list_debug WARNINGs also fired (see note below).
~16:00 User forced power-off (journal ends mid-suspend; next boot logs fsck dirty bit). Machine on battery.
18:42 Boot on battery, SOF fw 2.15.0.1. Codec never enumerates: no devid, no topology load, Timed out waiting for device re-attach at +5.2 s after Booted firmware. /proc/asound/cards empty. sysfs status UNATTACHED.
09-29 01:36–11:15 One s2idle cycle, entered and exited cleanly (no card present).
09-29 ~13:20 sysfs status now reads Attached, device_number 6; no new kernel messages since boot; still no card.
09-29 13:25 Warm reboot (on AC). Codec enumerates at +25.6 s, topology loads, card created, mic and speakers work.

Logs

Attached: failing-boot-excerpts.txt (the sequences above from three boots, ACPI PMAP noise filtered) and alsa-info.txt from the working boot. Full journals for all three boots are available on request; the failing boot alone is ~15k lines.

Note on the list_debug warnings: they fire in put_css_set_locked / cgroup_task_free / find_css_set, i.e. cgroup list corruption, during the suspend-abort loop (ksoftirqd, systemd, udev-worker). I do not know whether they are caused by the SoundWire error path or are coincidental; I include them only because they happened during the loop and the machine had been stable for ten days before it.

Questions

  1. Is the 13:48 resume failure (Program SCP Ack not received on the first transaction after resume) a known cs42l43 / soundwire_intel issue on LNL with this BIOS? Anything in 7.3+ or pending that would address it?
  2. Should a codec whose pm_runtime_resume fails permanently block system suspend? On this machine it turned a lost microphone into an unusable laptop. Marking the peripheral dead and letting suspend proceed would have been far less harmful.
  3. Is the boot-time behaviour expected: if Timed out waiting for device re-attach fires during probe and the peripheral attaches later (as it eventually did here), nothing retries card creation?

Happy to test patches or debug builds; I can reproduce the "codec stuck across S5" state only opportunistically, but the sysfs Attached-without-card state was observable for hours. I can also enable soundwire_bus.dyndbg / soundwire_intel.dyndbg for the next occurrence if that helps.

Background noise (present on every boot, including working ones)

ACPI Error: Incorrect return type from \_SB_.PC00.HDAS.IDA_.SNDW.SWD6.AF01.PMAP - received [Package], requested [Buffer]
ACPI: \_SB_.PC00.HDAS.IDA_.SNDW.SWD6.AF03.CE31: Failed to expose (-17)
cs42l43 sdw:0:0:01fa:4243:01: Driver needs fixing: Unsorted reg_defaults, sorting the copy
cs42l43 sdw:0:0:01fa:4243:01: supply vdd-* not found, using dummy regulator

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions