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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]