Same issue here on a sibling machine with the same ACP 6.3 / snd_pci_ps stack,
on a much newer kernel than the original report (6.8), so it does not appear
to be fixed upstream yet.

Hardware / software:
- Lenovo ThinkPad L14 Gen 6 AMD (21S9), BIOS R2UET27W (1.27), EC 1.22
- ACP [1022:15e2] rev 63, driver snd_pci_ps + snd_ps_pdm_dma, internal DMIC
  (acp63 card, used via the UCM HiFi profile of the HDA ALC257 card)
- Debian 13, kernel 6.12.113+deb13-amd64, PipeWire / WirePlumber 1.4.2
- Sleep mode: s2idle only (/sys/power/mem_sleep = [s2idle])
- Note: kernel is tainted by an out-of-tree endpoint-security module

Symptom:
After several s2idle cycles (this boot: broken after the 4th resume; it
typically appears after ~4-5 cycles) the internal DMIC captures a constant
value. Reboot fixes it. Speakers, the HDA analog mic input and the USB dock
mic keep working.

Raw capture, bypassing PipeWire:
  arecord -D hw:acp63,0 -f S32_LE -c 2 -r 48000 -d 2 raw.wav
-> both channels are 0x80000000 (-2147483648) in ~99.97% of samples,
   with a handful of 0x7fffffff spikes. Through PipeWire (S16) it is
   a constant -20670. So PCM/DMA keep running, but the PDM data looks
   stuck low.

What does NOT bring it back (all tested while in the broken state):
- restarting pipewire / pipewire-pulse / wireplumber
- unbind + bind of snd_pci_ps on 0000:c5:00.5 (note: the unbind blocks in
  snd_card_disconnect_sync until pipewire/wireplumber release controlC2,
  which is probably the same "hang" as the modprobe -r in the original
  report; after the restart the unbind completes, but the mic is still broken)
- letting the ACP runtime-suspend: it reaches D3cold, ACP_.PWRS
  resource_in_use=0, and capture stays broken afterwards
- one more suspend/resume cycle
- toggling source mute, the "Mic ACP LED Capture Switch" control, and
  the physical F4 mic-mute key

Other observations:
- no ACP/PDM errors in the kernel log around resume
- MSI is disabled on the ACP (MSI: Enable-) and there are no IO_PAGE_FAULTs,
  so this is not the "disable MSI on resume" issue fixed in the 2026 ps series
- the ACP is power-cycled at runtime and the driver is fully re-probed, but
  the state survives both, so the stuck state seems to be outside the ACP
  block (DMIC power/clock, pin config, or something firmware/EC-controlled
  across s2idle) and is only reset by a cold boot / POST.

Happy to provide more data or test patches.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2077341

Title:
  snd_pci_ps: onboard mic broken after resume

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-meta-hwe-6.8/+bug/2077341/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to