Re: [PATCH v9 09/15] sched: Introduce sched_energy_present static key

From: Quentin Perret
Date: Thu Nov 22 2018 - 10:55:35 EST


On Thursday 22 Nov 2018 at 16:51:41 (+0100), Rafael J. Wysocki wrote:
> On Thu, Nov 22, 2018 at 4:25 PM Quentin Perret <quentin.perret@xxxxxxx> wrote:
> >
> > On Thursday 22 Nov 2018 at 11:25:45 (+0100), Peter Zijlstra wrote:
> > > On Thu, Nov 22, 2018 at 09:32:39AM +0000, Quentin Perret wrote:
> > > > Hmm, I went too fast, that's totally broken. But there's still something
> > > > we can do with static_branch_{inc,dec} I think. I'll come back later
> > > > with a better solution.
> > >
> > > Right; if you count the rd's that have pd set, it should work-ish. Yes,
> > > much cleaner if you can get it to work.
> >
> > So, I came up with the following code which seems to work OK. It's not
> > as I clean as I'd like, though. The fact that free_pd() can be called in
> > softirq context is annoying to manipulate the static key ...
> >
> > An alternative to this work item workaround is to do static_branch_dec()
> > from build_perf_domains() and next to the three call sites of
> > free_rootdomain() in order to avoid the call_rcu() context. Not very
> > pretty either.
> >
> > Or we can just stick with your original suggestion to carry a boolean
> > around.
>
> What's problematic with carrying a boolean around?

Nothing, I was just trying to see if I could find a more elegant way to
increment/decrement the static key as we create/destroy the perf
domains.

I would not describe the work item thing I came up with as particularly
elegant, though :-)

So, all in all, the boolean is fine by me if we all agree it is nicer.

Thanks,
Quentin