Re: mm: deadlock between get_online_cpus/pcpu_alloc

From: Michal Hocko
Date: Wed Feb 08 2017 - 12:38:05 EST


On Wed 08-02-17 09:11:06, Cristopher Lameter wrote:
> On Wed, 8 Feb 2017, Michal Hocko wrote:
>
> > > Huch? stop_machine() is horrible and heavy weight. Don't go there, there
> > > must be simpler solutions than that.
> >
> > Absolutely agreed. We are in the page allocator path so using the
> > stop_machine* is just ridiculous. And, in fact, there is a much simpler
> > solution [1]
>
> That is nonsense. stop_machine would be used when adding removing a
> processor. There would be no need to synchronize when looping over active
> cpus anymore. get_online_cpus() etc would be removed from the hot
> path since the cpu masks are guaranteed to be stable.

I have no idea what you are trying to say and how this is related to the
deadlock we are discussing here. We certainly do not need to add
stop_machine the problem. And yeah, dropping get_online_cpus was
possible after considering all fallouts.

--
Michal Hocko
SUSE Labs