Re: [RFD PATCH 3/5] sched/cpufreq_schedutil: make worker kthread be SCHED_DEADLINE

From: Rafael J. Wysocki
Date: Mon Mar 27 2017 - 13:43:29 EST


On Monday, March 27, 2017 06:13:36 PM Juri Lelli wrote:
> On 27/03/17 19:05, Rafael J. Wysocki wrote:
> > On Monday, March 27, 2017 06:01:34 PM Juri Lelli wrote:
> > > On 27/03/17 18:50, Peter Zijlstra wrote:
> > > > On Fri, Mar 24, 2017 at 02:08:58PM +0000, Juri Lelli wrote:
> > > > > Worker kthread needs to be able to change frequency for all other
> > > > > threads.
> > > > >
> > > > > Make it special, just under STOP class.
> > > >
> > > > *yuck* ;-)
> > > >
> > >
> > > Eh, I know. :/
> > >
> > > > So imagine our I2C/SPI bus is 'busy' and its mutex taken, then this
> > > > 'soecial' task will need to boost it. Now add BWI to your thinking and
> > > > shudder.
> > > >
> > >
> > > Currently that kthread is FIFO already, so boosting still applies. Not as
> > > bad as in the BWI case though. More thinking required.
> > >
> > > >
> > > > On IRC broonie mentioned that:
> > > >
> > > > - most PMIC operations are fire and forget (no need to wait for a
> > > > response).
> > > > - PMIC 'packets' are 'small'.
> > > > - SPI has the possibility to push stuff on the queue.
> > > >
> > > > Taken together this seems to suggest we can rework cpufreq drivers to
> > > > function in-context, either directly push the packet on the bus if
> > > > available, or queue it and let whoever owns it sort it without blocking.
> > > >
> > > > It might be possible to rework/augment I2C to also support pushing stuff
> > > > on a queue.
> > > >
> > > >
> > > > So if we can make all that work, we can do away with this horrible
> > > > horrible kthread. Which is, IMO, a much better solution.
> > > >
> > > > Thoughts?
> > >
> > > Right. This is more a schedutil (cpufreq) problem though, IMHO. Even if
> > > I agree that what you are proposing is way more clean (and here I
> > > actually assume it's feasible at all), I fear it will take quite some
> > > time to get reworked.
> >
> > Why do you think so?
> >
>
> It simply seemed a major rework to me. :)

OK

So there are two pieces here.

One is that if we want *all* drivers to work with schedutil, we need to keep
the kthread for the ones that will never be reworked (because nobody cares
etc). But then perhaps the kthread implementation may be left alone (because
nobody cares etc).

The second one is that there are drivers operating in-context that work with
schedutil already, so I don't see major obstacles to making more drivers work
that way. That would be only a matter of reworking the drivers in question.

Thanks,
Rafael