|
@@ -4306,7 +4306,7 @@ int __meminit init_currently_empty_zone(struct zone *zone,
|
|
|
int __meminit __early_pfn_to_nid(unsigned long pfn)
|
|
|
{
|
|
|
unsigned long start_pfn, end_pfn;
|
|
|
- int i, nid;
|
|
|
+ int nid;
|
|
|
/*
|
|
|
* NOTE: The following SMP-unsafe globals are only used early in boot
|
|
|
* when the kernel is running single-threaded.
|
|
@@ -4317,15 +4317,14 @@ int __meminit __early_pfn_to_nid(unsigned long pfn)
|
|
|
if (last_start_pfn <= pfn && pfn < last_end_pfn)
|
|
|
return last_nid;
|
|
|
|
|
|
- for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid)
|
|
|
- if (start_pfn <= pfn && pfn < end_pfn) {
|
|
|
- last_start_pfn = start_pfn;
|
|
|
- last_end_pfn = end_pfn;
|
|
|
- last_nid = nid;
|
|
|
- return nid;
|
|
|
- }
|
|
|
- /* This is a memory hole */
|
|
|
- return -1;
|
|
|
+ nid = memblock_search_pfn_nid(pfn, &start_pfn, &end_pfn);
|
|
|
+ if (nid != -1) {
|
|
|
+ last_start_pfn = start_pfn;
|
|
|
+ last_end_pfn = end_pfn;
|
|
|
+ last_nid = nid;
|
|
|
+ }
|
|
|
+
|
|
|
+ return nid;
|
|
|
}
|
|
|
#endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */
|
|
|
|