From: William Lee Irwin III This patch converts uses of remap_page_range() via io_remap_page_range() in include/asm-*/ to use remap_pfn_range(). io_remap_page_range() has a similar physical address overflow issue that needs to be addressed later. Signed-off-by: Andrew Morton --- 25-akpm/include/asm-alpha/pgtable.h | 2 +- 25-akpm/include/asm-arm/pgtable.h | 2 +- 25-akpm/include/asm-arm26/pgtable.h | 2 +- 25-akpm/include/asm-h8300/pgtable.h | 3 ++- 25-akpm/include/asm-i386/pgtable.h | 3 ++- 25-akpm/include/asm-ia64/pgtable.h | 4 +++- 25-akpm/include/asm-m32r/pgtable.h | 3 ++- 25-akpm/include/asm-m68k/pgtable.h | 3 ++- 25-akpm/include/asm-m68knommu/pgtable.h | 3 ++- 25-akpm/include/asm-mips/pgtable.h | 3 ++- 25-akpm/include/asm-parisc/pgtable.h | 3 ++- 25-akpm/include/asm-ppc/pgtable.h | 3 ++- 25-akpm/include/asm-ppc64/pgtable.h | 3 ++- 25-akpm/include/asm-sh/pgtable.h | 3 ++- 25-akpm/include/asm-sh64/pgtable.h | 3 ++- 25-akpm/include/asm-x86_64/pgtable.h | 3 ++- 16 files changed, 30 insertions(+), 16 deletions(-) diff -puN include/asm-alpha/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-alpha/pgtable.h --- 25/include/asm-alpha/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.088390296 -0700 +++ 25-akpm/include/asm-alpha/pgtable.h 2004-09-25 22:03:03.115386192 -0700 @@ -328,7 +328,7 @@ extern inline pte_t mk_swap_pte(unsigned #endif #define io_remap_page_range(vma, start, busaddr, size, prot) \ - remap_page_range(vma, start, virt_to_phys((void *)__ioremap(busaddr, size)), size, prot) + remap_pfn_range(vma, start, virt_to_phys((void *)__ioremap(busaddr, size)) >> PAGE_SHIFT, size, prot) #define pte_ERROR(e) \ printk("%s:%d: bad pte %016lx.\n", __FILE__, __LINE__, pte_val(e)) diff -puN include/asm-arm26/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-arm26/pgtable.h --- 25/include/asm-arm26/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.090389992 -0700 +++ 25-akpm/include/asm-arm26/pgtable.h 2004-09-25 22:03:03.116386040 -0700 @@ -288,7 +288,7 @@ static inline pte_t mk_pte_phys(unsigned * into virtual address `from' */ #define io_remap_page_range(vma,from,phys,size,prot) \ - remap_page_range(vma,from,phys,size,prot) + remap_pfn_range(vma, from, (phys) >> PAGE_SHIFT, size, prot) #endif /* !__ASSEMBLY__ */ diff -puN include/asm-arm/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-arm/pgtable.h --- 25/include/asm-arm/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.091389840 -0700 +++ 25-akpm/include/asm-arm/pgtable.h 2004-09-25 22:03:03.115386192 -0700 @@ -412,7 +412,7 @@ extern pgd_t swapper_pg_dir[PTRS_PER_PGD * into virtual address `from' */ #define io_remap_page_range(vma,from,phys,size,prot) \ - remap_page_range(vma,from,phys,size,prot) + remap_pfn_range(vma, from, (phys) >> PAGE_SHIFT, size, prot) #define pgtable_cache_init() do { } while (0) diff -puN include/asm-h8300/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-h8300/pgtable.h --- 25/include/asm-h8300/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.093389536 -0700 +++ 25-akpm/include/asm-h8300/pgtable.h 2004-09-25 22:03:03.116386040 -0700 @@ -50,7 +50,8 @@ extern int is_in_rom(unsigned long); * No page table caches to initialise */ #define pgtable_cache_init() do { } while (0) -#define io_remap_page_range remap_page_range +#define io_remap_page_range(vma, vaddr, paddr, size, prot) \ + remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) /* * All 32bit addresses are effectively valid for vmalloc... diff -puN include/asm-i386/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-i386/pgtable.h --- 25/include/asm-i386/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.094389384 -0700 +++ 25-akpm/include/asm-i386/pgtable.h 2004-09-25 22:03:03.117385888 -0700 @@ -404,7 +404,8 @@ extern pte_t *lookup_address(unsigned lo #define kern_addr_valid(addr) (1) #endif /* !CONFIG_DISCONTIGMEM */ -#define io_remap_page_range remap_page_range +#define io_remap_page_range(vma, vaddr, paddr, size, prot) \ + remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY diff -puN include/asm-ia64/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-ia64/pgtable.h --- 25/include/asm-ia64/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.096389080 -0700 +++ 25-akpm/include/asm-ia64/pgtable.h 2004-09-25 22:03:03.117385888 -0700 @@ -452,7 +452,9 @@ extern void paging_init (void); #define pte_to_pgoff(pte) ((pte_val(pte) << 1) >> 3) #define pgoff_to_pte(off) ((pte_t) { ((off) << 2) | _PAGE_FILE }) -#define io_remap_page_range remap_page_range /* XXX is this right? */ +/* XXX is this right? */ +#define io_remap_page_range(vma, vaddr, paddr, size, prot) \ + remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) /* * ZERO_PAGE is a global shared page that is always zero: used diff -puN include/asm-m32r/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-m32r/pgtable.h --- 25/include/asm-m32r/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.097388928 -0700 +++ 25-akpm/include/asm-m32r/pgtable.h 2004-09-25 22:03:03.118385736 -0700 @@ -408,7 +408,8 @@ static __inline__ void pmd_set(pmd_t * p /* Needs to be defined here and not in linux/mm.h, as it is arch dependent */ #define kern_addr_valid(addr) (1) -#define io_remap_page_range remap_page_range +#define io_remap_page_range(vma, vaddr, paddr, size, prot) \ + remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY diff -puN include/asm-m68knommu/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-m68knommu/pgtable.h --- 25/include/asm-m68knommu/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.099388624 -0700 +++ 25-akpm/include/asm-m68knommu/pgtable.h 2004-09-25 22:03:03.119385584 -0700 @@ -54,7 +54,8 @@ extern int is_in_rom(unsigned long); * No page table caches to initialise. */ #define pgtable_cache_init() do { } while (0) -#define io_remap_page_range remap_page_range +#define io_remap_page_range(vma, vaddr, paddr, size, prot) \ + remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) /* * All 32bit addresses are effectively valid for vmalloc... diff -puN include/asm-m68k/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-m68k/pgtable.h --- 25/include/asm-m68k/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.100388472 -0700 +++ 25-akpm/include/asm-m68k/pgtable.h 2004-09-25 22:03:03.118385736 -0700 @@ -138,7 +138,8 @@ static inline void update_mmu_cache(stru #define kern_addr_valid(addr) (1) -#define io_remap_page_range remap_page_range +#define io_remap_page_range(vma, vaddr, paddr, size, prot) \ + remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) /* MMU-specific headers */ diff -puN include/asm-mips/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-mips/pgtable.h --- 25/include/asm-mips/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.102388168 -0700 +++ 25-akpm/include/asm-mips/pgtable.h 2004-09-25 22:03:03.119385584 -0700 @@ -245,7 +245,8 @@ static inline void update_mmu_cache(stru */ #define HAVE_ARCH_UNMAPPED_AREA -#define io_remap_page_range remap_page_range +#define io_remap_page_range(vma, vaddr, paddr, size, prot) \ + remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) /* * No page table caches to initialise diff -puN include/asm-parisc/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-parisc/pgtable.h --- 25/include/asm-parisc/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.103388016 -0700 +++ 25-akpm/include/asm-parisc/pgtable.h 2004-09-25 22:03:03.120385432 -0700 @@ -505,7 +505,8 @@ static inline void ptep_mkdirty(pte_t *p #endif /* !__ASSEMBLY__ */ -#define io_remap_page_range remap_page_range +#define io_remap_page_range(vma, vaddr, paddr, size, prot) + remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) /* We provide our own get_unmapped_area to provide cache coherency */ diff -puN include/asm-ppc64/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-ppc64/pgtable.h --- 25/include/asm-ppc64/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.105387712 -0700 +++ 25-akpm/include/asm-ppc64/pgtable.h 2004-09-25 22:03:03.121385280 -0700 @@ -492,7 +492,8 @@ extern void update_mmu_cache(struct vm_a */ #define kern_addr_valid(addr) (1) -#define io_remap_page_range remap_page_range +#define io_remap_page_range(vma, vaddr, paddr, size, prot) \ + remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) void pgtable_cache_init(void); diff -puN include/asm-ppc/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-ppc/pgtable.h --- 25/include/asm-ppc/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.106387560 -0700 +++ 25-akpm/include/asm-ppc/pgtable.h 2004-09-25 22:03:03.120385432 -0700 @@ -714,7 +714,8 @@ extern void kernel_set_cachemode (unsign /* Needs to be defined here and not in linux/mm.h, as it is arch dependent */ #define kern_addr_valid(addr) (1) -#define io_remap_page_range remap_page_range +#define io_remap_page_range(vma, vaddr, paddr, size, prot) \ + remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) /* * No page table caches to initialise diff -puN include/asm-sh64/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-sh64/pgtable.h --- 25/include/asm-sh64/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.107387408 -0700 +++ 25-akpm/include/asm-sh64/pgtable.h 2004-09-25 22:03:03.122385128 -0700 @@ -479,7 +479,8 @@ extern void update_mmu_cache(struct vm_a #define PageSkip(page) (0) #define kern_addr_valid(addr) (1) -#define io_remap_page_range remap_page_range +#define io_remap_page_range(vma, vaddr, paddr, size, prot) \ + remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) #endif /* !__ASSEMBLY__ */ /* diff -puN include/asm-sh/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-sh/pgtable.h --- 25/include/asm-sh/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.109387104 -0700 +++ 25-akpm/include/asm-sh/pgtable.h 2004-09-25 22:03:03.122385128 -0700 @@ -274,7 +274,8 @@ typedef pte_t *pte_addr_t; #define kern_addr_valid(addr) (1) -#define io_remap_page_range remap_page_range +#define io_remap_page_range(vma, vaddr, paddr, size, prot) \ + remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) /* * No page table caches to initialise diff -puN include/asm-x86_64/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range include/asm-x86_64/pgtable.h --- 25/include/asm-x86_64/pgtable.h~convert-users-of-remap_page_range-under-include-asm--to-use-remap_pfn_range 2004-09-25 22:03:03.111386800 -0700 +++ 25-akpm/include/asm-x86_64/pgtable.h 2004-09-25 22:03:03.123384976 -0700 @@ -421,7 +421,8 @@ extern inline pte_t pte_modify(pte_t pte extern int kern_addr_valid(unsigned long addr); -#define io_remap_page_range remap_page_range +#define io_remap_page_range(vma, vaddr, paddr, size, prot) \ + remap_pfn_range(vma, vaddr, (paddr) >> PAGE_SHIFT, size, prot) #define HAVE_ARCH_UNMAPPED_AREA _