[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>
This commit is contained in:
parent
624f54be20
commit
b77dae5293
|
@ -42,6 +42,7 @@ EXPORT_SYMBOL(clear_page);
|
||||||
|
|
||||||
#ifdef CONFIG_VIRTUAL_MEM_MAP
|
#ifdef CONFIG_VIRTUAL_MEM_MAP
|
||||||
#include <linux/bootmem.h>
|
#include <linux/bootmem.h>
|
||||||
|
EXPORT_SYMBOL(min_low_pfn); /* defined by bootmem.c, but not exported by generic code */
|
||||||
EXPORT_SYMBOL(max_low_pfn); /* defined by bootmem.c, but not exported by generic code */
|
EXPORT_SYMBOL(max_low_pfn); /* defined by bootmem.c, but not exported by generic code */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -110,8 +110,9 @@ extern int ia64_pfn_valid (unsigned long pfn);
|
||||||
# define pfn_to_page(pfn) (mem_map + (pfn))
|
# define pfn_to_page(pfn) (mem_map + (pfn))
|
||||||
#elif defined(CONFIG_DISCONTIGMEM)
|
#elif defined(CONFIG_DISCONTIGMEM)
|
||||||
extern struct page *vmem_map;
|
extern struct page *vmem_map;
|
||||||
|
extern unsigned long min_low_pfn;
|
||||||
extern unsigned long max_low_pfn;
|
extern unsigned long max_low_pfn;
|
||||||
# define pfn_valid(pfn) (((pfn) < max_low_pfn) && ia64_pfn_valid(pfn))
|
# define pfn_valid(pfn) (((pfn) >= min_low_pfn) && ((pfn) < max_low_pfn) && ia64_pfn_valid(pfn))
|
||||||
# define page_to_pfn(page) ((unsigned long) (page - vmem_map))
|
# define page_to_pfn(page) ((unsigned long) (page - vmem_map))
|
||||||
# define pfn_to_page(pfn) (vmem_map + (pfn))
|
# define pfn_to_page(pfn) (vmem_map + (pfn))
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue