Hi, On Fri, 9 Dec 2022, Mark Brown wrote: > On Fri, Dec 09, 2022 at 01:45:29PM +0200, Kai Vehmanen wrote: > > > This reverts commit 83bfc7e793b555291785136c3ae86abcdc046887. > > Please include human readable descriptions of things like commits and > issues being discussed in e-mail in your mails, this makes them much ack, will fix in V2. > easier for humans to read especially when they have no internet access. > I do frequently catch up on my mail on flights or while otherwise > travelling so this is even more pressing for me than just being about > making things a bit easier to read. > > > - /* > > - * 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); > > - > > I am somewhat surprised that these block on the kernel side rather than > just disconnecting the kernel side of whatever userspace sees - I'd > thought they were more like hotplug operations than something blocking. Yes, this is not so obvious. The machine unregister ends up in soc-core.c:soc_cleanup_card_resources() --cut-- static void soc_cleanup_card_resources(struct snd_soc_card *card) { » struct snd_soc_pcm_runtime *rtd, *n; » if (card->snd_card) » » snd_card_disconnect_sync(card->snd_card); --cut-- ... and there we have the "sync" variant call that gets us in trouble with e.g. kexec(). This seems to be only user of snd_card_disconnect_sync(), but it was specifically added to fix a bug in commit 0ced7b050224 ("ASoC: soc-pcm: remove soc_pcm_private_free()"). Br, Kai