Repository navigation
Description
Summary
After resuming from S3 suspend on 7.2.14, SOF fails to resume, all PCMs
fail to open with -EINVAL (-22), and userspace only sees a Dummy Output.
The same machine, firmware and userspace work correctly on 6.18.x LTS.
This looks like a regression in SOF system resume / wake IRQ handling.
Hardware / platform
- Device: Dell Chromebook 3100 (Google Fleex), Intel Gemini Lake
- Audio controller: 00:0e.0 [8086:3198], driver sof-audio-pci-intel-apl
- Card: sof-glkda7219max (Google-Fleex-rev5), codec DA7219 + MAX98357A
- Firmware: MrChromebox coreboot, BIOS "MrChromebox-2609.3 10/28/2026"
- Suspend mode: deep (S3)
Software
- Arch Linux, kernel 7.2.14-arch1-1 (BAD)
- Kernel 6.18. LTS (GOOD)
- sof-firmware: <pacman -Q sof-firmware>
- alsa-ucm-conf: <pacman -Q alsa-ucm-conf>
- PipeWire 1.6.10 + WirePlumber
Steps to reproduce
- Boot 7.2.14 with audio working.
- Suspend (systemctl suspend, S3 deep) and resume.
- wpctl status shows only "Dummy Output".
Expected: audio devices remain available after resume (as on 6.18).
Actual: SOF resume fails; card remains listed in /proc/asound/cards
and driver stays bound, but every PCM open fails.
Key log excerpts
Resume WARNING:
Unbalanced IRQ 125 wake disable
WARNING: kernel/irq/manage.c:892 at irq_set_irq_wake+0x16f/0x250
Workqueue: async async_run_entry_fn
Call Trace:
hda_dsp_resume+0x164/0x1b0 [snd_sof_intel_hda_common]
sof_resume.isra.0+0x51/0x140 [snd_sof]
dpm_run_callback / device_resume / async_resume ...
(RBX = 0xffffffea, i.e. -EINVAL)
Afterwards, every PCM open fails:
sof-audio-pci-intel-apl 0000:00:0e.0: ASoC error (-22): at
snd_soc_pcm_component_pm_runtime_get() on 0000:00:0e.0
Speakers / Headset / HDMI1-3 / DMIC: ASoC error (-22) at
dpcm_be_dai_startup / dpcm_fe_dai_startup
Teardown shows negative use counts that worsen each cycle:
sof_ipc3_tear_down_all_pipelines: widget PCM0P is still in use: count -2
(count -3 after the next failed cycle)
Also present (may be unrelated): da7219 i2c-DLGS7219:00: SRM failed to lock
Observations
- /proc/asound/cards still lists the card; driver stays bound.
- Restarting PipeWire/WirePlumber does not help.
- Unbinding the driver via sysfs hangs.
- Setting power/control=on after the failure does not help.
- My analysis (not verified against source): hda_dsp_resume() appears to call
disable_irq_wake() on the DSP IRQ without a matching enable_irq_wake(),
returning -EINVAL and leaving the device in an error state. - Not bisected yet. Happy to bisect between v6.18 and v7.2 if useful.
- System info
$ uname -a (bad kernel)
Linux Chromebook 7.2.14-arch1-1 multiple ssp and icelake support #1 SMP PREEMPT_DYNAMIC Fri, 30 Oct 2026 14:32:40 +0000 x86_64 GNU/Linux
Hardware name: Google Fleex/Fleex, BIOS MrChromebox-2609.3 10/28/2026
$ lspci -nnk | grep -A4 -i audio
00:0e.0 Multimedia audio controller [0401]: Intel Corporation Celeron/Pentium Silver Processor High Definition Audio [8086:3198] (rev 06)
DeviceName: Multimedia audio controller
Kernel driver in use: sof-audio-pci-intel-apl
Kernel modules: snd_soc_avs, snd_sof_pci_intel_apl, snd_hda_intel
$ cat /proc/asound/cards
0 [sofglkda7219max]: sof-glkda7219ma - sof-glkda7219max
Google-Fleex-rev5
2. The key WARNING (first error on resume)
[ 9231.690095] ACPI: PM: Preparing to enter system sleep state S3
[ 9231.703410] ACPI: PM: Waking up from system sleep state S3
[ 9231.716798] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io,decodes=io:owns=io+mem
[ 9231.939577] usb 1-7: reset high-speed USB device number 2 using xhci_hcd
[ 9232.068207] ------------[ cut here ]------------
[ 9232.068213] Unbalanced IRQ 125 wake disable
[ 9232.068214] WARNING: kernel/irq/manage.c:892 at irq_set_irq_wake+0x16f/0x250, CPU#1: kworker/u8:0/25486
[ 9232.068223] Modules linked in: [list truncated]
[ 9232.068389] CPU: 1 UID: 0 PID: 25486 Comm: kworker/u8:0 Not tainted 7.2.14-arch1-1 #1 PREEMPT(full) 71ccc3c02e28b5f120c32d0d286d0df48573e295
[ 9232.068393] Hardware name: Google Fleex/Fleex, BIOS MrChromebox-2609.3 10/28/2026
[ 9232.068396] Workqueue: async async_run_entry_fn
[ 9232.068402] RIP: 0010:irq_set_irq_wake+0x171/0x250
[ 9232.068407] RSP: 0000:ffffcaf406083d18 EFLAGS: 00010046
[ 9232.068409] RAX: 0000000000000000 RBX: 00000000ffffffea RCX: ffff8ac94346f200
[ 9232.068411] RDX: 0000000000000001 RSI: 000000000000007d RDI: ffffffffa1908260
[ 9232.068412] RBP: 000000000000007d R08: 0000000000000246 R09: 0000000000000001
[ 9232.068422] Call Trace:
[ 9232.068425]
[ 9232.068433] hda_dsp_resume+0x164/0x1b0 [snd_sof_intel_hda_common 265d3f2183e436ebd238d1d17f5cc39f6093070e]
[ 9232.068462] ? __pfx_pci_pm_resume+0x10/0x10
[ 9232.068468] ? pci_pm_resume+0x72/0x140
[ 9232.068471] sof_resume.isra.0+0x51/0x140 [snd_sof 22ee7e8f150923e37379aa1920fbcc6fab0328e5]
[ 9232.068526] dpm_run_callback+0x62/0x190
[ 9232.068531] ? dpm_wait_for_superior+0x13d/0x1a0
[ 9232.068534] device_resume+0x19c/0x2a0
[ 9232.068537] async_resume+0x21/0x30
[ 9232.068540] async_run_entry_fn+0x36/0x160
[ 9232.068543] process_one_work+0x19f/0x370
[ 9232.068547] worker_thread+0x1b1/0x310
[ 9232.068556] kthread+0xe4/0x120
[ 9232.068564] ret_from_fork+0x2a7/0x330
[ 9232.068567] ret_from_fork_asm+0x1a/0x30
[ 9232.068572]
[ 9232.068573] ---[ end trace 0000000000000000 ]---
[ 9232.123194] PM: suspend exit
3. Teardown with negative counts
These appeared just before the WARNING above, so the DSP was already in a bad state from an earlier failed cycle.
[ 9231.385026] sof-audio-pci-intel-apl 0000:00:0e.0: sof_ipc3_tear_down_all_pipelines: widget BUF2.0 is still in use: count -2
[ 9231.385037] sof-audio-pci-intel-apl 0000:00:0e.0: sof_ipc3_tear_down_all_pipelines: widget PCM1P is still in use: count -2
[ 9231.385069] sof-audio-pci-intel-apl 0000:00:0e.0: sof_ipc3_tear_down_all_pipelines: widget PCM0P is still in use: count -2
(all pipeline widgets listed; same pattern)
[ 9239.184895] sof-audio-pci-intel-apl 0000:00:0e.0: sof_ipc3_tear_down_all_pipelines: widget PIPELINE.7.HDA5.OUT is still in use: count -3
[ 9239.185741] sof-audio-pci-intel-apl 0000:00:0e.0: sof_ipc3_tear_down_all_pipelines: widget PCM1P is still in use: count -3
(all pipeline widgets listed; same pattern, now -3)
4. PCM open failures after resume
[14029.043093] sof-audio-pci-intel-apl 0000:00:0e.0: ASoC error (-22): at snd_soc_pcm_component_pm_runtime_get() on 0000:00:0e.0
[14029.043109] iDisp3: ASoC error (-22): at __soc_pcm_open() on iDisp3
[14029.043113] HDMI3: ASoC error (-22): at dpcm_be_dai_startup() on HDMI3
[14029.043116] HDMI3: ASoC error (-22): at dpcm_fe_dai_startup() on HDMI3
[14029.052584] sof-audio-pci-intel-apl 0000:00:0e.0: ASoC error (-22): at snd_soc_pcm_component_pm_runtime_get() on 0000:00:0e.0
[14029.052593] SSP2-Codec: ASoC error (-22): at __soc_pcm_open() on SSP2-Codec
[14029.052597] Headset: ASoC error (-22): at dpcm_be_dai_startup() on Headset
[14029.054777] SSP1-Codec: ASoC error (-22): at __soc_pcm_open() on SSP1-Codec
[14029.054781] Speakers: ASoC error (-22): at dpcm_be_dai_startup() on Speakers
[14029.063231] dmic01: ASoC error (-22): at __soc_pcm_open() on dmic01
(same pattern repeats for every PCM on each open attempt)
5. Userspace result
$ wpctl status (PipeWire 1.6.10, WirePlumber)
Audio
├─ Devices:
│ 50. Celeron/Pentium Silver Processor High Definition Audio [alsa]
├─ Sinks:
│ * 38. Dummy Output [vol: 0.45]
Settings
└─ Default Configured Devices:
0. Audio/Sink alsa_output.pci-0000_00_0e.0-platform-glk_da7219_def.HiFi__Headphones__sink
6. Possibly unrelated
da7219 i2c-DLGS7219:00: SRM failed to lock (repeats frequently, also after resumes)
Activity