* [vm 0/6] convert remap_page_range() to remap_pfn_range() in a patch series shorter than 76 patches
@ 2004-09-25 7:44 William Lee Irwin III
2004-09-25 7:47 ` [vm 1/6] introduce remap_pfn_range() to replace remap_page_range() William Lee Irwin III
0 siblings, 1 reply; 7+ messages in thread
From: William Lee Irwin III @ 2004-09-25 7:44 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel
Resolve physical address overflow issue in the remap_page_range() API
by replacing it with remap_pfn_range(), which accepts its physical
address argument as a pfn, hence allowing the use of a single-precision
physical address argument without the risk of overflow at the API
boundary. The above issue has hobbled support for various 32-bit
architectures, including some embedded systems (ppc440 IIRC), caused
persistent portability issues for sound drivers for legacy systems
(sparc32; unfortunately this patch alone does not fully resolve those),
and according to John Fusco's reports, made drivers for some PCI-X
hardware infeasible to port to recent ia32 PAE enterprise systems. With
this patch series applied, physical address overflows on 32-bit systems
caused directly by remap_page_range() are gone forever, and ca. 100LOC
of cut-and-waste driver code are swept out of existence alongside them.
-- wli
P.S.: The existing solution to the sparc32 issue was to pass a double
precision representation of the physical address as 2 single-
precision arguments in an API (io_remap_page_range()) whose
argument corresponding to those two was a single single-
precision argument on most/all other architectures. The
sparc32-specific issue requires more work beyond these patches
to rectify. The most apparent consequence of the API skew is
that drivers don't compile on sparc32 when they use
io_remap_page_range() due to passing insufficient arguments,
or vice-versa for drivers originally written for sparc32.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [vm 1/6] introduce remap_pfn_range() to replace remap_page_range()
2004-09-25 7:44 [vm 0/6] convert remap_page_range() to remap_pfn_range() in a patch series shorter than 76 patches William Lee Irwin III
@ 2004-09-25 7:47 ` William Lee Irwin III
2004-09-25 7:49 ` [vm 2/6] convert references to remap_page_range() under arch/ and Documentation/ to remap_pfn_range() William Lee Irwin III
0 siblings, 1 reply; 7+ messages in thread
From: William Lee Irwin III @ 2004-09-25 7:47 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel
This patch introduces remap_pfn_range(), destined to replace
remap_page_range(), to which all callers of remap_page_range() are
converted in the sequel.
Index: mm3-2.6.9-rc2/include/linux/mm.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/linux/mm.h 2004-09-24 19:17:00.000000000 -0700
+++ mm3-2.6.9-rc2/include/linux/mm.h 2004-09-25 00:34:59.009495360 -0700
@@ -856,8 +856,15 @@
extern struct page * vmalloc_to_page(void *addr);
extern struct page * follow_page(struct mm_struct *mm, unsigned long address,
int write);
-extern int remap_page_range(struct vm_area_struct *vma, unsigned long from,
- unsigned long to, unsigned long size, pgprot_t prot);
+int remap_pfn_range(struct vm_area_struct *, unsigned long,
+ unsigned long, unsigned long, pgprot_t);
+
+static inline __deprecated /* since 25 Sept 2004 -- wli */
+int remap_page_range(struct vm_area_struct *vma, unsigned long uvaddr,
+ unsigned long paddr, unsigned long size, pgprot_t prot)
+{
+ return remap_pfn_range(vma, uvaddr, paddr >> PAGE_SHIFT, size, prot);
+}
#ifdef CONFIG_PROC_FS
void __vm_stat_account(struct mm_struct *, unsigned long, struct file *, long);
Index: mm3-2.6.9-rc2/mm/memory.c
===================================================================
--- mm3-2.6.9-rc2.orig/mm/memory.c 2004-09-24 17:37:15.000000000 -0700
+++ mm3-2.6.9-rc2/mm/memory.c 2004-09-24 21:58:50.000000000 -0700
@@ -945,16 +945,14 @@
* in null mappings (currently treated as "copy-on-access")
*/
static inline void remap_pte_range(pte_t * pte, unsigned long address, unsigned long size,
- unsigned long phys_addr, pgprot_t prot)
+ unsigned long pfn, pgprot_t prot)
{
unsigned long end;
- unsigned long pfn;
address &= ~PMD_MASK;
end = address + size;
if (end > PMD_SIZE)
end = PMD_SIZE;
- pfn = phys_addr >> PAGE_SHIFT;
do {
BUG_ON(!pte_none(*pte));
if (!pfn_valid(pfn) || PageReserved(pfn_to_page(pfn)))
@@ -966,7 +964,7 @@
}
static inline int remap_pmd_range(struct mm_struct *mm, pmd_t * pmd, unsigned long address, unsigned long size,
- unsigned long phys_addr, pgprot_t prot)
+ unsigned long pfn, pgprot_t prot)
{
unsigned long base, end;
@@ -975,12 +973,12 @@
end = address + size;
if (end > PGDIR_SIZE)
end = PGDIR_SIZE;
- phys_addr -= address;
+ pfn -= address >> PAGE_SHIFT;
do {
pte_t * pte = pte_alloc_map(mm, pmd, base + address);
if (!pte)
return -ENOMEM;
- remap_pte_range(pte, base + address, end - address, address + phys_addr, prot);
+ remap_pte_range(pte, base + address, end - address, pfn + (address >> PAGE_SHIFT), prot);
pte_unmap(pte);
address = (address + PMD_SIZE) & PMD_MASK;
pmd++;
@@ -989,7 +987,7 @@
}
/* Note: this is only safe if the mm semaphore is held when called. */
-int remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned long phys_addr, unsigned long size, pgprot_t prot)
+int remap_pfn_range(struct vm_area_struct *vma, unsigned long from, unsigned long pfn, unsigned long size, pgprot_t prot)
{
int error = 0;
pgd_t * dir;
@@ -997,7 +995,7 @@
unsigned long end = from + size;
struct mm_struct *mm = vma->vm_mm;
- phys_addr -= from;
+ pfn -= from >> PAGE_SHIFT;
dir = pgd_offset(mm, from);
flush_cache_range(vma, beg, end);
if (from >= end)
@@ -1009,7 +1007,7 @@
error = -ENOMEM;
if (!pmd)
break;
- error = remap_pmd_range(mm, pmd, from, end - from, phys_addr + from, prot);
+ error = remap_pmd_range(mm, pmd, from, end - from, pfn + (from >> PAGE_SHIFT), prot);
if (error)
break;
from = (from + PGDIR_SIZE) & PGDIR_MASK;
@@ -1022,8 +1020,7 @@
spin_unlock(&mm->page_table_lock);
return error;
}
-
-EXPORT_SYMBOL(remap_page_range);
+EXPORT_SYMBOL(remap_pfn_range);
/*
* Do pte_mkwrite, but only if the vma says VM_WRITE. We do this when
Index: mm3-2.6.9-rc2/mm/nommu.c
===================================================================
--- mm3-2.6.9-rc2.orig/mm/nommu.c 2004-09-24 02:10:30.000000000 -0700
+++ mm3-2.6.9-rc2/mm/nommu.c 2004-09-24 22:06:16.000000000 -0700
@@ -560,7 +560,7 @@
return NULL;
}
-int remap_page_range(struct vm_area_struct *vma, unsigned long from,
+int remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
unsigned long to, unsigned long size, pgprot_t prot)
{
return -EPERM;
^ permalink raw reply [flat|nested] 7+ messages in thread
* [vm 2/6] convert references to remap_page_range() under arch/ and Documentation/ to remap_pfn_range()
2004-09-25 7:47 ` [vm 1/6] introduce remap_pfn_range() to replace remap_page_range() William Lee Irwin III
@ 2004-09-25 7:49 ` William Lee Irwin III
2004-09-25 7:51 ` [vm 3/6] convert users of remap_page_range() under drivers/ and net/ to use remap_pfn_range() William Lee Irwin III
0 siblings, 1 reply; 7+ messages in thread
From: William Lee Irwin III @ 2004-09-25 7:49 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel
On Sat, Sep 25, 2004 at 12:47:12AM -0700, William Lee Irwin III wrote:
> This patch introduces remap_pfn_range(), destined to replace
> remap_page_range(), to which all callers of remap_page_range() are
> converted in the sequel.
This patch converts all callers of remap_page_range() under arch/ and
all references in Documentation/ to use remap_pfn_range().
Index: mm3-2.6.9-rc2/Documentation/IO-mapping.txt
===================================================================
--- mm3-2.6.9-rc2.orig/Documentation/IO-mapping.txt 2004-09-25 00:15:53.427650272 -0700
+++ mm3-2.6.9-rc2/Documentation/IO-mapping.txt 2004-09-25 00:18:07.631248224 -0700
@@ -119,9 +119,10 @@
So why do we care about the physical address at all? We do need the physical
address in some cases, it's just not very often in normal code. The physical
address is needed if you use memory mappings, for example, because the
-"remap_page_range()" mm function wants the physical address of the memory to
-be remapped (the memory management layer doesn't know about devices outside
-the CPU, so it shouldn't need to know about "bus addresses" etc).
+"remap_pfn_range()" mm function wants the physical address of the memory to
+be remapped as measured in units of pages, a.k.a. the pfn (the memory
+management layer doesn't know about devices outside the CPU, so it
+shouldn't need to know about "bus addresses" etc).
NOTE NOTE NOTE! The above is only one part of the whole equation. The above
only talks about "real memory", that is, CPU memory (RAM).
Index: mm3-2.6.9-rc2/arch/arm/kernel/bios32.c
===================================================================
--- mm3-2.6.9-rc2.orig/arch/arm/kernel/bios32.c 2004-09-25 00:15:54.976414824 -0700
+++ mm3-2.6.9-rc2/arch/arm/kernel/bios32.c 2004-09-25 00:16:18.612821544 -0700
@@ -685,7 +685,7 @@
if (mmap_state == pci_mmap_io) {
return -EINVAL;
} else {
- phys = root->mem_offset + (vma->vm_pgoff << PAGE_SHIFT);
+ phys = vma->vm_pgoff + (root->mem_offset >> PAGE_SHIFT);
}
/*
@@ -694,7 +694,7 @@
vma->vm_flags |= VM_SHM | VM_LOCKED | VM_IO;
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (remap_page_range(vma, vma->vm_start, phys,
+ if (remap_pfn_range(vma, vma->vm_start, phys,
vma->vm_end - vma->vm_start,
vma->vm_page_prot))
return -EAGAIN;
Index: mm3-2.6.9-rc2/arch/i386/pci/i386.c
===================================================================
--- mm3-2.6.9-rc2.orig/arch/i386/pci/i386.c 2004-09-25 00:15:55.127391872 -0700
+++ mm3-2.6.9-rc2/arch/i386/pci/i386.c 2004-09-25 00:16:24.702895712 -0700
@@ -295,7 +295,7 @@
/* Write-combine setting is ignored, it is changed via the mtrr
* interfaces on this platform.
*/
- if (remap_page_range(vma, vma->vm_start, vma->vm_pgoff << PAGE_SHIFT,
+ if (remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
vma->vm_end - vma->vm_start,
vma->vm_page_prot))
return -EAGAIN;
Index: mm3-2.6.9-rc2/arch/ia64/kernel/perfmon.c
===================================================================
--- mm3-2.6.9-rc2.orig/arch/ia64/kernel/perfmon.c 2004-09-25 00:15:54.808440360 -0700
+++ mm3-2.6.9-rc2/arch/ia64/kernel/perfmon.c 2004-09-25 00:16:29.823117320 -0700
@@ -572,12 +572,6 @@
ClearPageReserved(vmalloc_to_page((void*)a));
}
-static inline int
-pfm_remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned long phys_addr, unsigned long size, pgprot_t prot)
-{
- return remap_page_range(vma, from, phys_addr, size, prot);
-}
-
static inline unsigned long
pfm_protect_ctx_ctxsw(pfm_context_t *x)
{
@@ -805,18 +799,6 @@
DPRINT(("ctx=%p msgq reset\n", ctx));
}
-
-/* Here we want the physical address of the memory.
- * This is used when initializing the contents of the
- * area and marking the pages as reserved.
- */
-static inline unsigned long
-pfm_kvirt_to_pa(unsigned long adr)
-{
- __u64 pa = ia64_tpa(adr);
- return pa;
-}
-
static void *
pfm_rvmalloc(unsigned long size)
{
@@ -2243,14 +2225,14 @@
static int
pfm_remap_buffer(struct vm_area_struct *vma, unsigned long buf, unsigned long addr, unsigned long size)
{
- unsigned long page;
-
DPRINT(("CPU%d buf=0x%lx addr=0x%lx size=%ld\n", smp_processor_id(), buf, addr, size));
while (size > 0) {
- page = pfm_kvirt_to_pa(buf);
+ unsigned long pfn = ia64_tpa(buf) >> PAGE_SHIFT;
+
- if (pfm_remap_page_range(vma, addr, page, PAGE_SIZE, PAGE_READONLY)) return -ENOMEM;
+ if (remap_pfn_range(vma, addr, pfn, PAGE_SIZE, PAGE_READONLY))
+ return -ENOMEM;
addr += PAGE_SIZE;
buf += PAGE_SIZE;
Index: mm3-2.6.9-rc2/arch/ia64/pci/pci.c
===================================================================
--- mm3-2.6.9-rc2.orig/arch/ia64/pci/pci.c 2004-09-25 00:15:54.743450240 -0700
+++ mm3-2.6.9-rc2/arch/ia64/pci/pci.c 2004-09-25 00:16:35.106314152 -0700
@@ -498,7 +498,7 @@
else
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
- if (remap_page_range(vma, vma->vm_start, vma->vm_pgoff << PAGE_SHIFT,
+ if (remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
vma->vm_end - vma->vm_start, vma->vm_page_prot))
return -EAGAIN;
Index: mm3-2.6.9-rc2/arch/ppc/kernel/pci.c
===================================================================
--- mm3-2.6.9-rc2.orig/arch/ppc/kernel/pci.c 2004-09-25 00:15:55.277369072 -0700
+++ mm3-2.6.9-rc2/arch/ppc/kernel/pci.c 2004-09-25 00:17:33.481439784 -0700
@@ -1596,7 +1596,7 @@
__pci_mmap_set_flags(dev, vma, mmap_state);
__pci_mmap_set_pgprot(dev, vma, mmap_state, write_combine);
- ret = remap_page_range(vma, vma->vm_start, vma->vm_pgoff << PAGE_SHIFT,
+ ret = remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
vma->vm_end - vma->vm_start, vma->vm_page_prot);
return ret;
Index: mm3-2.6.9-rc2/arch/ppc64/kernel/pci.c
===================================================================
--- mm3-2.6.9-rc2.orig/arch/ppc64/kernel/pci.c 2004-09-25 00:15:54.612470152 -0700
+++ mm3-2.6.9-rc2/arch/ppc64/kernel/pci.c 2004-09-25 00:17:13.248515656 -0700
@@ -503,7 +503,7 @@
__pci_mmap_set_flags(dev, vma, mmap_state);
__pci_mmap_set_pgprot(dev, vma, mmap_state, write_combine);
- ret = remap_page_range(vma, vma->vm_start, vma->vm_pgoff << PAGE_SHIFT,
+ ret = remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
vma->vm_end - vma->vm_start, vma->vm_page_prot);
return ret;
Index: mm3-2.6.9-rc2/arch/ppc64/kernel/proc_ppc64.c
===================================================================
--- mm3-2.6.9-rc2.orig/arch/ppc64/kernel/proc_ppc64.c 2004-09-25 00:15:54.675460576 -0700
+++ mm3-2.6.9-rc2/arch/ppc64/kernel/proc_ppc64.c 2004-09-25 00:17:19.205610040 -0700
@@ -176,7 +176,8 @@
if ((vma->vm_end - vma->vm_start) > dp->size)
return -EINVAL;
- remap_page_range( vma, vma->vm_start, __pa(dp->data), dp->size, vma->vm_page_prot );
+ remap_pfn_range(vma, vma->vm_start, __pa(dp->data) >> PAGE_SHIFT,
+ dp->size, vma->vm_page_prot);
return 0;
}
Index: mm3-2.6.9-rc2/arch/sparc/mm/generic.c
===================================================================
--- mm3-2.6.9-rc2.orig/arch/sparc/mm/generic.c 2004-09-25 00:15:55.202380472 -0700
+++ mm3-2.6.9-rc2/arch/sparc/mm/generic.c 2004-09-25 00:17:57.633768072 -0700
@@ -41,7 +41,7 @@
#endif
}
-/* Remap IO memory, the same way as remap_page_range(), but use
+/* Remap IO memory, the same way as remap_pfn_range(), but use
* the obio memory space.
*
* They use a pgprot that sets PAGE_IO and does not check the
Index: mm3-2.6.9-rc2/arch/sparc64/mm/generic.c
===================================================================
--- mm3-2.6.9-rc2.orig/arch/sparc64/mm/generic.c 2004-09-25 00:15:55.045404336 -0700
+++ mm3-2.6.9-rc2/arch/sparc64/mm/generic.c 2004-09-25 00:17:49.557995776 -0700
@@ -23,7 +23,7 @@
}
}
-/* Remap IO memory, the same way as remap_page_range(), but use
+/* Remap IO memory, the same way as remap_pfn_range(), but use
* the obio memory space.
*
* They use a pgprot that sets PAGE_IO and does not check the
Index: mm3-2.6.9-rc2/arch/um/drivers/mmapper_kern.c
===================================================================
--- mm3-2.6.9-rc2.orig/arch/um/drivers/mmapper_kern.c 2004-09-25 00:15:54.893427440 -0700
+++ mm3-2.6.9-rc2/arch/um/drivers/mmapper_kern.c 2004-09-25 00:18:00.984258720 -0700
@@ -81,10 +81,10 @@
size = vma->vm_end - vma->vm_start;
if(size > mmapper_size) return(-EFAULT);
- /* XXX A comment above remap_page_range says it should only be
+ /* XXX A comment above remap_pfn_range says it should only be
* called when the mm semaphore is held
*/
- if (remap_page_range(vma, vma->vm_start, p_buf, size,
+ if (remap_pfn_range(vma, vma->vm_start, p_buf >> PAGE_SHIFT, size,
vma->vm_page_prot))
goto out;
ret = 0;
^ permalink raw reply [flat|nested] 7+ messages in thread
* [vm 3/6] convert users of remap_page_range() under drivers/ and net/ to use remap_pfn_range()
2004-09-25 7:49 ` [vm 2/6] convert references to remap_page_range() under arch/ and Documentation/ to remap_pfn_range() William Lee Irwin III
@ 2004-09-25 7:51 ` William Lee Irwin III
2004-09-25 7:53 ` [vm 4/6] convert users of remap_page_range() under include/asm-*/ " William Lee Irwin III
0 siblings, 1 reply; 7+ messages in thread
From: William Lee Irwin III @ 2004-09-25 7:51 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel
On Sat, Sep 25, 2004 at 12:49:15AM -0700, William Lee Irwin III wrote:
> This patch converts all callers of remap_page_range() under arch/ and
> all references in Documentation/ to use remap_pfn_range().
This patch converts all callers of remap_page_range() under arch/ and
net/ to use remap_pfn_range() instead.
Index: mm3-2.6.9-rc2/drivers/char/agp/frontend.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/char/agp/frontend.c 2004-09-25 00:21:50.620348728 -0700
+++ mm3-2.6.9-rc2/drivers/char/agp/frontend.c 2004-09-25 00:21:57.535297496 -0700
@@ -627,8 +627,8 @@
DBG("client vm_ops=%p", kerninfo.vm_ops);
if (kerninfo.vm_ops) {
vma->vm_ops = kerninfo.vm_ops;
- } else if (remap_page_range(vma, vma->vm_start,
- (kerninfo.aper_base + offset),
+ } else if (remap_pfn_range(vma, vma->vm_start,
+ (kerninfo.aper_base + offset) >> PAGE_SHIFT,
size, vma->vm_page_prot)) {
goto out_again;
}
@@ -643,8 +643,8 @@
DBG("controller vm_ops=%p", kerninfo.vm_ops);
if (kerninfo.vm_ops) {
vma->vm_ops = kerninfo.vm_ops;
- } else if (remap_page_range(vma, vma->vm_start,
- kerninfo.aper_base,
+ } else if (remap_pfn_range(vma, vma->vm_start,
+ kerninfo.aper_base >> PAGE_SHIFT,
size, vma->vm_page_prot)) {
goto out_again;
}
Index: mm3-2.6.9-rc2/drivers/char/drm/drm_vm.h
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/char/drm/drm_vm.h 2004-09-25 00:21:50.620348728 -0700
+++ mm3-2.6.9-rc2/drivers/char/drm/drm_vm.h 2004-09-25 00:21:57.535297496 -0700
@@ -620,8 +620,8 @@
vma->vm_end - vma->vm_start,
vma->vm_page_prot, 0))
#else
- if (remap_page_range(DRM_RPR_ARG(vma) vma->vm_start,
- VM_OFFSET(vma) + offset,
+ if (remap_pfn_range(DRM_RPR_ARG(vma) vma->vm_start,
+ (VM_OFFSET(vma) + offset) >> PAGE_SHIFT,
vma->vm_end - vma->vm_start,
vma->vm_page_prot))
#endif
Index: mm3-2.6.9-rc2/drivers/char/drm/i810_dma.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/char/drm/i810_dma.c 2004-09-25 00:21:50.621348576 -0700
+++ mm3-2.6.9-rc2/drivers/char/drm/i810_dma.c 2004-09-25 00:21:57.536297344 -0700
@@ -138,8 +138,8 @@
buf_priv->currently_mapped = I810_BUF_MAPPED;
unlock_kernel();
- if (remap_page_range(DRM_RPR_ARG(vma) vma->vm_start,
- VM_OFFSET(vma),
+ if (remap_pfn_range(DRM_RPR_ARG(vma) vma->vm_start,
+ VM_OFFSET(vma) >> PAGE_SHIFT,
vma->vm_end - vma->vm_start,
vma->vm_page_prot)) return -EAGAIN;
return 0;
Index: mm3-2.6.9-rc2/drivers/char/drm/i830_dma.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/char/drm/i830_dma.c 2004-09-25 00:21:50.620348728 -0700
+++ mm3-2.6.9-rc2/drivers/char/drm/i830_dma.c 2004-09-25 00:21:57.537297192 -0700
@@ -139,8 +139,8 @@
buf_priv->currently_mapped = I830_BUF_MAPPED;
unlock_kernel();
- if (remap_page_range(DRM_RPR_ARG(vma) vma->vm_start,
- VM_OFFSET(vma),
+ if (remap_pfn_range(DRM_RPR_ARG(vma) vma->vm_start,
+ VM_OFFSET(vma) >> PAGE_SHIFT,
vma->vm_end - vma->vm_start,
vma->vm_page_prot)) return -EAGAIN;
return 0;
Index: mm3-2.6.9-rc2/drivers/char/ftape/lowlevel/ftape-ctl.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/char/ftape/lowlevel/ftape-ctl.c 2004-09-25 00:21:50.621348576 -0700
+++ mm3-2.6.9-rc2/drivers/char/ftape/lowlevel/ftape-ctl.c 2004-09-25 00:21:57.537297192 -0700
@@ -726,9 +726,12 @@
ftape_reset_buffer();
}
for (i = 0; i < num_buffers; i++) {
- TRACE_CATCH(remap_page_range(vma, vma->vm_start +
+ unsigned long pfn;
+
+ pfn = virt_to_phys(ft_buffer[i]->address) >> PAGE_SHIFT;
+ TRACE_CATCH(remap_pfn_range(vma, vma->vm_start +
i * FT_BUFF_SIZE,
- virt_to_phys(ft_buffer[i]->address),
+ pfn,
FT_BUFF_SIZE,
vma->vm_page_prot),
_res = -EAGAIN);
Index: mm3-2.6.9-rc2/drivers/char/hpet.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/char/hpet.c 2004-09-25 00:21:50.621348576 -0700
+++ mm3-2.6.9-rc2/drivers/char/hpet.c 2004-09-25 00:21:57.538297040 -0700
@@ -273,9 +273,9 @@
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
addr = __pa(addr);
- if (remap_page_range
- (vma, vma->vm_start, addr, PAGE_SIZE, vma->vm_page_prot)) {
- printk(KERN_ERR "remap_page_range failed in hpet.c\n");
+ if (remap_pfn_range(vma, vma->vm_start, addr >> PAGE_SHIFT,
+ PAGE_SIZE, vma->vm_page_prot)) {
+ printk(KERN_ERR "remap_pfn_range failed in hpet.c\n");
return -EAGAIN;
}
Index: mm3-2.6.9-rc2/drivers/char/mem.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/char/mem.c 2004-09-25 00:21:50.622348424 -0700
+++ mm3-2.6.9-rc2/drivers/char/mem.c 2004-09-25 00:21:57.538297040 -0700
@@ -227,7 +227,7 @@
*/
vma->vm_flags |= VM_RESERVED|VM_IO;
- if (remap_page_range(vma, vma->vm_start, offset,
+ if (remap_pfn_range(vma, vma->vm_start, offset >> PAGE_SHIFT,
vma->vm_end-vma->vm_start, vma->vm_page_prot))
return -EAGAIN;
return 0;
Index: mm3-2.6.9-rc2/drivers/char/mmtimer.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/char/mmtimer.c 2004-09-25 00:21:50.622348424 -0700
+++ mm3-2.6.9-rc2/drivers/char/mmtimer.c 2004-09-25 00:21:57.538297040 -0700
@@ -139,7 +139,7 @@
* @file: file structure for the device
* @vma: VMA to map the registers into
*
- * Calls remap_page_range() to map the clock's registers into
+ * Calls remap_pfn_range() to map the clock's registers into
* the calling process' address space.
*/
static int mmtimer_mmap(struct file *file, struct vm_area_struct *vma)
@@ -162,9 +162,9 @@
mmtimer_addr &= ~(PAGE_SIZE - 1);
mmtimer_addr &= 0xfffffffffffffffUL;
- if (remap_page_range(vma, vma->vm_start, mmtimer_addr, PAGE_SIZE,
- vma->vm_page_prot)) {
- printk(KERN_ERR "remap_page_range failed in mmtimer.c\n");
+ if (remap_pfn_range(vma, vma->vm_start, mmtimer_addr >> PAGE_SHIFT,
+ PAGE_SIZE, vma->vm_page_prot)) {
+ printk(KERN_ERR "remap_pfn_range failed in mmtimer.c\n");
return -EAGAIN;
}
Index: mm3-2.6.9-rc2/drivers/ieee1394/video1394.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/ieee1394/video1394.c 2004-09-25 00:21:50.622348424 -0700
+++ mm3-2.6.9-rc2/drivers/ieee1394/video1394.c 2004-09-25 00:21:57.539296888 -0700
@@ -1157,7 +1157,7 @@
*
* FIXME:
* - PAGE_READONLY should suffice!?
- * - remap_page_range is kind of inefficient for page by page remapping.
+ * - remap_pfn_range is kind of inefficient for page by page remapping.
* But e.g. pte_alloc() does not work in modules ... :-(
*/
Index: mm3-2.6.9-rc2/drivers/media/video/cpia.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/media/video/cpia.c 2004-09-25 00:21:50.623348272 -0700
+++ mm3-2.6.9-rc2/drivers/media/video/cpia.c 2004-09-25 00:21:57.541296584 -0700
@@ -216,20 +216,6 @@
* Memory management
*
**********************************************************************/
-
-/* Here we want the physical address of the memory.
- * This is used when initializing the contents of the area.
- */
-static inline unsigned long kvirt_to_pa(unsigned long adr)
-{
- unsigned long kva, ret;
-
- kva = (unsigned long) page_address(vmalloc_to_page((void *)adr));
- kva |= adr & (PAGE_SIZE-1); /* restore the offset */
- ret = __pa(kva);
- return ret;
-}
-
static void *rvmalloc(unsigned long size)
{
void *mem;
@@ -3795,8 +3781,8 @@
pos = (unsigned long)(cam->frame_buf);
while (size > 0) {
- page = kvirt_to_pa(pos);
- if (remap_page_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) {
+ page = page_to_pfn(vmalloc_to_page((void *)pos));
+ if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) {
up(&cam->busy_lock);
return -EAGAIN;
}
Index: mm3-2.6.9-rc2/drivers/media/video/meye.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/media/video/meye.c 2004-09-25 00:21:50.623348272 -0700
+++ mm3-2.6.9-rc2/drivers/media/video/meye.c 2004-09-25 00:21:57.542296432 -0700
@@ -115,19 +115,6 @@
/****************************************************************************/
/* Memory allocation routines (stolen from bttv-driver.c) */
/****************************************************************************/
-
-/* Here we want the physical address of the memory.
- * This is used when initializing the contents of the area.
- */
-static inline unsigned long kvirt_to_pa(unsigned long adr) {
- unsigned long kva, ret;
-
- kva = (unsigned long) page_address(vmalloc_to_page((void *)adr));
- kva |= adr & (PAGE_SIZE-1); /* restore the offset */
- ret = __pa(kva);
- return ret;
-}
-
static void *rvmalloc(unsigned long size) {
void *mem;
unsigned long adr;
@@ -1201,8 +1188,8 @@
pos = (unsigned long)meye.grab_fbuffer;
while (size > 0) {
- page = kvirt_to_pa(pos);
- if (remap_page_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) {
+ page = page_to_pfn(vmalloc_to_page((void *)pos));
+ if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) {
up(&meye.lock);
return -EAGAIN;
}
Index: mm3-2.6.9-rc2/drivers/media/video/planb.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/media/video/planb.c 2004-09-25 00:21:50.624348120 -0700
+++ mm3-2.6.9-rc2/drivers/media/video/planb.c 2004-09-25 00:21:57.543296280 -0700
@@ -1995,8 +1995,10 @@
return err;
}
for (i = 0; i < pb->rawbuf_size; i++) {
- if (remap_page_range(vma, start, virt_to_phys((void *)pb->rawbuf[i]),
- PAGE_SIZE, PAGE_SHARED))
+ unsigned long pfn;
+
+ pfn = virt_to_phys((void *)pb->rawbuf[i]) >> PAGE_SHIFT;
+ if (remap_pfn_range(vma, start, pfn, PAGE_SIZE, PAGE_SHARED))
return -EAGAIN;
start += PAGE_SIZE;
if (size <= PAGE_SIZE)
Index: mm3-2.6.9-rc2/drivers/media/video/zoran_driver.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/media/video/zoran_driver.c 2004-09-25 00:21:50.625347968 -0700
+++ mm3-2.6.9-rc2/drivers/media/video/zoran_driver.c 2004-09-25 00:21:57.544296128 -0700
@@ -4448,12 +4448,6 @@
.close = zoran_vm_close,
};
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-#define zr_remap_page_range(a,b,c,d,e) remap_page_range(b,c,d,e)
-#else
-#define zr_remap_page_range(a,b,c,d,e) remap_page_range(a,b,c,d,e)
-#endif
-
static int
zoran_mmap (struct file *file,
struct vm_area_struct *vma)
@@ -4553,12 +4547,14 @@
pos =
(unsigned long) fh->jpg_buffers.
buffer[i].frag_tab[2 * j];
- page = virt_to_phys(bus_to_virt(pos)); /* should just be pos on i386 */
- if (zr_remap_page_range
- (vma, start, page, todo, PAGE_SHARED)) {
+ /* should just be pos on i386 */
+ page = virt_to_phys(bus_to_virt(pos))
+ >> PAGE_SHIFT;
+ if (remap_pfn_range(vma, start, page,
+ todo, PAGE_SHARED)) {
dprintk(1,
KERN_ERR
- "%s: zoran_mmap(V4L) - remap_page_range failed\n",
+ "%s: zoran_mmap(V4L) - remap_pfn_range failed\n",
ZR_DEVNAME(zr));
res = -EAGAIN;
goto jpg_mmap_unlock_and_return;
@@ -4639,11 +4635,11 @@
if (todo > fh->v4l_buffers.buffer_size)
todo = fh->v4l_buffers.buffer_size;
page = fh->v4l_buffers.buffer[i].fbuffer_phys;
- if (zr_remap_page_range
- (vma, start, page, todo, PAGE_SHARED)) {
+ if (remap_pfn_range(vma, start, page >> PAGE_SHIFT,
+ todo, PAGE_SHARED)) {
dprintk(1,
KERN_ERR
- "%s: zoran_mmap(V4L)i - remap_page_range failed\n",
+ "%s: zoran_mmap(V4L)i - remap_pfn_range failed\n",
ZR_DEVNAME(zr));
res = -EAGAIN;
goto v4l_mmap_unlock_and_return;
Index: mm3-2.6.9-rc2/drivers/media/video/zr36120.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/media/video/zr36120.c 2004-09-25 00:21:50.625347968 -0700
+++ mm3-2.6.9-rc2/drivers/media/video/zr36120.c 2004-09-25 00:21:57.545295976 -0700
@@ -1474,8 +1474,8 @@
/* start mapping the whole shabang to user memory */
pos = (unsigned long)ztv->fbuffer;
while (size>0) {
- unsigned long page = virt_to_phys((void*)pos);
- if (remap_page_range(vma, start, page, PAGE_SIZE, PAGE_SHARED))
+ unsigned long pfn = virt_to_phys((void*)pos) >> PAGE_SHIFT;
+ if (remap_pfn_range(vma, start, pfn, PAGE_SIZE, PAGE_SHARED))
return -EAGAIN;
start += PAGE_SIZE;
pos += PAGE_SIZE;
Index: mm3-2.6.9-rc2/drivers/perfctr/virtual.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/perfctr/virtual.c 2004-09-25 00:21:50.626347816 -0700
+++ mm3-2.6.9-rc2/drivers/perfctr/virtual.c 2004-09-25 00:21:57.546295824 -0700
@@ -720,7 +720,8 @@
perfctr = filp->private_data;
if (!perfctr)
return -EPERM;
- return remap_page_range(vma, vma->vm_start, virt_to_phys(perfctr),
+ return remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(perfctr) >> PAGE_SHIFT,
PAGE_SIZE, vma->vm_page_prot);
}
Index: mm3-2.6.9-rc2/drivers/sbus/char/flash.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/sbus/char/flash.c 2004-09-25 00:21:50.626347816 -0700
+++ mm3-2.6.9-rc2/drivers/sbus/char/flash.c 2004-09-25 00:21:57.546295824 -0700
@@ -66,7 +66,7 @@
if ((vma->vm_pgoff << PAGE_SHIFT) > size)
return -ENXIO;
- addr += (vma->vm_pgoff << PAGE_SHIFT);
+ addr = vma->vm_pgoff + (addr >> PAGE_SHIFT);
if (vma->vm_end - (vma->vm_start + (vma->vm_pgoff << PAGE_SHIFT)) > size)
size = vma->vm_end - (vma->vm_start + (vma->vm_pgoff << PAGE_SHIFT));
@@ -75,7 +75,7 @@
pgprot_val(vma->vm_page_prot) |= _PAGE_E;
vma->vm_flags |= (VM_SHM | VM_LOCKED);
- if (remap_page_range(vma, vma->vm_start, addr, size, vma->vm_page_prot))
+ if (remap_pfn_range(vma, vma->vm_start, addr, size, vma->vm_page_prot))
return -EAGAIN;
return 0;
Index: mm3-2.6.9-rc2/drivers/sbus/char/jsflash.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/sbus/char/jsflash.c 2004-09-25 00:21:50.626347816 -0700
+++ mm3-2.6.9-rc2/drivers/sbus/char/jsflash.c 2004-09-25 00:21:57.546295824 -0700
@@ -21,7 +21,7 @@
* as a silly safeguard.
*
* XXX The flash.c manipulates page caching characteristics in a certain
- * dubious way; also it assumes that remap_page_range() can remap
+ * dubious way; also it assumes that remap_pfn_range() can remap
* PCI bus locations, which may be false. ioremap() must be used
* instead. We should discuss this.
*/
Index: mm3-2.6.9-rc2/drivers/usb/class/audio.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/usb/class/audio.c 2004-09-25 00:21:50.627347664 -0700
+++ mm3-2.6.9-rc2/drivers/usb/class/audio.c 2004-09-25 00:21:57.548295520 -0700
@@ -509,7 +509,10 @@
return -EINVAL;
db->mapped = 1;
for(nr = 0; nr < size; nr++) {
- if (remap_page_range(vma, start, virt_to_phys(db->sgbuf[nr]), PAGE_SIZE, prot))
+ unsigned long pfn;
+
+ pfn = virt_to_phys(db->sgbuf[nr]) >> PAGE_SHIFT;
+ if (remap_pfn_range(vma, start, pfn, PAGE_SIZE, prot))
return -EAGAIN;
start += PAGE_SIZE;
}
Index: mm3-2.6.9-rc2/drivers/usb/media/ov511.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/usb/media/ov511.c 2004-09-25 00:21:50.628347512 -0700
+++ mm3-2.6.9-rc2/drivers/usb/media/ov511.c 2004-09-25 00:21:57.550295216 -0700
@@ -324,21 +324,6 @@
/**********************************************************************
* Memory management
**********************************************************************/
-
-/* Here we want the physical address of the memory.
- * This is used when initializing the contents of the area.
- */
-static inline unsigned long
-kvirt_to_pa(unsigned long adr)
-{
- unsigned long kva, ret;
-
- kva = (unsigned long) page_address(vmalloc_to_page((void *)adr));
- kva |= adr & (PAGE_SIZE-1); /* restore the offset */
- ret = __pa(kva);
- return ret;
-}
-
static void *
rvmalloc(unsigned long size)
{
@@ -4771,9 +4756,8 @@
pos = (unsigned long)ov->fbuf;
while (size > 0) {
- page = kvirt_to_pa(pos);
- if (remap_page_range(vma, start, page, PAGE_SIZE,
- PAGE_SHARED)) {
+ page = page_to_pfn(vmalloc_to_page((void *)pos));
+ if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) {
up(&ov->lock);
return -EAGAIN;
}
Index: mm3-2.6.9-rc2/drivers/usb/media/se401.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/usb/media/se401.c 2004-09-25 00:21:50.628347512 -0700
+++ mm3-2.6.9-rc2/drivers/usb/media/se401.c 2004-09-25 00:21:57.551295064 -0700
@@ -65,20 +65,6 @@
* Memory management
*
**********************************************************************/
-
-/* Here we want the physical address of the memory.
- * This is used when initializing the contents of the area.
- */
-static inline unsigned long kvirt_to_pa(unsigned long adr)
-{
- unsigned long kva, ret;
-
- kva = (unsigned long) page_address(vmalloc_to_page((void *)adr));
- kva |= adr & (PAGE_SIZE-1); /* restore the offset */
- ret = __pa(kva);
- return ret;
-}
-
static void *rvmalloc(unsigned long size)
{
void *mem;
@@ -1182,8 +1168,8 @@
}
pos = (unsigned long)se401->fbuf;
while (size > 0) {
- page = kvirt_to_pa(pos);
- if (remap_page_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) {
+ page = page_to_pfn(vmalloc_to_page((void *)pos));
+ if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) {
up(&se401->lock);
return -EAGAIN;
}
Index: mm3-2.6.9-rc2/drivers/usb/media/sn9c102_core.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/usb/media/sn9c102_core.c 2004-09-25 00:21:50.628347512 -0700
+++ mm3-2.6.9-rc2/drivers/usb/media/sn9c102_core.c 2004-09-25 00:21:57.552294912 -0700
@@ -101,18 +101,6 @@
};
/*****************************************************************************/
-
-static inline unsigned long kvirt_to_pa(unsigned long adr)
-{
- unsigned long kva, ret;
-
- kva = (unsigned long)page_address(vmalloc_to_page((void *)adr));
- kva |= adr & (PAGE_SIZE-1);
- ret = __pa(kva);
- return ret;
-}
-
-
static void* rvmalloc(size_t size)
{
void* mem;
@@ -1568,8 +1556,8 @@
pos = (unsigned long)cam->frame[i].bufmem;
while (size > 0) { /* size is page-aligned */
- page = kvirt_to_pa(pos);
- if (remap_page_range(vma, start, page, PAGE_SIZE,
+ page = page_to_pfn(vmalloc_to_page((void *)pos));
+ if (remap_pfn_range(vma, start, page, PAGE_SIZE,
vma->vm_page_prot)) {
up(&cam->fileop_sem);
return -EAGAIN;
Index: mm3-2.6.9-rc2/drivers/usb/media/stv680.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/usb/media/stv680.c 2004-09-25 00:21:50.629347360 -0700
+++ mm3-2.6.9-rc2/drivers/usb/media/stv680.c 2004-09-25 00:21:57.553294760 -0700
@@ -118,20 +118,6 @@
*
* And the STV0680 driver - Kevin
********************************************************************/
-
-/* Here we want the physical address of the memory.
- * This is used when initializing the contents of the area.
- */
-static inline unsigned long kvirt_to_pa (unsigned long adr)
-{
- unsigned long kva, ret;
-
- kva = (unsigned long) page_address(vmalloc_to_page((void *)adr));
- kva |= adr & (PAGE_SIZE-1); /* restore the offset */
- ret = __pa(kva);
- return ret;
-}
-
static void *rvmalloc (unsigned long size)
{
void *mem;
@@ -1291,8 +1277,8 @@
}
pos = (unsigned long) stv680->fbuf;
while (size > 0) {
- page = kvirt_to_pa (pos);
- if (remap_page_range (vma, start, page, PAGE_SIZE, PAGE_SHARED)) {
+ page = page_to_pfn(vmalloc_to_page((void *)pos));
+ if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) {
up (&stv680->lock);
return -EAGAIN;
}
Index: mm3-2.6.9-rc2/drivers/usb/media/usbvideo.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/usb/media/usbvideo.c 2004-09-25 00:21:50.629347360 -0700
+++ mm3-2.6.9-rc2/drivers/usb/media/usbvideo.c 2004-09-25 00:21:57.554294608 -0700
@@ -60,21 +60,6 @@
/*******************************/
/* Memory management functions */
/*******************************/
-
-/*
- * Here we want the physical address of the memory.
- * This is used when initializing the contents of the area.
- */
-unsigned long usbvideo_kvirt_to_pa(unsigned long adr)
-{
- unsigned long kva, ret;
-
- kva = (unsigned long) page_address(vmalloc_to_page((void *)adr));
- kva |= adr & (PAGE_SIZE-1); /* restore the offset */
- ret = __pa(kva);
- return ret;
-}
-
static void *usbvideo_rvmalloc(unsigned long size)
{
void *mem;
@@ -1168,8 +1153,8 @@
pos = (unsigned long) uvd->fbuf;
while (size > 0) {
- page = usbvideo_kvirt_to_pa(pos);
- if (remap_page_range(vma, start, page, PAGE_SIZE, PAGE_SHARED))
+ page = page_to_pfn(vmalloc_to_page((void *)pos));
+ if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED))
return -EAGAIN;
start += PAGE_SIZE;
Index: mm3-2.6.9-rc2/drivers/usb/media/vicam.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/usb/media/vicam.c 2004-09-25 00:21:50.630347208 -0700
+++ mm3-2.6.9-rc2/drivers/usb/media/vicam.c 2004-09-25 00:21:57.554294608 -0700
@@ -351,16 +351,6 @@
0x46, 0x05, 0x6C, 0x05, 0x00, 0x00
};
-static unsigned long kvirt_to_pa(unsigned long adr)
-{
- unsigned long kva, ret;
-
- kva = (unsigned long) page_address(vmalloc_to_page((void *)adr));
- kva |= adr & (PAGE_SIZE-1); /* restore the offset */
- ret = __pa(kva);
- return ret;
-}
-
/* rvmalloc / rvfree copied from usbvideo.c
*
* Not sure why these are not yet non-statics which I can reference through
@@ -1055,8 +1045,8 @@
pos = (unsigned long)cam->framebuf;
while (size > 0) {
- page = kvirt_to_pa(pos);
- if (remap_page_range(vma, start, page, PAGE_SIZE, PAGE_SHARED))
+ page = page_to_pfn(vmalloc_to_page((void *)pos));
+ if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED))
return -EAGAIN;
start += PAGE_SIZE;
Index: mm3-2.6.9-rc2/drivers/usb/media/w9968cf.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/usb/media/w9968cf.c 2004-09-25 00:21:50.630347208 -0700
+++ mm3-2.6.9-rc2/drivers/usb/media/w9968cf.c 2004-09-25 00:21:57.556294304 -0700
@@ -457,7 +457,6 @@
unsigned long arg);
/* Memory management */
-static inline unsigned long kvirt_to_pa(unsigned long adr);
static void* rvmalloc(unsigned long size);
static void rvfree(void *mem, unsigned long size);
static void w9968cf_deallocate_memory(struct w9968cf_device*);
@@ -611,20 +610,6 @@
/****************************************************************************
* Memory management functions *
****************************************************************************/
-
-/* Here we want the physical address of the memory.
- This is used when initializing the contents of the area. */
-static inline unsigned long kvirt_to_pa(unsigned long adr)
-{
- unsigned long kva, ret;
-
- kva = (unsigned long) page_address(vmalloc_to_page((void *)adr));
- kva |= adr & (PAGE_SIZE-1); /* restore the offset */
- ret = __pa(kva);
- return ret;
-}
-
-
static void* rvmalloc(unsigned long size)
{
void* mem;
@@ -2919,9 +2904,9 @@
return -EINVAL;
while (vsize > 0) {
- page = kvirt_to_pa(pos) + vma->vm_pgoff;
- if (remap_page_range(vma, start, page, PAGE_SIZE,
- vma->vm_page_prot))
+ page = page_to_pfn(vmalloc_to_page((void *)pos));
+ if (remap_pfn_range(vma, start, page + vma->vm_pgoff,
+ PAGE_SIZE, vma->vm_page_prot))
return -EAGAIN;
start += PAGE_SIZE;
pos += PAGE_SIZE;
Index: mm3-2.6.9-rc2/drivers/video/aty/atyfb_base.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/video/aty/atyfb_base.c 2004-09-25 00:21:53.509909448 -0700
+++ mm3-2.6.9-rc2/drivers/video/aty/atyfb_base.c 2004-09-25 00:22:01.383712448 -0700
@@ -1174,8 +1174,8 @@
~(par->mmap_map[i].prot_mask);
pgprot_val(vma->vm_page_prot) |= par->mmap_map[i].prot_flag;
- if (remap_page_range(vma, vma->vm_start + page, map_offset,
- map_size, vma->vm_page_prot))
+ if (remap_pfn_range(vma, vma->vm_start + page,
+ map_offset >> PAGE_SHIFT, map_size, vma->vm_page_prot))
return -EAGAIN;
page += map_size;
Index: mm3-2.6.9-rc2/drivers/video/gbefb.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/video/gbefb.c 2004-09-25 00:15:57.556022664 -0700
+++ mm3-2.6.9-rc2/drivers/video/gbefb.c 2004-09-25 00:22:23.818301872 -0700
@@ -1018,8 +1018,8 @@
else
phys_size = TILE_SIZE - offset;
- if (remap_page_range
- (vma, addr, phys_addr, phys_size, vma->vm_page_prot))
+ if (remap_pfn_range(vma, addr, phys_addr >> PAGE_SHIFT,
+ phys_size, vma->vm_page_prot))
return -EAGAIN;
offset = 0;
Index: mm3-2.6.9-rc2/drivers/video/igafb.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/video/igafb.c 2004-09-25 00:15:56.984109608 -0700
+++ mm3-2.6.9-rc2/drivers/video/igafb.c 2004-09-25 00:22:27.153794800 -0700
@@ -262,8 +262,8 @@
pgprot_val(vma->vm_page_prot) &= ~(par->mmap_map[i].prot_mask);
pgprot_val(vma->vm_page_prot) |= par->mmap_map[i].prot_flag;
- if (remap_page_range(vma, vma->vm_start + page, map_offset,
- map_size, vma->vm_page_prot))
+ if (remap_pfn_range(vma, vma->vm_start + page,
+ map_offset >> PAGE_SHIFT, map_size, vma->vm_page_prot))
return -EAGAIN;
page += map_size;
Index: mm3-2.6.9-rc2/drivers/video/sgivwfb.c
===================================================================
--- mm3-2.6.9-rc2.orig/drivers/video/sgivwfb.c 2004-09-25 00:15:57.032102312 -0700
+++ mm3-2.6.9-rc2/drivers/video/sgivwfb.c 2004-09-25 00:22:31.619115968 -0700
@@ -719,8 +719,8 @@
pgprot_val(vma->vm_page_prot) =
pgprot_val(vma->vm_page_prot) | _PAGE_PCD;
vma->vm_flags |= VM_IO;
- if (remap_page_range
- (vma, vma->vm_start, offset, size, vma->vm_page_prot))
+ if (remap_pfn_range(vma, vma->vm_start, offset >> PAGE_SHIFT,
+ size, vma->vm_page_prot))
return -EAGAIN;
vma->vm_file = file;
printk(KERN_DEBUG "sgivwfb: mmap framebuffer P(%lx)->V(%lx)\n",
Index: mm3-2.6.9-rc2/net/packet/af_packet.c
===================================================================
--- mm3-2.6.9-rc2.orig/net/packet/af_packet.c 2004-09-25 00:15:55.365355696 -0700
+++ mm3-2.6.9-rc2/net/packet/af_packet.c 2004-09-25 00:28:17.338558624 -0700
@@ -1729,7 +1729,8 @@
start = vma->vm_start;
err = -EAGAIN;
for (i=0; i<po->pg_vec_len; i++) {
- if (remap_page_range(vma, start, __pa(po->pg_vec[i]),
+ if (remap_pfn_range(vma, start,
+ __pa(po->pg_vec[i]) >> PAGE_SHIFT,
po->pg_vec_pages*PAGE_SIZE,
vma->vm_page_prot))
goto out;
^ permalink raw reply [flat|nested] 7+ messages in thread
* [vm 4/6] convert users of remap_page_range() under include/asm-*/ to use remap_pfn_range()
2004-09-25 7:51 ` [vm 3/6] convert users of remap_page_range() under drivers/ and net/ to use remap_pfn_range() William Lee Irwin III
@ 2004-09-25 7:53 ` William Lee Irwin III
2004-09-25 7:55 ` [vm 5/6] convert users of remap_page_range() under sound/ " William Lee Irwin III
0 siblings, 1 reply; 7+ messages in thread
From: William Lee Irwin III @ 2004-09-25 7:53 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel
On Sat, Sep 25, 2004 at 12:51:02AM -0700, William Lee Irwin III wrote:
> This patch converts all callers of remap_page_range() under arch/ and
> net/ to use remap_pfn_range() instead.
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.
Index: mm3-2.6.9-rc2/include/asm-alpha/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-alpha/pgtable.h 2004-09-25 00:15:52.645769136 -0700
+++ mm3-2.6.9-rc2/include/asm-alpha/pgtable.h 2004-09-25 00:24:00.869547840 -0700
@@ -328,7 +328,7 @@
#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))
Index: mm3-2.6.9-rc2/include/asm-arm/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-arm/pgtable.h 2004-09-25 00:15:53.175688576 -0700
+++ mm3-2.6.9-rc2/include/asm-arm/pgtable.h 2004-09-25 00:24:08.254425168 -0700
@@ -412,7 +412,7 @@
* 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)
Index: mm3-2.6.9-rc2/include/asm-arm26/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-arm26/pgtable.h 2004-09-25 00:15:52.418803640 -0700
+++ mm3-2.6.9-rc2/include/asm-arm26/pgtable.h 2004-09-25 00:24:05.602828272 -0700
@@ -288,7 +288,7 @@
* 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__ */
Index: mm3-2.6.9-rc2/include/asm-h8300/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-h8300/pgtable.h 2004-09-25 00:15:52.500791176 -0700
+++ mm3-2.6.9-rc2/include/asm-h8300/pgtable.h 2004-09-25 00:24:11.947863680 -0700
@@ -50,7 +50,8 @@
* 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...
Index: mm3-2.6.9-rc2/include/asm-i386/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-i386/pgtable.h 2004-09-25 00:15:52.570780536 -0700
+++ mm3-2.6.9-rc2/include/asm-i386/pgtable.h 2004-09-25 00:24:15.331349312 -0700
@@ -404,7 +404,8 @@
#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
Index: mm3-2.6.9-rc2/include/asm-ia64/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-ia64/pgtable.h 2004-09-25 00:15:53.354661368 -0700
+++ mm3-2.6.9-rc2/include/asm-ia64/pgtable.h 2004-09-25 00:26:25.331586272 -0700
@@ -452,7 +452,9 @@
#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
Index: mm3-2.6.9-rc2/include/asm-m32r/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-m32r/pgtable.h 2004-09-25 00:15:52.258827960 -0700
+++ mm3-2.6.9-rc2/include/asm-m32r/pgtable.h 2004-09-25 00:26:29.748914736 -0700
@@ -408,7 +408,8 @@
/* 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
Index: mm3-2.6.9-rc2/include/asm-m68k/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-m68k/pgtable.h 2004-09-25 00:15:52.948723080 -0700
+++ mm3-2.6.9-rc2/include/asm-m68k/pgtable.h 2004-09-25 00:26:38.698554184 -0700
@@ -138,7 +138,8 @@
#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 */
Index: mm3-2.6.9-rc2/include/asm-m68knommu/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-m68knommu/pgtable.h 2004-09-25 00:15:52.805744816 -0700
+++ mm3-2.6.9-rc2/include/asm-m68knommu/pgtable.h 2004-09-25 00:26:33.911281960 -0700
@@ -54,7 +54,8 @@
* 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...
Index: mm3-2.6.9-rc2/include/asm-mips/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-mips/pgtable.h 2004-09-25 00:15:53.022711832 -0700
+++ mm3-2.6.9-rc2/include/asm-mips/pgtable.h 2004-09-25 00:26:43.204869120 -0700
@@ -245,7 +245,8 @@
*/
#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
Index: mm3-2.6.9-rc2/include/asm-parisc/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-parisc/pgtable.h 2004-09-25 00:15:53.233679760 -0700
+++ mm3-2.6.9-rc2/include/asm-parisc/pgtable.h 2004-09-25 00:26:46.632348064 -0700
@@ -505,7 +505,8 @@
#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 */
Index: mm3-2.6.9-rc2/include/asm-ppc/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-ppc/pgtable.h 2004-09-25 00:15:52.878733720 -0700
+++ mm3-2.6.9-rc2/include/asm-ppc/pgtable.h 2004-09-25 00:26:56.175897224 -0700
@@ -714,7 +714,8 @@
/* 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
Index: mm3-2.6.9-rc2/include/asm-ppc64/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-ppc64/pgtable.h 2004-09-25 00:15:53.290671096 -0700
+++ mm3-2.6.9-rc2/include/asm-ppc64/pgtable.h 2004-09-25 00:26:52.666430744 -0700
@@ -492,7 +492,8 @@
*/
#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);
Index: mm3-2.6.9-rc2/include/asm-sh/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-sh/pgtable.h 2004-09-25 00:15:52.336816104 -0700
+++ mm3-2.6.9-rc2/include/asm-sh/pgtable.h 2004-09-25 00:27:27.159187048 -0700
@@ -274,7 +274,8 @@
#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
Index: mm3-2.6.9-rc2/include/asm-sh64/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-sh64/pgtable.h 2004-09-25 00:15:52.732755912 -0700
+++ mm3-2.6.9-rc2/include/asm-sh64/pgtable.h 2004-09-25 00:27:00.543233288 -0700
@@ -479,7 +479,8 @@
#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__ */
/*
Index: mm3-2.6.9-rc2/include/asm-x86_64/pgtable.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/asm-x86_64/pgtable.h 2004-09-25 00:15:53.098700280 -0700
+++ mm3-2.6.9-rc2/include/asm-x86_64/pgtable.h 2004-09-25 00:27:52.830284448 -0700
@@ -421,7 +421,8 @@
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
^ permalink raw reply [flat|nested] 7+ messages in thread
* [vm 5/6] convert users of remap_page_range() under sound/ to use remap_pfn_range()
2004-09-25 7:53 ` [vm 4/6] convert users of remap_page_range() under include/asm-*/ " William Lee Irwin III
@ 2004-09-25 7:55 ` William Lee Irwin III
2004-09-25 7:58 ` [vm 6/6] for -mm only: remove remap_page_range() completely William Lee Irwin III
0 siblings, 1 reply; 7+ messages in thread
From: William Lee Irwin III @ 2004-09-25 7:55 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel
On Sat, Sep 25, 2004 at 12:53:28AM -0700, William Lee Irwin III wrote:
> 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.
This patch converts all users of remap_page_range() under sound/ to use
remap_pfn_range(), with the exception of maestro3 changelogs, which are
likely expected to be preserved intact apart from additions (as most
changelogs are), regardless of API changes.
Index: mm3-2.6.9-rc2/sound/oss/ali5455.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/ali5455.c 2004-09-25 00:15:53.713606800 -0700
+++ mm3-2.6.9-rc2/sound/oss/ali5455.c 2004-09-25 00:28:42.280766832 -0700
@@ -934,7 +934,7 @@
dmabuf->rawbuf = rawbuf;
dmabuf->buforder = order;
- /* now mark the pages as reserved; otherwise remap_page_range doesn't do what we want */
+ /* now mark the pages as reserved; otherwise remap_pfn_range doesn't do what we want */
pend = virt_to_page(rawbuf + (PAGE_SIZE << order) - 1);
for (page = virt_to_page(rawbuf); page <= pend; page++)
SetPageReserved(page);
@@ -1955,7 +1955,9 @@
if (size > (PAGE_SIZE << dmabuf->buforder))
goto out;
ret = -EAGAIN;
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(dmabuf->rawbuf), size, vma->vm_page_prot))
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(dmabuf->rawbuf) >> PAGE_SHIFT,
+ size, vma->vm_page_prot))
goto out;
dmabuf->mapped = 1;
dmabuf->trigger = 0;
Index: mm3-2.6.9-rc2/sound/oss/au1000.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/au1000.c 2004-09-25 00:15:53.961569104 -0700
+++ mm3-2.6.9-rc2/sound/oss/au1000.c 2004-09-25 00:28:45.779234984 -0700
@@ -629,7 +629,7 @@
return -ENOMEM;
db->buforder = order;
/* now mark the pages as reserved;
- otherwise remap_page_range doesn't do what we want */
+ otherwise remap_pfn_range doesn't do what we want */
pend = virt_to_page(db->rawbuf +
(PAGE_SIZE << db->buforder) - 1);
for (page = virt_to_page(db->rawbuf); page <= pend; page++)
@@ -1338,7 +1338,8 @@
ret = -EINVAL;
goto out;
}
- if (remap_page_range(vma->vm_start, virt_to_phys(db->rawbuf),
+ if (remap_pfn_range(vma->vm_start,
+ virt_to_phys(db->rawbuf) >> PAGE_SHIFT,
size, vma->vm_page_prot)) {
ret = -EAGAIN;
goto out;
Index: mm3-2.6.9-rc2/sound/oss/cmpci.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/cmpci.c 2004-09-25 00:15:54.083550560 -0700
+++ mm3-2.6.9-rc2/sound/oss/cmpci.c 2004-09-25 00:28:49.412682616 -0700
@@ -1393,7 +1393,7 @@
if (!db->rawbuf || !db->dmaaddr)
return -ENOMEM;
db->buforder = order;
- /* now mark the pages as reserved; otherwise remap_page_range doesn't do what we want */
+ /* now mark the pages as reserved; otherwise remap_pfn_range doesn't do what we want */
pend = virt_to_page(db->rawbuf + (PAGE_SIZE << db->buforder) - 1);
for (pstart = virt_to_page(db->rawbuf); pstart <= pend; pstart++)
SetPageReserved(pstart);
@@ -2301,7 +2301,9 @@
if (size > (PAGE_SIZE << db->buforder))
goto out;
ret = -EINVAL;
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(db->rawbuf), size, vma->vm_page_prot))
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(db->rawbuf) >> PAGE_SHIFT,
+ size, vma->vm_page_prot))
goto out;
db->mapped = 1;
ret = 0;
Index: mm3-2.6.9-rc2/sound/oss/cs4281/cs4281m.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/cs4281/cs4281m.c 2004-09-25 00:15:54.478490520 -0700
+++ mm3-2.6.9-rc2/sound/oss/cs4281/cs4281m.c 2004-09-25 00:28:55.532752224 -0700
@@ -1755,7 +1755,7 @@
}
db->buforder = order;
// Now mark the pages as reserved; otherwise the
- // remap_page_range() in cs4281_mmap doesn't work.
+ // remap_pfn_range() in cs4281_mmap doesn't work.
// 1. get index to last page in mem_map array for rawbuf.
mapend = virt_to_page(db->rawbuf +
(PAGE_SIZE << db->buforder) - 1);
@@ -1778,7 +1778,7 @@
}
s->buforder_tmpbuff = order;
// Now mark the pages as reserved; otherwise the
- // remap_page_range() in cs4281_mmap doesn't work.
+ // remap_pfn_range() in cs4281_mmap doesn't work.
// 1. get index to last page in mem_map array for rawbuf.
mapend = virt_to_page(s->tmpbuff +
(PAGE_SIZE << s->buforder_tmpbuff) - 1);
@@ -3135,9 +3135,10 @@
size = vma->vm_end - vma->vm_start;
if (size > (PAGE_SIZE << db->buforder))
return -EINVAL;
- if (remap_page_range
- (vma, vma->vm_start, virt_to_phys(db->rawbuf), size,
- vma->vm_page_prot)) return -EAGAIN;
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(db->rawbuf) >> PAGE_SHIFT,
+ size, vma->vm_page_prot))
+ return -EAGAIN;
db->mapped = 1;
CS_DBGOUT(CS_FUNCTION | CS_PARMS | CS_OPEN, 4,
Index: mm3-2.6.9-rc2/sound/oss/cs46xx.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/cs46xx.c 2004-09-25 00:15:54.542480792 -0700
+++ mm3-2.6.9-rc2/sound/oss/cs46xx.c 2004-09-25 00:28:58.340325408 -0700
@@ -1190,7 +1190,7 @@
dmabuf->buforder = order;
dmabuf->rawbuf = rawbuf;
// Now mark the pages as reserved; otherwise the
- // remap_page_range() in cs46xx_mmap doesn't work.
+ // remap_pfn_range() in cs46xx_mmap doesn't work.
// 1. get index to last page in mem_map array for rawbuf.
mapend = virt_to_page(dmabuf->rawbuf +
(PAGE_SIZE << dmabuf->buforder) - 1);
@@ -1227,7 +1227,7 @@
dmabuf->buforder_tmpbuff = order;
// Now mark the pages as reserved; otherwise the
- // remap_page_range() in cs46xx_mmap doesn't work.
+ // remap_pfn_range() in cs46xx_mmap doesn't work.
// 1. get index to last page in mem_map array for rawbuf.
mapend = virt_to_page(dmabuf->tmpbuff +
(PAGE_SIZE << dmabuf->buforder_tmpbuff) - 1);
@@ -2452,7 +2452,8 @@
ret = -EINVAL;
goto out;
}
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(dmabuf->rawbuf),
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(dmabuf->rawbuf) >> PAGE_SHIFT,
size, vma->vm_page_prot))
{
ret = -EAGAIN;
Index: mm3-2.6.9-rc2/sound/oss/es1370.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/es1370.c 2004-09-25 00:15:53.525635376 -0700
+++ mm3-2.6.9-rc2/sound/oss/es1370.c 2004-09-25 00:29:05.662212312 -0700
@@ -573,7 +573,7 @@
if (!db->rawbuf)
return -ENOMEM;
db->buforder = order;
- /* now mark the pages as reserved; otherwise remap_page_range doesn't do what we want */
+ /* now mark the pages as reserved; otherwise remap_pfn_range doesn't do what we want */
pend = virt_to_page(db->rawbuf + (PAGE_SIZE << db->buforder) - 1);
for (page = virt_to_page(db->rawbuf); page <= pend; page++)
SetPageReserved(page);
@@ -1364,7 +1364,9 @@
ret = -EINVAL;
goto out;
}
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(db->rawbuf), size, vma->vm_page_prot)) {
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(db->rawbuf) >> PAGE_SHIFT,
+ size, vma->vm_page_prot)) {
ret = -EAGAIN;
goto out;
}
@@ -1940,7 +1942,9 @@
if (size > (PAGE_SIZE << s->dma_dac1.buforder))
goto out;
ret = -EAGAIN;
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(s->dma_dac1.rawbuf), size, vma->vm_page_prot))
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(s->dma_dac1.rawbuf) >> PAGE_SHIFT,
+ size, vma->vm_page_prot))
goto out;
s->dma_dac1.mapped = 1;
ret = 0;
Index: mm3-2.6.9-rc2/sound/oss/es1371.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/es1371.c 2004-09-25 00:15:53.887580352 -0700
+++ mm3-2.6.9-rc2/sound/oss/es1371.c 2004-09-25 00:29:08.231821672 -0700
@@ -910,7 +910,7 @@
if (!db->rawbuf)
return -ENOMEM;
db->buforder = order;
- /* now mark the pages as reserved; otherwise remap_page_range doesn't do what we want */
+ /* now mark the pages as reserved; otherwise remap_pfn_range doesn't do what we want */
pend = virt_to_page(db->rawbuf + (PAGE_SIZE << db->buforder) - 1);
for (page = virt_to_page(db->rawbuf); page <= pend; page++)
SetPageReserved(page);
@@ -1555,7 +1555,9 @@
ret = -EINVAL;
goto out;
}
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(db->rawbuf), size, vma->vm_page_prot)) {
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(db->rawbuf) >> PAGE_SHIFT,
+ size, vma->vm_page_prot)) {
ret = -EAGAIN;
goto out;
}
@@ -2128,7 +2130,9 @@
if (size > (PAGE_SIZE << s->dma_dac1.buforder))
goto out;
ret = -EAGAIN;
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(s->dma_dac1.rawbuf), size, vma->vm_page_prot))
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(s->dma_dac1.rawbuf) >> PAGE_SHIFT,
+ size, vma->vm_page_prot))
goto out;
s->dma_dac1.mapped = 1;
ret = 0;
Index: mm3-2.6.9-rc2/sound/oss/esssolo1.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/esssolo1.c 2004-09-25 00:15:54.389504048 -0700
+++ mm3-2.6.9-rc2/sound/oss/esssolo1.c 2004-09-25 00:29:11.880267024 -0700
@@ -445,7 +445,7 @@
if (!db->rawbuf)
return -ENOMEM;
db->buforder = order;
- /* now mark the pages as reserved; otherwise remap_page_range doesn't do what we want */
+ /* now mark the pages as reserved; otherwise remap_pfn_range doesn't do what we want */
pend = virt_to_page(db->rawbuf + (PAGE_SIZE << db->buforder) - 1);
for (page = virt_to_page(db->rawbuf); page <= pend; page++)
SetPageReserved(page);
@@ -1242,7 +1242,9 @@
if (size > (PAGE_SIZE << db->buforder))
goto out;
ret = -EAGAIN;
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(db->rawbuf), size, vma->vm_page_prot))
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(db->rawbuf) >> PAGE_SHIFT,
+ size, vma->vm_page_prot))
goto out;
db->mapped = 1;
ret = 0;
Index: mm3-2.6.9-rc2/sound/oss/forte.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/forte.c 2004-09-25 00:15:54.271521984 -0700
+++ mm3-2.6.9-rc2/sound/oss/forte.c 2004-09-25 00:29:15.041786400 -0700
@@ -1409,7 +1409,8 @@
goto out;
}
- if (remap_page_range (vma, vma->vm_start, virt_to_phys (channel->buf),
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(channel->buf) >> PAGE_SHIFT,
size, vma->vm_page_prot)) {
DPRINTK ("%s: remap el a no worko\n", __FUNCTION__);
ret = -EAGAIN;
Index: mm3-2.6.9-rc2/sound/oss/i810_audio.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/i810_audio.c 2004-09-25 00:15:53.830589016 -0700
+++ mm3-2.6.9-rc2/sound/oss/i810_audio.c 2004-09-25 00:29:18.347283888 -0700
@@ -917,7 +917,7 @@
dmabuf->rawbuf = rawbuf;
dmabuf->buforder = order;
- /* now mark the pages as reserved; otherwise remap_page_range doesn't do what we want */
+ /* now mark the pages as reserved; otherwise remap_pfn_range doesn't do what we want */
pend = virt_to_page(rawbuf + (PAGE_SIZE << order) - 1);
for (page = virt_to_page(rawbuf); page <= pend; page++)
SetPageReserved(page);
@@ -1750,7 +1750,8 @@
if (size > (PAGE_SIZE << dmabuf->buforder))
goto out;
ret = -EAGAIN;
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(dmabuf->rawbuf),
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(dmabuf->rawbuf) >> PAGE_SHIFT,
size, vma->vm_page_prot))
goto out;
dmabuf->mapped = 1;
Index: mm3-2.6.9-rc2/sound/oss/ite8172.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/ite8172.c 2004-09-25 00:15:54.330513016 -0700
+++ mm3-2.6.9-rc2/sound/oss/ite8172.c 2004-09-25 00:29:22.860597760 -0700
@@ -693,7 +693,7 @@
return -ENOMEM;
db->buforder = order;
/* now mark the pages as reserved;
- otherwise remap_page_range doesn't do what we want */
+ otherwise remap_pfn_range doesn't do what we want */
pend = virt_to_page(db->rawbuf +
(PAGE_SIZE << db->buforder) - 1);
for (page = virt_to_page(db->rawbuf); page <= pend; page++)
@@ -1311,7 +1311,8 @@
unlock_kernel();
return -EINVAL;
}
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(db->rawbuf),
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(db->rawbuf) >> PAGE_SHIFT,
size, vma->vm_page_prot)) {
unlock_kernel();
return -EAGAIN;
Index: mm3-2.6.9-rc2/sound/oss/maestro.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/maestro.c 2004-09-25 00:15:53.596624584 -0700
+++ mm3-2.6.9-rc2/sound/oss/maestro.c 2004-09-25 00:29:32.279165920 -0700
@@ -2520,7 +2520,9 @@
if (size > (PAGE_SIZE << db->buforder))
goto out;
ret = -EAGAIN;
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(db->rawbuf), size, vma->vm_page_prot))
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(db->rawbuf) >> PAGE_SHIFT,
+ size, vma->vm_page_prot))
goto out;
db->mapped = 1;
ret = 0;
@@ -2953,7 +2955,7 @@
}
- /* now mark the pages as reserved; otherwise remap_page_range doesn't do what we want */
+ /* now mark the pages as reserved; otherwise remap_pfn_range doesn't do what we want */
pend = virt_to_page(rawbuf + (PAGE_SIZE << order) - 1);
for (page = virt_to_page(rawbuf); page <= pend; page++)
SetPageReserved(page);
Index: mm3-2.6.9-rc2/sound/oss/maestro3.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/maestro3.c 2004-09-25 00:15:53.651616224 -0700
+++ mm3-2.6.9-rc2/sound/oss/maestro3.c 2004-09-25 00:29:30.275470528 -0700
@@ -1557,7 +1557,9 @@
* ask Jeff what the hell I'm doing wrong.
*/
ret = -EAGAIN;
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(db->rawbuf), size, vma->vm_page_prot))
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(db->rawbuf) >> PAGE_SHIFT,
+ size, vma->vm_page_prot))
goto out;
db->mapped = 1;
Index: mm3-2.6.9-rc2/sound/oss/rme96xx.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/rme96xx.c 2004-09-25 00:15:54.230528216 -0700
+++ mm3-2.6.9-rc2/sound/oss/rme96xx.c 2004-09-25 00:29:36.517521592 -0700
@@ -1685,14 +1685,14 @@
if (vma->vm_flags & VM_WRITE) {
if (!s->started) rme96xx_startcard(s,1);
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(s->playbuf + dma->outoffset*RME96xx_DMA_MAX_SIZE), size, vma->vm_page_prot)) {
+ if (remap_pfn_range(vma, vma->vm_start, virt_to_phys(s->playbuf + dma->outoffset*RME96xx_DMA_MAX_SIZE) >> PAGE_SHIFT, size, vma->vm_page_prot)) {
unlock_kernel();
return -EAGAIN;
}
}
else if (vma->vm_flags & VM_READ) {
if (!s->started) rme96xx_startcard(s,1);
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(s->playbuf + dma->inoffset*RME96xx_DMA_MAX_SIZE), size, vma->vm_page_prot)) {
+ if (remap_pfn_range(vma, vma->vm_start, virt_to_phys(s->playbuf + dma->inoffset*RME96xx_DMA_MAX_SIZE) >> PAGE_SHIFT, size, vma->vm_page_prot)) {
unlock_kernel();
return -EAGAIN;
}
Index: mm3-2.6.9-rc2/sound/oss/sonicvibes.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/sonicvibes.c 2004-09-25 00:15:54.181535664 -0700
+++ mm3-2.6.9-rc2/sound/oss/sonicvibes.c 2004-09-25 00:29:39.798022880 -0700
@@ -756,7 +756,7 @@
if ((virt_to_bus(db->rawbuf) + (PAGE_SIZE << db->buforder) - 1) & ~0xffffff)
printk(KERN_DEBUG "sv: DMA buffer beyond 16MB: busaddr 0x%lx size %ld\n",
virt_to_bus(db->rawbuf), PAGE_SIZE << db->buforder);
- /* now mark the pages as reserved; otherwise remap_page_range doesn't do what we want */
+ /* now mark the pages as reserved; otherwise remap_pfn_range doesn't do what we want */
pend = virt_to_page(db->rawbuf + (PAGE_SIZE << db->buforder) - 1);
for (page = virt_to_page(db->rawbuf); page <= pend; page++)
SetPageReserved(page);
@@ -1549,7 +1549,9 @@
if (size > (PAGE_SIZE << db->buforder))
goto out;
ret = -EAGAIN;
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(db->rawbuf), size, vma->vm_page_prot))
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(db->rawbuf) >> PAGE_SHIFT,
+ size, vma->vm_page_prot))
goto out;
db->mapped = 1;
ret = 0;
Index: mm3-2.6.9-rc2/sound/oss/soundcard.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/soundcard.c 2004-09-25 00:15:54.126544024 -0700
+++ mm3-2.6.9-rc2/sound/oss/soundcard.c 2004-09-25 00:29:44.236348152 -0700
@@ -463,9 +463,9 @@
if (size != dmap->bytes_in_use) {
printk(KERN_WARNING "Sound: mmap() size = %ld. Should be %d\n", size, dmap->bytes_in_use);
}
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(dmap->raw_buf),
- vma->vm_end - vma->vm_start,
- vma->vm_page_prot)) {
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(dmap->raw_buf) >> PAGE_SHIFT,
+ vma->vm_end - vma->vm_start, vma->vm_page_prot)) {
unlock_kernel();
return -EAGAIN;
}
Index: mm3-2.6.9-rc2/sound/oss/trident.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/trident.c 2004-09-25 00:15:53.769598288 -0700
+++ mm3-2.6.9-rc2/sound/oss/trident.c 2004-09-25 00:29:47.652828768 -0700
@@ -1281,7 +1281,7 @@
dmabuf->buforder = order;
/* now mark the pages as reserved; otherwise */
- /* remap_page_range doesn't do what we want */
+ /* remap_pfn_range doesn't do what we want */
pend = virt_to_page(rawbuf + (PAGE_SIZE << order) - 1);
for (page = virt_to_page(rawbuf); page <= pend; page++)
SetPageReserved(page);
@@ -2223,7 +2223,8 @@
if (size > (PAGE_SIZE << dmabuf->buforder))
goto out;
ret = -EAGAIN;
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(dmabuf->rawbuf),
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(dmabuf->rawbuf) >> PAGE_SHIFT,
size, vma->vm_page_prot))
goto out;
dmabuf->mapped = 1;
Index: mm3-2.6.9-rc2/sound/oss/ymfpci.c
===================================================================
--- mm3-2.6.9-rc2.orig/sound/oss/ymfpci.c 2004-09-25 00:15:54.029558768 -0700
+++ mm3-2.6.9-rc2/sound/oss/ymfpci.c 2004-09-25 00:29:52.098152976 -0700
@@ -334,7 +334,7 @@
dmabuf->dma_addr = dma_addr;
dmabuf->buforder = order;
- /* now mark the pages as reserved; otherwise remap_page_range doesn't do what we want */
+ /* now mark the pages as reserved; otherwise remap_pfn_range doesn't do what we want */
mapend = virt_to_page(rawbuf + (PAGE_SIZE << order) - 1);
for (map = virt_to_page(rawbuf); map <= mapend; map++)
set_bit(PG_reserved, &map->flags);
@@ -1545,7 +1545,8 @@
size = vma->vm_end - vma->vm_start;
if (size > (PAGE_SIZE << dmabuf->buforder))
return -EINVAL;
- if (remap_page_range(vma, vma->vm_start, virt_to_phys(dmabuf->rawbuf),
+ if (remap_pfn_range(vma, vma->vm_start,
+ virt_to_phys(dmabuf->rawbuf) >> PAGE_SHIFT,
size, vma->vm_page_prot))
return -EAGAIN;
dmabuf->mapped = 1;
^ permalink raw reply [flat|nested] 7+ messages in thread
* [vm 6/6] for -mm only: remove remap_page_range() completely
2004-09-25 7:55 ` [vm 5/6] convert users of remap_page_range() under sound/ " William Lee Irwin III
@ 2004-09-25 7:58 ` William Lee Irwin III
0 siblings, 0 replies; 7+ messages in thread
From: William Lee Irwin III @ 2004-09-25 7:58 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel
On Sat, Sep 25, 2004 at 12:55:24AM -0700, William Lee Irwin III wrote:
> This patch converts all users of remap_page_range() under sound/ to use
> remap_pfn_range(), with the exception of maestro3 changelogs, which are
> likely expected to be preserved intact apart from additions (as most
> changelogs are), regardless of API changes.
All in-tree references to remap_page_range() have been removed by prior
patches in the series. This patch, intended to be applied after some
waiting period for people to adjust to the API change, notice
__deprecated, etc., does the final removal of remap_page_range() as a
function symbol declared within kernel headers and/or implemented in
kernel sources.
Index: mm3-2.6.9-rc2/include/linux/mm.h
===================================================================
--- mm3-2.6.9-rc2.orig/include/linux/mm.h 2004-09-25 00:34:59.009495360 -0700
+++ mm3-2.6.9-rc2/include/linux/mm.h 2004-09-25 00:35:15.435998152 -0700
@@ -859,13 +859,6 @@
int remap_pfn_range(struct vm_area_struct *, unsigned long,
unsigned long, unsigned long, pgprot_t);
-static inline __deprecated /* since 25 Sept 2004 -- wli */
-int remap_page_range(struct vm_area_struct *vma, unsigned long uvaddr,
- unsigned long paddr, unsigned long size, pgprot_t prot)
-{
- return remap_pfn_range(vma, uvaddr, paddr >> PAGE_SHIFT, size, prot);
-}
-
#ifdef CONFIG_PROC_FS
void __vm_stat_account(struct mm_struct *, unsigned long, struct file *, long);
#else
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2004-09-25 7:58 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-25 7:44 [vm 0/6] convert remap_page_range() to remap_pfn_range() in a patch series shorter than 76 patches William Lee Irwin III
2004-09-25 7:47 ` [vm 1/6] introduce remap_pfn_range() to replace remap_page_range() William Lee Irwin III
2004-09-25 7:49 ` [vm 2/6] convert references to remap_page_range() under arch/ and Documentation/ to remap_pfn_range() William Lee Irwin III
2004-09-25 7:51 ` [vm 3/6] convert users of remap_page_range() under drivers/ and net/ to use remap_pfn_range() William Lee Irwin III
2004-09-25 7:53 ` [vm 4/6] convert users of remap_page_range() under include/asm-*/ " William Lee Irwin III
2004-09-25 7:55 ` [vm 5/6] convert users of remap_page_range() under sound/ " William Lee Irwin III
2004-09-25 7:58 ` [vm 6/6] for -mm only: remove remap_page_range() completely William Lee Irwin III
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox