[PATCH v2] ASoC: SOF: core: unregister clients and machine drivers in .shutdown
Péter Ujfalusi
peter.ujfalusi at linux.intel.com
Thu Feb 17 08:17:18 CET 2022
On 16/02/2022 15:32, Kai Vehmanen wrote:
> From: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
>
> On a platform shutdown, the expectation for most drivers is that
> userspace tasks will release all resources. When those sequences do
> not complete, it can be the case that PCM devices exposed by ALSA
> cards are used *after* the DSP shutdown completes, leading to a
> platform hang.
>
> When the clients and machine drivers provide an _unregister callback,
> let's invoke it in the shutdown sequence.
Github lost my Reviewed-by...
Reviewed-by: Peter Ujfalusi <peter.ujfalusi at linux.intel.com>
> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
> Reviewed-by: Kai Vehmanen <kai.vehmanen at linux.intel.com>
> Reviewed-by: Ranjani Sridharan <ranjani.sridharan at linux.intel.com>
> Signed-off-by: Kai Vehmanen <kai.vehmanen at linux.intel.com>
> ---
> sound/soc/sof/core.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> V1->V2:
> - correct patch title to have "ASoC: SOF: " prefix (reported
> by Amadeusz)
>
> diff --git a/sound/soc/sof/core.c b/sound/soc/sof/core.c
> index d99ecbb4282d..2a35d8ddf43e 100644
> --- a/sound/soc/sof/core.c
> +++ b/sound/soc/sof/core.c
> @@ -463,10 +463,19 @@ EXPORT_SYMBOL(snd_sof_device_remove);
> int snd_sof_device_shutdown(struct device *dev)
> {
> struct snd_sof_dev *sdev = dev_get_drvdata(dev);
> + struct snd_sof_pdata *pdata = sdev->pdata;
>
> if (IS_ENABLED(CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE))
> cancel_work_sync(&sdev->probe_work);
>
> + /*
> + * make sure clients and machine driver(s) are unregistered to force
> + * all userspace devices to be closed prior to the DSP shutdown sequence
> + */
> + sof_unregister_clients(sdev);
> +
> + snd_sof_machine_unregister(sdev, pdata);
> +
> if (sdev->fw_state == SOF_FW_BOOT_COMPLETE)
> return snd_sof_shutdown(sdev);
>
>
> base-commit: f7d344a2bd5ec81fbd1ce76928fd059e57ec9bea
--
Péter
More information about the Alsa-devel
mailing list