On Fri, Apr 14, 2023 at 10:26:26AM +0200, Takashi Iwai wrote:
Indeed we might want to take the kernel-side fix in the end, but let's check things a bit more beforehand.
i'll post updated patches soon, then you can sleep over it. :-D
(i'm being a bit slow, because i'm also developing tooling for maintaining stacked branches and (re-)posting them, and of course i want to try it out with real data.)
BTW, I guess that one missing piece in your patch is the case where the drain is called at the moment of fully filled data. You added snd_pcm_playback_silence() at snd_pcm_do_drain_init(), but in this scenario, the call wouldn't do anything at this moment. But snd_pcm_playback_silence() won't be called afterwards because runtime->silence_size = 0. So this workaround won't take effect in that case, no?
the hunk in snd_pcm_update_hw_ptr0() should take care of that.
regards