aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDean Roe <roe@sgi.com>2005-11-09 15:25:06 -0500
committerTony Luck <tony.luck@intel.com>2005-11-29 12:24:10 -0500
commitb77dae5293efba42ea1ff04d410ee68e66d5b0cf (patch)
treee7cff6570c32d55e4743f0e59c53ab9086c1efd6
parent624f54be206adf970cd8eece16446b027913e533 (diff)
[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>
-rw-r--r--arch/ia64/kernel/ia64_ksyms.c1
-rw-r--r--include/asm-ia64/page.h3
2 files changed, 3 insertions, 1 deletions
diff --git a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c
index 01572814abe4..5db9d3bcbbcb 100644
--- a/arch/ia64/kernel/ia64_ksyms.c
+++ b/arch/ia64/kernel/ia64_ksyms.c
@@ -42,6 +42,7 @@ EXPORT_SYMBOL(clear_page);
42 42
43#ifdef CONFIG_VIRTUAL_MEM_MAP 43#ifdef CONFIG_VIRTUAL_MEM_MAP
44#include <linux/bootmem.h> 44#include <linux/bootmem.h>
45EXPORT_SYMBOL(min_low_pfn); /* defined by bootmem.c, but not exported by generic code */
45EXPORT_SYMBOL(max_low_pfn); /* defined by bootmem.c, but not exported by generic code */ 46EXPORT_SYMBOL(max_low_pfn); /* defined by bootmem.c, but not exported by generic code */
46#endif 47#endif
47 48
diff --git a/include/asm-ia64/page.h b/include/asm-ia64/page.h
index 9dd9da105278..5e6362a786b7 100644
--- a/include/asm-ia64/page.h
+++ b/include/asm-ia64/page.h
@@ -110,8 +110,9 @@ extern int ia64_pfn_valid (unsigned long pfn);
110# define pfn_to_page(pfn) (mem_map + (pfn)) 110# define pfn_to_page(pfn) (mem_map + (pfn))
111#elif defined(CONFIG_DISCONTIGMEM) 111#elif defined(CONFIG_DISCONTIGMEM)
112extern struct page *vmem_map; 112extern struct page *vmem_map;
113extern unsigned long min_low_pfn;
113extern unsigned long max_low_pfn; 114extern 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# define page_to_pfn(page) ((unsigned long) (page - vmem_map)) 116# define page_to_pfn(page) ((unsigned long) (page - vmem_map))
116# define pfn_to_page(pfn) (vmem_map + (pfn)) 117# define pfn_to_page(pfn) (vmem_map + (pfn))
117#endif 118#endif