2011-06-24 22:07:39

by Ian Kumlien

[permalink] [raw]
Subject: [BUG?] numa required on x86_64?

Hi all,

Just found this when wanting to play with development kernels again.
Since there is no -gitXX snapshots anymore, I cloned the git =)...

But, it failed to build properly with my config:

mm/page_cgroup.c line 308: node_start_pfn and node_end_pfn is only
defined under NUMA on x86_64.

The commit that changed the use of this was introduced recently while
the mmzone_64.h hasn't been changed since april.

commit 37573e8c718277103f61f03741bdc5606d31b07e
Author: KAMEZAWA Hiroyuki <[email protected]>
Date: Wed Jun 15 15:08:42 2011 -0700

memcg: fix init_page_cgroup nid with sparsemem

Commit 21a3c9646873 ("memcg: allocate memory cgroup structures in local
nodes") makes page_cgroup allocation as NUMA aware. But that caused a
problem https://bugzilla.kernel.org/show_bug.cgi?id=36192.

The problem was getting a NID from invalid struct pages, which was not
initialized because it was out-of-node, out of [node_start_pfn,
node_end_pfn)

Now, with sparsemem, page_cgroup_init scans pfn from 0 to max_pfn. But
this may scan a pfn which is not on any node and can access memmap which
is not initialized.

This makes page_cgroup_init() for SPARSEMEM node aware and remove a code
to get nid from page->flags. (Then, we'll use valid NID always.)

[[email protected]: try to fix up comments]
Signed-off-by: KAMEZAWA Hiroyuki <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>


--
Ian Kumlien -- http://demius.net || http://pomac.netswarm.net


Attachments:
signature.asc (198.00 B)
This is a digitally signed message part

2011-06-24 22:23:34

by Randy Dunlap

[permalink] [raw]
Subject: Re: [BUG?] numa required on x86_64?

On Sat, 25 Jun 2011 00:00:58 +0200 Ian Kumlien wrote:

> Hi all,
>
> Just found this when wanting to play with development kernels again.
> Since there is no -gitXX snapshots anymore, I cloned the git =)...
>
> But, it failed to build properly with my config:
>
> mm/page_cgroup.c line 308: node_start_pfn and node_end_pfn is only
> defined under NUMA on x86_64.
>
> The commit that changed the use of this was introduced recently while
> the mmzone_64.h hasn't been changed since april.

You should have cc-ed the commit Author (I did so).

> commit 37573e8c718277103f61f03741bdc5606d31b07e
> Author: KAMEZAWA Hiroyuki <[email protected]>
> Date: Wed Jun 15 15:08:42 2011 -0700
>
> memcg: fix init_page_cgroup nid with sparsemem
>
> Commit 21a3c9646873 ("memcg: allocate memory cgroup structures in local
> nodes") makes page_cgroup allocation as NUMA aware. But that caused a
> problem https://bugzilla.kernel.org/show_bug.cgi?id=36192.
>
> The problem was getting a NID from invalid struct pages, which was not
> initialized because it was out-of-node, out of [node_start_pfn,
> node_end_pfn)
>
> Now, with sparsemem, page_cgroup_init scans pfn from 0 to max_pfn. But
> this may scan a pfn which is not on any node and can access memmap which
> is not initialized.
>
> This makes page_cgroup_init() for SPARSEMEM node aware and remove a code
> to get nid from page->flags. (Then, we'll use valid NID always.)
>
> [[email protected]: try to fix up comments]
> Signed-off-by: KAMEZAWA Hiroyuki <[email protected]>
> Signed-off-by: Andrew Morton <[email protected]>
> Signed-off-by: Linus Torvalds <[email protected]>

A patch for this has been posted at least 2 times.
It's here: http://marc.info/?l=linux-mm&m=130827204306775&w=2

Andrew, please merge this (^that^) patch.

---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

2011-06-25 00:06:38

by Ian Kumlien

[permalink] [raw]
Subject: Re: [BUG?] numa required on x86_64?

On fre, 2011-06-24 at 15:23 -0700, Randy Dunlap wrote:
> On Sat, 25 Jun 2011 00:00:58 +0200 Ian Kumlien wrote:
>
> > Hi all,
> >
> > Just found this when wanting to play with development kernels again.
> > Since there is no -gitXX snapshots anymore, I cloned the git =)...
> >
> > But, it failed to build properly with my config:
> >
> > mm/page_cgroup.c line 308: node_start_pfn and node_end_pfn is only
> > defined under NUMA on x86_64.
> >
> > The commit that changed the use of this was introduced recently while
> > the mmzone_64.h hasn't been changed since april.
>
> You should have cc-ed the commit Author (I did so).

Sorry, tired and i was upgrading systems at work when i found this =)

> > commit 37573e8c718277103f61f03741bdc5606d31b07e
> > Author: KAMEZAWA Hiroyuki <[email protected]>
> > Date: Wed Jun 15 15:08:42 2011 -0700
> >
> > memcg: fix init_page_cgroup nid with sparsemem
> >
> > Commit 21a3c9646873 ("memcg: allocate memory cgroup structures in local
> > nodes") makes page_cgroup allocation as NUMA aware. But that caused a
> > problem https://bugzilla.kernel.org/show_bug.cgi?id=36192.
> >
> > The problem was getting a NID from invalid struct pages, which was not
> > initialized because it was out-of-node, out of [node_start_pfn,
> > node_end_pfn)
> >
> > Now, with sparsemem, page_cgroup_init scans pfn from 0 to max_pfn. But
> > this may scan a pfn which is not on any node and can access memmap which
> > is not initialized.
> >
> > This makes page_cgroup_init() for SPARSEMEM node aware and remove a code
> > to get nid from page->flags. (Then, we'll use valid NID always.)
> >
> > [[email protected]: try to fix up comments]
> > Signed-off-by: KAMEZAWA Hiroyuki <[email protected]>
> > Signed-off-by: Andrew Morton <[email protected]>
> > Signed-off-by: Linus Torvalds <[email protected]>
>
> A patch for this has been posted at least 2 times.
> It's here: http://marc.info/?l=linux-mm&m=130827204306775&w=2
>
> Andrew, please merge this (^that^) patch.

Damn, i haven't been following LKML that closely recently =/

> ---
> ~Randy
> *** Remember to use Documentation/SubmitChecklist when testing your code ***

--
Ian Kumlien -- http://demius.net || http://pomac.netswarm.net


Attachments:
signature.asc (198.00 B)
This is a digitally signed message part