В Чт, 23/04/2020 в 19:35 +0200, Takashi Iwai пишет: > On Thu, 23 Apr 2020 19:29:08 +0200, > Takashi Iwai wrote: > > On Thu, 23 Apr 2020 18:57:34 +0200, > > Alexander Tsoy wrote: > > > And some further notes: > > > > > > - I removed locking from snd_usb_endpoint_next_packet_size() and > > > this > > > seems completely fixed an issue with large URBs I reported here: > > > > > > https://bugzilla.kernel.org/show_bug.cgi?id=199327#c28 > > > > > > So playing at 96 kHz, driver packs 48 frames per URB and no more > > > audio > > > discontinuities. > > > > Hmm, that's weird. > > > > If removing the lock from snd_usb_endpoint_next_packet_size() > > really > > fixes the problem, it implies the lock contention. But as far as I > > see the code performed in this lock isn't conflicting so much. The > > URB processing shouldn't happen in parallel for the same EP. > > BTW, one potential racy code I found while looking at the code is the > list management in queue_pending_output_urbs(). The fix patch is > below. OK, it seems like it was just a luck. I'm still getting clicking artifacts with and without your patch, with and without locking. Will investigate further.