Re: [PATCH] mm: show node to memory section relationship with symlinks in sysfs

Yasunori Goto
2008-10-01T02:52:45Z

> On Tue, Sep 30, 2008 at 08:50:37AM -0700, Dave Hansen wrote:
> > On Tue, 2008-09-30 at 17:06 +0900, Yasunori Goto wrote:
> > > > +#define section_nr_to_nid(section_nr) pfn_to_nid(section_nr_to_pfn(section_nr))
> > > > #endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */
> > >
> > > If the first page of the section is not valid, then this section_nr_to_nid()
> > > doesn't return correct value.
> > >
> > > I tested this patch. In my box, the start_pfn of node 1 is 1200400, but
> > > section_nr_to_pfn(mem_blk->phys_index) returns 1200000. As a result,
> > > the section is linked to node 0.
> >
> > Crap, I was worried about that.
> >
> > Gary, this means that we have a N:1 relationship between NUMA nodes and
> > sections. This normally isn't a problem because sections don't really
> > care about nodes and they layer underneath them.
>
> So, using Yasunori-san's example the memory section starting at
> pfn 1200000 actually resides on both node 0 and node 1.

It may be possible that one section is divided to different node in theory.
(I don't know really there is...)

But, the cause of my trouble differs from it.
There is a memory hole which is occupied by firmware.
So, the memory map of my box is here.

----
early_node_map[3] active PFN ranges
0: 0x00000100 -> 0x00006d00
0: 0x00408000 -> 0x00410000
1: 0x01200400 -> 0x01210000
----

memmap_init() initializes from start_pfn (to end_pfn).
So, the memmaps for this first hole (0x1200000 - 0x12003ff) are not initialized,
and node id is not set for them. This is true cause.

Bye.

--
Yasunori Goto