[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.44L0.1806151308310.1387-100000@iolanthe.rowland.org>
Date: Fri, 15 Jun 2018 13:17:45 -0400 (EDT)
From: Alan Stern <stern@...land.harvard.edu>
To: Mikulas Patocka <mpatocka@...hat.com>
cc: Steven Rostedt <rostedt@...dmis.org>,
Thomas Gleixner <tglx@...utronix.de>,
Ming Lei <ming.lei@...hat.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
USB list <linux-usb@...r.kernel.org>,
Kernel development list <linux-kernel@...r.kernel.org>
Subject: High-priority softirqs [was: [PATCH] usb: don't offload isochronous
urb completions to ksoftirq]
On Fri, 15 Jun 2018, Mikulas Patocka wrote:
> I think the major problem (in the upstream kernel) with softirq latency is
> this:
> static inline void invoke_softirq(void)
> {
> if (ksoftirqd_running())
> return;
>
> It means that if any piece of code kicks ksoftirq, no tasklets are
> processed in the irq context at all.
>
> So, the ehci callbacks will be offloaded to ksoftirqd (no matter how small
> they are) and this causes audio skipping. Could this be changed, so that
> it processes tasklets submitted with "tasklet_hi_schedule" in irq context
> even if ksoftirqd is running?
That's a great question. Basically you're asking to have the HI
softirq always handled in the bottom half, never in ksoftirqd, right?
Or maybe to have more than one softirq thread, to handle different
softirq levels, so that they can be assigned differing priorities.
> It's not easy - __do_softirq lacks any locking - so it can't run
> concurrently in process context and in irq context.
I have no idea. Maybe someone with a better understanding of this part
of the kernel can help.
Alan Stern
Powered by blists - more mailing lists