From: William Lee Irwin III This patch converts all callers of remap_page_range() under arch/ and net/ to use remap_pfn_range() instead. Signed-off-by: Andrew Morton --- 25-akpm/drivers/char/agp/frontend.c | 8 ++++---- 25-akpm/drivers/char/drm/drm_vm.h | 4 ++-- 25-akpm/drivers/char/drm/i810_dma.c | 4 ++-- 25-akpm/drivers/char/drm/i830_dma.c | 4 ++-- 25-akpm/drivers/char/ftape/lowlevel/ftape-ctl.c | 7 +++++-- 25-akpm/drivers/char/hpet.c | 6 +++--- 25-akpm/drivers/char/mem.c | 2 +- 25-akpm/drivers/char/mmtimer.c | 8 ++++---- 25-akpm/drivers/ieee1394/video1394.c | 2 +- 25-akpm/drivers/media/video/cpia.c | 18 ++---------------- 25-akpm/drivers/media/video/meye.c | 17 ++--------------- 25-akpm/drivers/media/video/planb.c | 6 ++++-- 25-akpm/drivers/media/video/zoran_driver.c | 22 +++++++++------------- 25-akpm/drivers/media/video/zr36120.c | 4 ++-- 25-akpm/drivers/perfctr/virtual.c | 3 ++- 25-akpm/drivers/sbus/char/flash.c | 4 ++-- 25-akpm/drivers/sbus/char/jsflash.c | 2 +- 25-akpm/drivers/usb/class/audio.c | 5 ++++- 25-akpm/drivers/usb/media/ov511.c | 20 ++------------------ 25-akpm/drivers/usb/media/se401.c | 18 ++---------------- 25-akpm/drivers/usb/media/sn9c102_core.c | 16 ++-------------- 25-akpm/drivers/usb/media/stv680.c | 18 ++---------------- 25-akpm/drivers/usb/media/usbvideo.c | 19 ++----------------- 25-akpm/drivers/usb/media/vicam.c | 14 ++------------ 25-akpm/drivers/usb/media/w9968cf.c | 21 +++------------------ 25-akpm/drivers/video/aty/atyfb_base.c | 4 ++-- 25-akpm/drivers/video/gbefb.c | 4 ++-- 25-akpm/drivers/video/igafb.c | 4 ++-- 25-akpm/drivers/video/sgivwfb.c | 4 ++-- 25-akpm/net/packet/af_packet.c | 3 ++- 30 files changed, 77 insertions(+), 194 deletions(-) diff -puN drivers/char/agp/frontend.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/char/agp/frontend.c --- 25/drivers/char/agp/frontend.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.428946616 -0700 +++ 25-akpm/drivers/char/agp/frontend.c 2004-09-25 22:02:59.489937344 -0700 @@ -627,8 +627,8 @@ static int agp_mmap(struct file *file, s 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 @@ static int agp_mmap(struct file *file, s 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; } diff -puN drivers/char/drm/drm_vm.h~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/char/drm/drm_vm.h --- 25/drivers/char/drm/drm_vm.h~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.429946464 -0700 +++ 25-akpm/drivers/char/drm/drm_vm.h 2004-09-25 22:02:59.490937192 -0700 @@ -620,8 +620,8 @@ int DRM(mmap)(struct file *filp, struct 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 diff -puN drivers/char/drm/i810_dma.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/char/drm/i810_dma.c --- 25/drivers/char/drm/i810_dma.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.431946160 -0700 +++ 25-akpm/drivers/char/drm/i810_dma.c 2004-09-25 22:02:59.491937040 -0700 @@ -138,8 +138,8 @@ int i810_mmap_buffers(struct file *filp, 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; diff -puN drivers/char/drm/i830_dma.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/char/drm/i830_dma.c --- 25/drivers/char/drm/i830_dma.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.433945856 -0700 +++ 25-akpm/drivers/char/drm/i830_dma.c 2004-09-25 22:02:59.492936888 -0700 @@ -139,8 +139,8 @@ int i830_mmap_buffers(struct file *filp, 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; diff -puN drivers/char/ftape/lowlevel/ftape-ctl.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/char/ftape/lowlevel/ftape-ctl.c --- 25/drivers/char/ftape/lowlevel/ftape-ctl.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.434945704 -0700 +++ 25-akpm/drivers/char/ftape/lowlevel/ftape-ctl.c 2004-09-25 22:02:59.493936736 -0700 @@ -726,9 +726,12 @@ int ftape_mmap(struct vm_area_struct *vm 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); diff -puN drivers/char/hpet.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/char/hpet.c --- 25/drivers/char/hpet.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.436945400 -0700 +++ 25-akpm/drivers/char/hpet.c 2004-09-25 22:02:59.494936584 -0700 @@ -273,9 +273,9 @@ static int hpet_mmap(struct file *file, 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; } diff -puN drivers/char/mem.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/char/mem.c --- 25/drivers/char/mem.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.438945096 -0700 +++ 25-akpm/drivers/char/mem.c 2004-09-25 22:02:59.495936432 -0700 @@ -225,7 +225,7 @@ static int mmap_mem(struct file *file, s */ 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; diff -puN drivers/char/mmtimer.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/char/mmtimer.c --- 25/drivers/char/mmtimer.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.439944944 -0700 +++ 25-akpm/drivers/char/mmtimer.c 2004-09-25 22:02:59.496936280 -0700 @@ -139,7 +139,7 @@ static int mmtimer_ioctl(struct inode *i * @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 @@ static int mmtimer_mmap(struct file *fil 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; } diff -puN drivers/ieee1394/video1394.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/ieee1394/video1394.c --- 25/drivers/ieee1394/video1394.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.440944792 -0700 +++ 25-akpm/drivers/ieee1394/video1394.c 2004-09-25 22:02:59.497936128 -0700 @@ -1157,7 +1157,7 @@ static int video1394_ioctl(struct inode * * 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 ... :-( */ diff -puN drivers/media/video/cpia.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/media/video/cpia.c --- 25/drivers/media/video/cpia.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.442944488 -0700 +++ 25-akpm/drivers/media/video/cpia.c 2004-09-25 22:02:59.500935672 -0700 @@ -216,20 +216,6 @@ static void set_flicker(struct cam_param * 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 @@ static int cpia_mmap(struct file *file, 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; } diff -puN drivers/media/video/meye.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/media/video/meye.c --- 25/drivers/media/video/meye.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.444944184 -0700 +++ 25-akpm/drivers/media/video/meye.c 2004-09-25 22:02:59.502935368 -0700 @@ -115,19 +115,6 @@ static inline int meye_emptyq(struct mey /****************************************************************************/ /* 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 @@ static int meye_mmap(struct file *file, 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; } diff -puN drivers/media/video/planb.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/media/video/planb.c --- 25/drivers/media/video/planb.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.445944032 -0700 +++ 25-akpm/drivers/media/video/planb.c 2004-09-25 22:02:59.503935216 -0700 @@ -1995,8 +1995,10 @@ static int planb_mmap(struct vm_area_str 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) diff -puN drivers/media/video/zoran_driver.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/media/video/zoran_driver.c --- 25/drivers/media/video/zoran_driver.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.447943728 -0700 +++ 25-akpm/drivers/media/video/zoran_driver.c 2004-09-25 22:02:59.507934608 -0700 @@ -4448,12 +4448,6 @@ static struct vm_operations_struct zoran .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 @@ zoran_mmap (struct file *file, 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 @@ zoran_mmap (struct file *file, 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; diff -puN drivers/media/video/zr36120.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/media/video/zr36120.c --- 25/drivers/media/video/zr36120.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.449943424 -0700 +++ 25-akpm/drivers/media/video/zr36120.c 2004-09-25 22:02:59.509934304 -0700 @@ -1474,8 +1474,8 @@ int zoran_mmap(struct vm_area_struct *vm /* 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; diff -puN drivers/perfctr/virtual.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/perfctr/virtual.c --- 25/drivers/perfctr/virtual.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.450943272 -0700 +++ 25-akpm/drivers/perfctr/virtual.c 2004-09-25 22:02:59.510934152 -0700 @@ -720,7 +720,8 @@ static int vperfctr_mmap(struct file *fi 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); } diff -puN drivers/sbus/char/flash.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/sbus/char/flash.c --- 25/drivers/sbus/char/flash.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.452942968 -0700 +++ 25-akpm/drivers/sbus/char/flash.c 2004-09-25 22:02:59.510934152 -0700 @@ -66,7 +66,7 @@ flash_mmap(struct file *file, struct vm_ 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 @@ flash_mmap(struct file *file, struct vm_ 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; diff -puN drivers/sbus/char/jsflash.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/sbus/char/jsflash.c --- 25/drivers/sbus/char/jsflash.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.453942816 -0700 +++ 25-akpm/drivers/sbus/char/jsflash.c 2004-09-25 22:02:59.512933848 -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. */ diff -puN drivers/usb/class/audio.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/usb/class/audio.c --- 25/drivers/usb/class/audio.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.455942512 -0700 +++ 25-akpm/drivers/usb/class/audio.c 2004-09-25 22:02:59.514933544 -0700 @@ -509,7 +509,10 @@ static int dmabuf_mmap(struct vm_area_st 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; } diff -puN drivers/usb/media/ov511.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/usb/media/ov511.c --- 25/drivers/usb/media/ov511.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.457942208 -0700 +++ 25-akpm/drivers/usb/media/ov511.c 2004-09-25 22:02:59.519932784 -0700 @@ -324,21 +324,6 @@ static struct symbolic_list urb_errlist[ /********************************************************************** * 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 @@ ov51x_v4l1_mmap(struct file *file, struc 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; } diff -puN drivers/usb/media/se401.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/usb/media/se401.c --- 25/drivers/usb/media/se401.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.459941904 -0700 +++ 25-akpm/drivers/usb/media/se401.c 2004-09-25 22:02:59.520932632 -0700 @@ -65,20 +65,6 @@ static struct usb_driver se401_driver; * 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 @@ static int se401_mmap(struct file *file, } 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; } diff -puN drivers/usb/media/sn9c102_core.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/usb/media/sn9c102_core.c --- 25/drivers/usb/media/sn9c102_core.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.460941752 -0700 +++ 25-akpm/drivers/usb/media/sn9c102_core.c 2004-09-25 22:02:59.522932328 -0700 @@ -101,18 +101,6 @@ static sn9c102_eof_header_t sn9c102_eof_ }; /*****************************************************************************/ - -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 @@ static int sn9c102_mmap(struct file* fil 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; diff -puN drivers/usb/media/stv680.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/usb/media/stv680.c --- 25/drivers/usb/media/stv680.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.472939928 -0700 +++ 25-akpm/drivers/usb/media/stv680.c 2004-09-25 22:02:59.524932024 -0700 @@ -118,20 +118,6 @@ module_param(video_nr, int, 0); * * 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 @@ static int stv680_mmap (struct file *fil } 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; } diff -puN drivers/usb/media/usbvideo.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/usb/media/usbvideo.c --- 25/drivers/usb/media/usbvideo.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.474939624 -0700 +++ 25-akpm/drivers/usb/media/usbvideo.c 2004-09-25 22:02:59.526931720 -0700 @@ -60,21 +60,6 @@ static void usbvideo_SoftwareContrastAdj /*******************************/ /* 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 @@ static int usbvideo_v4l_mmap(struct file 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; diff -puN drivers/usb/media/vicam.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/usb/media/vicam.c --- 25/drivers/usb/media/vicam.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.475939472 -0700 +++ 25-akpm/drivers/usb/media/vicam.c 2004-09-25 22:02:59.527931568 -0700 @@ -351,16 +351,6 @@ static unsigned char setup5[] = { 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 @@ vicam_mmap(struct file *file, struct vm_ 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; diff -puN drivers/usb/media/w9968cf.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/usb/media/w9968cf.c --- 25/drivers/usb/media/w9968cf.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.477939168 -0700 +++ 25-akpm/drivers/usb/media/w9968cf.c 2004-09-25 22:02:59.530931112 -0700 @@ -457,7 +457,6 @@ static int w9968cf_i2c_control(struct i2 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 @@ static struct w9968cf_symbolic_list urb_ /**************************************************************************** * 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 @@ static int w9968cf_mmap(struct file* fil 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; diff -puN drivers/video/aty/atyfb_base.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/video/aty/atyfb_base.c --- 25/drivers/video/aty/atyfb_base.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.479938864 -0700 +++ 25-akpm/drivers/video/aty/atyfb_base.c 2004-09-25 22:02:59.532930808 -0700 @@ -1174,8 +1174,8 @@ static int atyfb_mmap(struct fb_info *in ~(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; diff -puN drivers/video/gbefb.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/video/gbefb.c --- 25/drivers/video/gbefb.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.480938712 -0700 +++ 25-akpm/drivers/video/gbefb.c 2004-09-25 22:02:59.533930656 -0700 @@ -1018,8 +1018,8 @@ static int gbefb_mmap(struct fb_info *in 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; diff -puN drivers/video/igafb.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/video/igafb.c --- 25/drivers/video/igafb.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.482938408 -0700 +++ 25-akpm/drivers/video/igafb.c 2004-09-25 22:02:59.534930504 -0700 @@ -262,8 +262,8 @@ static int igafb_mmap(struct fb_info *in 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; diff -puN drivers/video/sgivwfb.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range drivers/video/sgivwfb.c --- 25/drivers/video/sgivwfb.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.483938256 -0700 +++ 25-akpm/drivers/video/sgivwfb.c 2004-09-25 22:02:59.535930352 -0700 @@ -719,8 +719,8 @@ static int sgivwfb_mmap(struct fb_info * 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", diff -puN net/packet/af_packet.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range net/packet/af_packet.c --- 25/net/packet/af_packet.c~convert-users-of-remap_page_range-under-drivers-and-net-to-use-remap_pfn_range 2004-09-25 22:02:59.485937952 -0700 +++ 25-akpm/net/packet/af_packet.c 2004-09-25 22:02:59.536930200 -0700 @@ -1729,7 +1729,8 @@ static int packet_mmap(struct file *file start = vma->vm_start; err = -EAGAIN; for (i=0; ipg_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; _