[PATCH] ASoC: soc-pcm: Revert "call snd_soc_component_open/close() once"

Kai Vehmanen kai.vehmanen at linux.intel.com
Fri Feb 21 12:09:44 CET 2020


Hello Morimoto-san,

On Fri, 21 Feb 2020, Kuninori Morimoto wrote:

> Kai Vehmanen wrote:
> > So if the primary problem is the messy rollback in case one open fails, 
> > what if we do the rollback directly in soc_pcm_components_open() and do
> > not add any additional tracking..?
> > 
> > Let me send a proposal patch for that.
> It seems the patch was not so good cleanup...
> 
> Thank you for your proposal patch. I checked it.
> But, if it rollback when error with *last,
> my opinion is original code
> (= soc_pcm_components_close() needs *last parameter)
> (= same as just revert the patch) is better.

well, I do think the original code could still need a cleanup, so the 
effort is very much welcome. Having to pass the "last" parameter to 
components_open() just so that we can clean up if errors happen, seems
a bit out of place.

But yeah, easier said than done. We have now three alternatives to solve 
this:

1. do the cleanup locally in soc_pcm_components_open()
	[PATCH] ASoC: soc-pcm: fix state tracking error in snd_soc_component_open/close()

2. revert to original implementation with "last" passed to components_open()
	[PATCH] ASoC: soc-pcm: Revert "call snd_soc_component_open/close() once"

3. implement opened/module counters
	[PATCH][RFC] ASoC: soc-component: count snd_soc_component_open/close()

... I have tested all three and they seem to work.

I still don't really like (1), but I agree (2) adds more code in total.
I worry (3) might backfire with some component-substream combinations.

So maybe we'll go with (1)? We do need to merge one of them, because 
current merged code is broken on many platforms.

Br, Kai


More information about the Alsa-devel mailing list