Re: [1/3] add early_pfn_to_nid for ppc64

From: Andy Whitcroft
Date: Thu May 05 2005 - 11:22:41 EST


Joel Schopp wrote:
>> +#ifdef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
>> +#define early_pfn_to_nid(pfn) pa_to_nid(((unsigned long)pfn) <<
>> PAGE_SHIFT)
>> +#endif
>
>
> Is there a reason we didn't just use pfn_to_nid() directly here instead
> of pa_to_nid()? I'm just thinking of having DISCONTIG/NUMA off and
> pfn_to_nid() being #defined to zero for those cases.

The problem is that pfn_to_nid is defined by the memory model. In the
SPARSEMEM case it isn't always usable until after the we have
initialised and allocated the sparse mem_maps. It is allocations during
this phase that need this early_pfn_to_nid() form, to guide its
allocations of the mem_map to obtain locality with the physical memory
blocks.

This is clearer in the i386 port where the early_pfn_to_nid()
implementation uses low level table to determine the location. As has
been mentioned in another thread, we are using what is effectivly a
DISCONTIGMEM data structure here. I have some work in progress to split
that last part and move to a true early implementation on ppc64 too.

-apw
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/