diff options
Diffstat (limited to 'mm/page_alloc.c')
| -rw-r--r-- | mm/page_alloc.c | 27 | 
1 files changed, 25 insertions, 2 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 5675b3073854..5c44ed49ca93 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -2989,7 +2989,7 @@ static int __meminit next_active_region_index_in_nid(int index, int nid)   * was used and there are no special requirements, this is a convenient   * alternative   */ -int __meminit early_pfn_to_nid(unsigned long pfn) +int __meminit __early_pfn_to_nid(unsigned long pfn)  {  	int i; @@ -3000,10 +3000,33 @@ int __meminit early_pfn_to_nid(unsigned long pfn)  		if (start_pfn <= pfn && pfn < end_pfn)  			return early_node_map[i].nid;  	} +	/* This is a memory hole */ +	return -1; +} +#endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */ + +int __meminit early_pfn_to_nid(unsigned long pfn) +{ +	int nid; +	nid = __early_pfn_to_nid(pfn); +	if (nid >= 0) +		return nid; +	/* just returns 0 */  	return 0;  } -#endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */ + +#ifdef CONFIG_NODES_SPAN_OTHER_NODES +bool __meminit early_pfn_in_nid(unsigned long pfn, int node) +{ +	int nid; + +	nid = __early_pfn_to_nid(pfn); +	if (nid >= 0 && nid != node) +		return false; +	return true; +} +#endif  /* Basic iterator support to walk early_node_map[] */  #define for_each_active_range_index_in_nid(i, nid) \  | 
