[PATCH v2 2/2] ASoC: Intel: avs: Disconnect substream if suspend or resume fails

Cezary Rojewski cezary.rojewski at intel.com
Mon Nov 14 15:08:17 CET 2022



On 2022-11-14 2:02 PM, Takashi Iwai wrote:
> On Mon, 14 Nov 2022 12:37:29 +0100,
> Cezary Rojewski wrote:
>>
>> To improve performance and overall system stability, suspend/resume
>> operations for ASoC cards always return success status and defer the
>> actual work.
>>
>> Because of that, if a substream fails to resume, userspace may still
>> attempt to invoke commands on it as from their perspective the operation
>> completed successfully. Set substream's state to DISCONNECTED to ensure
>> no further commands are attempted.

...

> Hm, that might work, but note that, once when the stream is set with
> the disconnected state, it won't be taken back to the normal state any
> longer on most sound backends.  That is, it'll be gone and won't
> revive unless you completely unload and reload the whole stuff.  If
> that's the intended behavior, that's fine, of course.  So just to make
> sure.

Good point.

Our intention: if we fail e.g.: on resume, we would like the framework 
to invoke ->hw_free() and close us. Right now, if we pretend that 
everything is okay, invalid actions can be performed on our streams. 
This all comes down to userspace calling "just" snd_pcm_resume(). If we 
had an option to opt-in to a _hw_params() + _prepare() + _resume() path, 
then things would look differently.


More information about the Alsa-devel mailing list