All of lore.kernel.org
 help / color / mirror / Atom feed
* ASoC q6asm race condition when stopping and preparing the stream
@ 2026-05-01 14:41 Richard Acayan
  2026-05-01 15:27 ` Alexey Klimov
  2026-05-15  9:17 ` Srinivas Kandagatla
  0 siblings, 2 replies; 7+ messages in thread
From: Richard Acayan @ 2026-05-01 14:41 UTC (permalink / raw)
  To: Srinivas Kandagatla, Liam Girdwood, Mark Brown, Jaroslav Kysela,
	Takashi Iwai, Greg Kroah-Hartman, Richard Acayan, Kees Cook,
	Joris Verhaegen, Kuninori Morimoto, linux-sound, linux-arm-msm,
	linux-kernel

Hi,

There seems to be a race condition in q6asm when stopping the stream
(with uncompressed PCM). When receiving SNDRV_PCM_TRIGGER_STOP, the
driver sets the state to Q6ASM_STREAM_STOPPED and sends CMD_EOS to the
ADSP. If userspace decides to prepare the stream again in
q6asm_dai_prepare before receiving ASM_CLIENT_EVENT_CMD_EOS_DONE, the
memory-mapped region appears to still be in use and fails to map again.

I believe this race was observed since commit 81c53b52de21 ("ASoC: qcom:
qdsp6: q6asm-dai: set 10 ms period and buffer alignment."), but would
need to verify. On sdm670, we are coping downstream by keeping the state
as Q6ASM_STREAM_RUNNING until receiving CMD_EOS_DONE.

Can the ADSP emit DATA_WRITE_DONE or DATA_READ_DONE before CMD_EOS_DONE?
We might need an extra stopping state between CMD_EOS and CMD_EOS_DONE
so the driver doesn't request more data transfers.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-05-15 17:38 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-01 14:41 ASoC q6asm race condition when stopping and preparing the stream Richard Acayan
2026-05-01 15:27 ` Alexey Klimov
2026-05-01 23:53   ` Richard Acayan
2026-05-15  5:59     ` Val Packett
2026-05-15  9:22       ` Srinivas Kandagatla
2026-05-15 17:38   ` Srinivas Kandagatla
2026-05-15  9:17 ` Srinivas Kandagatla

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.