Re: [PATCH] mm/page_alloc: remove the static for local variable node_order

From: Michal Hocko
Date: Tue Jan 05 2021 - 02:30:04 EST


On Mon 04-01-21 15:23:57, Andrew Morton wrote:
> On Wed, 30 Dec 2020 12:42:33 +0000 Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
>
> > On Wed, Dec 30, 2020 at 07:40:14PM +0800, Hui Su wrote:
> > > local variable node_order do not need the static here.
> >
> > It bloody well does. It can be up to 2^10 entries on x86 (and larger
> > on others) That's 4kB which you've now moved onto the stack.
>
> That being said, could we kmalloc the scratch area in
> __build_all_zonelists()? And maybe remove that static spinlock?

I am not sure we can (e.g. early init code) but even if we could, what
would be an advantage. This code is called very seldom with a very
shallow stacks so using the stack allocation sounds like the easiest
thing to do.

> (what blocks node and cpu hotplug in there??)

Memory hotplug is excluded by the caller when it matters (e.g. no
locking for the early init).
--
Michal Hocko
SUSE Labs