Re: [PATCH 05/21] ASoC: SOF: Intel: hda-sdw-bpt: Stop active DMA before closing BPT streams
From: Péter Ujfalusi
Date: Fri Oct 30 2026 - 08:24:38 EST
On 30/10/2026 12:46, Lee Jones wrote:
> When sdw_enable_stream() fails in intel_ace2x_bpt_send_async() after
> hda_sdw_bpt_send_async() has already started the TX and RX DMA streams,
> intel_ace2x_bpt_close_stream() invokes hda_sdw_bpt_close() directly
> without calling hda_sdw_bpt_wait(). As a result,
> hda_sdw_bpt_dma_deprepare() tears down the DMA buffers and BDL while
> the DMA hardware is still running.
>
> Disable any running TX or RX BPT DMA stream at the start of
> hda_sdw_bpt_close() before unmapping channels and depreparing DMA
> resources.
>
> Fixes: 4c1ce9f37d8a ("soundwire: intel_ace2x: add BPT send_async/wait callbacks")
> Closes: https://sashiko.dev/#/bug/linux-ff0012de-abdd-4796-875e-b1fbbf47235f
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Lee Jones <lee@xxxxxxxxxx>
Acked-by: Peter Ujfalusi <peter.ujfalusi@xxxxxxxxxxxxxxx>
> ---
> sound/soc/sof/intel/hda-sdw-bpt.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/sound/soc/sof/intel/hda-sdw-bpt.c b/sound/soc/sof/intel/hda-sdw-bpt.c
> index ba9fbd662b85..9d97d8676251 100644
> --- a/sound/soc/sof/intel/hda-sdw-bpt.c
> +++ b/sound/soc/sof/intel/hda-sdw-bpt.c
> @@ -456,6 +456,12 @@ int hda_sdw_bpt_close(struct device *dev, int link_id, struct hdac_ext_stream *b
> int ret;
> int ret1;
>
> + if (bpt_rx_stream && hdac_stream(bpt_rx_stream)->running)
> + hda_sdw_bpt_dma_disable(dev, bpt_rx_stream);
> +
> + if (bpt_tx_stream && hdac_stream(bpt_tx_stream)->running)
> + hda_sdw_bpt_dma_disable(dev, bpt_tx_stream);
> +
> /*
> * In the case of SoundWire we need to reset the PCMSyCM registers.
> * Need to continue depreparing the DMA buffers even if this fails.
--
Péter