Re: [PATCH] usb: don't offload isochronous urb completions to ksoftirq

From: Mikulas Patocka
Date: Wed Jun 13 2018 - 15:30:45 EST




On Wed, 13 Jun 2018, Alan Stern wrote:

> [Steve: Sorry for dumping you into the middle of this discussion.
> Please see especially the last two paragraphs below. Mikulas is
> getting dropouts with USB audio because part of the processing uses a
> tasklet.]

The problem is this:

I have a single core machine with a usb2 sound card. When I increase the
priority of a music player, the audio starts skipping.

The reason for the skipping is that the ehci usb driver is offloading urb
callbacks using tasklet_hi_schedule, the callbacks end up being offloaded
to the ksoftirqd thread (that has priority 0), the music player with
elevated priority preempts ksoftirqd and causes delays in the urb
callbacks.

Is this some deficiency in the softirq subsystem? (should we perhaps treat
tasklet_hi specially and not offload it as much as the others?) Or should
the ehci driver be fixed not to use tasklets?

Mikulas