[IA64] - Make pfn_valid more precise for SGI Altix systems

A single SGI Altix system can be divided into multiple partitions,
each running their own instance of the Linux kernel. pfn_valid()
is currently not optimal for any but the first partition, since it
does not compare the pfn with min_low_pfn before calling the more
costly ia64_pfn_valid().

Signed-off-by: Dean Roe <roe@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>

authored by Dean Roe and committed by Tony Luck b77dae52 624f54be

+3 -1
+1
arch/ia64/kernel/ia64_ksyms.c
··· 42 42 43 43 #ifdef CONFIG_VIRTUAL_MEM_MAP 44 44 #include <linux/bootmem.h> 45 + EXPORT_SYMBOL(min_low_pfn); /* defined by bootmem.c, but not exported by generic code */ 45 46 EXPORT_SYMBOL(max_low_pfn); /* defined by bootmem.c, but not exported by generic code */ 46 47 #endif 47 48
+2 -1
include/asm-ia64/page.h
··· 110 110 # define pfn_to_page(pfn) (mem_map + (pfn)) 111 111 #elif defined(CONFIG_DISCONTIGMEM) 112 112 extern struct page *vmem_map; 113 + extern unsigned long min_low_pfn; 113 114 extern unsigned long max_low_pfn; 114 - # define pfn_valid(pfn) (((pfn) < max_low_pfn) && ia64_pfn_valid(pfn)) 115 + # define pfn_valid(pfn) (((pfn) >= min_low_pfn) && ((pfn) < max_low_pfn) && ia64_pfn_valid(pfn)) 115 116 # define page_to_pfn(page) ((unsigned long) (page - vmem_map)) 116 117 # define pfn_to_page(pfn) (vmem_map + (pfn)) 117 118 #endif