--- include/asm-alpha/mmzone.h | 4 ---- include/asm-alpha/page.h | 2 -- include/asm-arm/memory.h | 3 --- include/asm-avr32/page.h | 3 --- include/asm-cris/page.h | 1 - include/asm-frv/page.h | 4 ---- include/asm-i386/page.h | 3 --- include/asm-ia64/page.h | 3 --- include/asm-m32r/page.h | 3 --- include/asm-m68k/page.h | 3 --- include/asm-parisc/page.h | 3 --- include/asm-powerpc/page.h | 2 -- include/asm-ppc/page.h | 2 -- include/asm-s390/page.h | 2 -- include/asm-sh/page.h | 2 -- include/asm-sh64/page.h | 2 -- include/asm-sparc64/page.h | 4 ---- include/asm-x86_64/page.h | 2 -- include/asm-xtensa/page.h | 2 -- include/linux/mm.h | 3 +++ mm/page_alloc.c | 23 +++++++++++++++++++++++ 21 files changed, 26 insertions(+), 50 deletions(-) Index: linux-2.6/include/asm-alpha/page.h =================================================================== --- linux-2.6.orig/include/asm-alpha/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-alpha/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -85,10 +85,8 @@ typedef unsigned long pgprot_t; #define __pa(x) ((unsigned long) (x) - PAGE_OFFSET) #define __va(x) ((void *)((unsigned long) (x) + PAGE_OFFSET)) #ifndef CONFIG_DISCONTIGMEM -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) #define pfn_valid(pfn) ((pfn) < max_mapnr) -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) #endif /* CONFIG_DISCONTIGMEM */ #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ Index: linux-2.6/include/asm-avr32/page.h =================================================================== --- linux-2.6.orig/include/asm-avr32/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-avr32/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -96,9 +96,6 @@ static inline int get_order(unsigned lon #define pfn_valid(pfn) ((pfn) >= PHYS_PFN_OFFSET && (pfn) < (PHYS_PFN_OFFSET + max_mapnr)) #endif /* CONFIG_NEED_MULTIPLE_NODES */ -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) - #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | \ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) Index: linux-2.6/include/asm-frv/page.h =================================================================== --- linux-2.6.orig/include/asm-frv/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-frv/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -63,10 +63,6 @@ extern unsigned long max_pfn; #endif -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) - - #ifdef CONFIG_MMU #define VM_DATA_DEFAULT_FLAGS \ (VM_READ | VM_WRITE | \ Index: linux-2.6/include/asm-i386/page.h =================================================================== --- linux-2.6.orig/include/asm-i386/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-i386/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -188,9 +188,6 @@ extern int page_is_ram(unsigned long pag #ifdef CONFIG_FLATMEM #define pfn_valid(pfn) ((pfn) < max_mapnr) #endif /* CONFIG_FLATMEM */ -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) - -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) #define VM_DATA_DEFAULT_FLAGS \ (VM_READ | VM_WRITE | \ Index: linux-2.6/include/asm-ia64/page.h =================================================================== --- linux-2.6.orig/include/asm-ia64/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-ia64/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -98,8 +98,6 @@ do { \ #define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) - #ifdef CONFIG_VIRTUAL_MEM_MAP extern int ia64_pfn_valid (unsigned long pfn); #else @@ -127,7 +125,6 @@ extern unsigned long max_low_pfn; #endif #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) typedef union ia64_va { Index: linux-2.6/include/asm-m32r/page.h =================================================================== --- linux-2.6.orig/include/asm-m32r/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-m32r/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -76,9 +76,6 @@ typedef struct { unsigned long pgprot; } #define pfn_valid(pfn) (((pfn) - PFN_BASE) < max_mapnr) #endif /* !CONFIG_DISCONTIGMEM */ -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) - #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC ) Index: linux-2.6/include/asm-parisc/page.h =================================================================== --- linux-2.6.orig/include/asm-parisc/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-parisc/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -162,10 +162,7 @@ extern int npmem_ranges; #define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) #endif -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) - #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) Index: linux-2.6/include/asm-powerpc/page.h =================================================================== --- linux-2.6.orig/include/asm-powerpc/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-powerpc/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -59,9 +59,7 @@ #define pfn_valid(pfn) ((pfn) < max_mapnr) #endif -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) #define __va(x) ((void *)((unsigned long)(x) + PAGE_OFFSET)) #define __pa(x) ((unsigned long)(x) - PAGE_OFFSET) Index: linux-2.6/include/asm-ppc/page.h =================================================================== --- linux-2.6.orig/include/asm-ppc/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-ppc/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -149,11 +149,9 @@ extern int page_is_ram(unsigned long pfn #define __va(x) ((void *)(___va((unsigned long)(x)))) #define ARCH_PFN_OFFSET (PPC_PGSTART) -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) #define page_to_virt(page) __va(page_to_pfn(page) << PAGE_SHIFT) #define pfn_valid(pfn) (((pfn) - PPC_PGSTART) < max_mapnr) -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) /* Pure 2^n version of get_order */ extern __inline__ int get_order(unsigned long size) Index: linux-2.6/include/asm-s390/page.h =================================================================== --- linux-2.6.orig/include/asm-s390/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-s390/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -157,9 +157,7 @@ static inline int pfn_valid(unsigned lon #define PAGE_OFFSET 0x0UL #define __pa(x) (unsigned long)(x) #define __va(x) (void *)(unsigned long)(x) -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) Index: linux-2.6/include/asm-sh/page.h =================================================================== --- linux-2.6.orig/include/asm-sh/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-sh/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -134,11 +134,9 @@ typedef struct { unsigned long pgd; } pg /* PFN start number, because of __MEMORY_START */ #define PFN_START (__MEMORY_START >> PAGE_SHIFT) #define ARCH_PFN_OFFSET (PFN_START) -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) #ifdef CONFIG_FLATMEM #define pfn_valid(pfn) ((pfn) >= min_low_pfn && (pfn) < max_low_pfn) #endif -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) Index: linux-2.6/include/asm-sh64/page.h =================================================================== --- linux-2.6.orig/include/asm-sh64/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-sh64/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -105,9 +105,7 @@ typedef struct { unsigned long pgprot; } /* PFN start number, because of __MEMORY_START */ #define PFN_START (__MEMORY_START >> PAGE_SHIFT) #define ARCH_PFN_OFFSET (PFN_START) -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) #define pfn_valid(pfn) (((pfn) - PFN_START) < max_mapnr) -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC) Index: linux-2.6/include/asm-sparc64/page.h =================================================================== --- linux-2.6.orig/include/asm-sparc64/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-sparc64/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -129,10 +129,6 @@ typedef unsigned long pgprot_t; #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr)>>PAGE_SHIFT) - -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) - #define virt_to_phys __pa #define phys_to_virt __va Index: linux-2.6/include/asm-x86_64/page.h =================================================================== --- linux-2.6.orig/include/asm-x86_64/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-x86_64/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -125,8 +125,6 @@ extern unsigned long __phys_addr(unsigne #define pfn_valid(pfn) ((pfn) < end_pfn) #endif -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) #define VM_DATA_DEFAULT_FLAGS \ Index: linux-2.6/include/asm-xtensa/page.h =================================================================== --- linux-2.6.orig/include/asm-xtensa/page.h 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/include/asm-xtensa/page.h 2007-10-02 18:46:48.000000000 -0700 @@ -160,9 +160,7 @@ extern void copy_user_page(void*, void*, # error CONFIG_DISCONTIGMEM not supported #endif -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) #define page_to_virt(page) __va(page_to_pfn(page) << PAGE_SHIFT) -#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT) #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) #define WANT_PAGE_VIRTUAL Index: linux-2.6/mm/page_alloc.c =================================================================== --- linux-2.6.orig/mm/page_alloc.c 2007-10-02 18:45:46.000000000 -0700 +++ linux-2.6/mm/page_alloc.c 2007-10-02 18:48:41.000000000 -0700 @@ -150,6 +150,29 @@ int nr_node_ids __read_mostly = MAX_NUMN EXPORT_SYMBOL(nr_node_ids); #endif +struct page *virt_to_page(const void *kaddr) +{ +#ifndef CONFIG_ARCH_VIRT_TO_PAGE + unsigned long pfn = __pa(kaddr) >> PAGE_SHIFT; + + VM_BUG_ON(!pfn_valid(pfn)); + return pfn_to_page(pfn); +#else + return arch_virt_to_page(kaddr); +#endif +} + +int virt_addr_valid(const void *kaddr) +{ +#ifndef CONFIG_ARCH_VIRT_TO_PAGE + unsigned long pfn = __pa(kaddr) >> PAGE_SHIFT; + + return pfn_valid(pfn); +#else + return arch_virt_addr_valid(kaddr); +#endif +} + #ifdef CONFIG_DEBUG_VM static int page_outside_zone_boundaries(struct zone *zone, struct page *page) { Index: linux-2.6/include/linux/mm.h =================================================================== --- linux-2.6.orig/include/linux/mm.h 2007-10-02 18:46:34.000000000 -0700 +++ linux-2.6/include/linux/mm.h 2007-10-02 18:47:02.000000000 -0700 @@ -41,6 +41,9 @@ extern int sysctl_legacy_va_layout; #define nth_page(page,n) pfn_to_page(page_to_pfn((page)) + (n)) +extern struct page * virt_to_page(const void *addr); +extern int virt_addr_valid(const void *addr); + /* * Linux kernel virtual memory manager primitives. * The idea being to have a "virtual" mm in the same way Index: linux-2.6/include/asm-alpha/mmzone.h =================================================================== --- linux-2.6.orig/include/asm-alpha/mmzone.h 2007-10-02 18:50:32.000000000 -0700 +++ linux-2.6/include/asm-alpha/mmzone.h 2007-10-02 18:51:12.000000000 -0700 @@ -70,8 +70,6 @@ PLAT_NODE_DATA_LOCALNR(unsigned long p, /* XXX: FIXME -- wli */ #define kern_addr_valid(kaddr) (0) -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) - #define VALID_PAGE(page) (((page) - mem_map) < max_mapnr) #define pmd_page(pmd) (pfn_to_page(pmd_val(pmd) >> 32)) @@ -108,8 +106,6 @@ PLAT_NODE_DATA_LOCALNR(unsigned long p, (((pfn) - node_start_pfn(pfn_to_nid(pfn))) < \ node_spanned_pages(pfn_to_nid(pfn))) \ -#define virt_addr_valid(kaddr) pfn_valid((__pa(kaddr) >> PAGE_SHIFT)) - #endif /* CONFIG_DISCONTIGMEM */ #endif /* _ASM_MMZONE_H_ */ Index: linux-2.6/include/asm-arm/memory.h =================================================================== --- linux-2.6.orig/include/asm-arm/memory.h 2007-10-02 18:51:25.000000000 -0700 +++ linux-2.6/include/asm-arm/memory.h 2007-10-02 18:53:27.000000000 -0700 @@ -219,9 +219,6 @@ static inline __deprecated void *bus_to_ #define ARCH_PFN_OFFSET PHYS_PFN_OFFSET #define pfn_valid(pfn) ((pfn) >= PHYS_PFN_OFFSET && (pfn) < (PHYS_PFN_OFFSET + max_mapnr)) -#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) -#define virt_addr_valid(kaddr) ((unsigned long)(kaddr) >= PAGE_OFFSET && (unsigned long)(kaddr) < (unsigned long)high_memory) - #define PHYS_TO_NID(addr) (0) #else /* CONFIG_DISCONTIGMEM */ Index: linux-2.6/include/asm-cris/page.h =================================================================== --- linux-2.6.orig/include/asm-cris/page.h 2007-10-02 18:53:55.000000000 -0700 +++ linux-2.6/include/asm-cris/page.h 2007-10-02 18:55:56.000000000 -0700 @@ -56,7 +56,6 @@ typedef struct { unsigned long pgprot; } #define virt_to_page(kaddr) (mem_map + (((unsigned long)(kaddr) - PAGE_OFFSET) >> PAGE_SHIFT)) #define VALID_PAGE(page) (((page) - mem_map) < max_mapnr) -#define virt_addr_valid(kaddr) pfn_valid((unsigned)(kaddr) >> PAGE_SHIFT) /* convert a page (based on mem_map and forward) to a physical address * do this by figuring out the virtual address and then use __pa Index: linux-2.6/include/asm-m68k/page.h =================================================================== --- linux-2.6.orig/include/asm-m68k/page.h 2007-10-02 18:56:29.000000000 -0700 +++ linux-2.6/include/asm-m68k/page.h 2007-10-02 18:59:08.000000000 -0700 @@ -200,9 +200,6 @@ static inline __attribute_const__ int __ #define __virt_to_node(addr) (pg_data_table[(unsigned long)(addr) >> __virt_to_node_shift()]) #endif -#define virt_to_page(addr) ({ \ - pfn_to_page(virt_to_pfn(addr)); \ -}) #define page_to_virt(page) ({ \ pfn_to_virt(page_to_pfn(page)); \ })