Re: [PATCH 1/4] spi: For controllers that need realtime always use the pump thread
From: Doug Anderson
Date: Mon May 13 2019 - 16:26:47 EST
Hi,
On Sun, May 12, 2019 at 10:05 AM Mark Brown <broonie@xxxxxxxxxx> wrote:
> On Fri, May 10, 2019 at 03:34:34PM -0700, Douglas Anderson wrote:
> > If a controller specifies that it needs high priority for sending
> > messages we should always schedule our transfers on the thread. If we
> > don't do this we'll do the transfer in the caller's context which
> > might not be very high priority.
>
> If performance is important you probably also want to avoid the context
> thrashing - executing in the calling context is generally a substantial
> performance boost. I can see this causing problems further down the
> line when someone else turns up with a different requirement, perhaps in
> an application where the caller does actually have a raised priority
> themselves and just wanted to make sure that the thread wasn't lower
> than they are. I guess it'd be nice if we could check what priority the
> calling thread has and make a decision based on that but there don't
> seem to be any facilities for doing that which I can see right now.
In my case performance is 2nd place to a transfer not getting
interrupted once started (so we don't break the 8ms rule of the EC).
My solution in v2 of my series is to take out the forcing in the case
that the controller wanted "rt" priority and then to add "force" to
the parameter name. If someone wants rt priority for the thread but
doesn't want to force all transfers to the thread we can later add a
different parameter for that?
-Doug