On Thu, Nov 22, 2018 at 4:25 PM Quentin Perret <quentin.per...@arm.com> 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?