From: Christoph Lameter Remove VM_LOCKED before remap_pfn range from device drivers and get rid of VM_SHM. remap_pfn_range() already sets VM_IO. There is no need to set VM_SHM since it does nothing. VM_LOCKED is of no use since the remap_pfn_range does not place pages on the LRU. The pages are therefore never subject to swap anyways. Remove all the vm_flags settings before calling remap_pfn_range. After removing all the vm_flag settings no use of VM_SHM is left. Drop it. Signed-off-by: Christoph Lameter Acked-by: Hugh Dickins Signed-off-by: Andrew Morton --- arch/arm/kernel/bios32.c | 1 - arch/cris/arch-v32/drivers/pci/bios.c | 2 -- arch/i386/pci/i386.c | 2 -- arch/ia64/pci/pci.c | 3 --- arch/powerpc/kernel/pci_32.c | 1 - arch/powerpc/kernel/pci_64.c | 1 - arch/powerpc/kernel/proc_ppc64.c | 2 -- arch/ppc/kernel/pci.c | 1 - arch/xtensa/kernel/pci.c | 12 ------------ drivers/char/mmtimer.c | 1 - drivers/sbus/char/flash.c | 1 - drivers/sbus/char/vfc_dev.c | 2 +- drivers/video/igafb.c | 3 --- include/linux/mm.h | 1 - 14 files changed, 1 insertion(+), 32 deletions(-) diff -puN arch/arm/kernel/bios32.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm arch/arm/kernel/bios32.c --- 25/arch/arm/kernel/bios32.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/arch/arm/kernel/bios32.c Wed May 24 14:14:14 2006 @@ -702,7 +702,6 @@ int pci_mmap_page_range(struct pci_dev * /* * Mark this as IO */ - vma->vm_flags |= VM_SHM | VM_LOCKED | VM_IO; vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); if (remap_pfn_range(vma, vma->vm_start, phys, diff -puN arch/cris/arch-v32/drivers/pci/bios.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm arch/cris/arch-v32/drivers/pci/bios.c --- 25/arch/cris/arch-v32/drivers/pci/bios.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/arch/cris/arch-v32/drivers/pci/bios.c Wed May 24 14:14:14 2006 @@ -27,8 +27,6 @@ int pci_mmap_page_range(struct pci_dev * /* Leave vm_pgoff as-is, the PCI space address is the physical * address on this platform. */ - vma->vm_flags |= (VM_SHM | VM_LOCKED | VM_IO); - prot = pgprot_val(vma->vm_page_prot); vma->vm_page_prot = __pgprot(prot); diff -puN arch/i386/pci/i386.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm arch/i386/pci/i386.c --- 25/arch/i386/pci/i386.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/arch/i386/pci/i386.c Wed May 24 14:14:14 2006 @@ -276,8 +276,6 @@ int pci_mmap_page_range(struct pci_dev * /* Leave vm_pgoff as-is, the PCI space address is the physical * address on this platform. */ - vma->vm_flags |= (VM_SHM | VM_LOCKED | VM_IO); - prot = pgprot_val(vma->vm_page_prot); if (boot_cpu_data.x86 > 3) prot |= _PAGE_PCD | _PAGE_PWT; diff -puN arch/ia64/pci/pci.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm arch/ia64/pci/pci.c --- 25/arch/ia64/pci/pci.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/arch/ia64/pci/pci.c Wed May 24 14:14:14 2006 @@ -602,8 +602,6 @@ pci_mmap_page_range (struct pci_dev *dev * Leave vm_pgoff as-is, the PCI space address is the physical * address on this platform. */ - vma->vm_flags |= (VM_SHM | VM_RESERVED | VM_IO); - if (write_combine && efi_range_is_wc(vma->vm_start, vma->vm_end - vma->vm_start)) vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot); @@ -666,7 +664,6 @@ pci_mmap_legacy_page_range(struct pci_bu vma->vm_pgoff += (unsigned long)addr >> PAGE_SHIFT; vma->vm_page_prot = prot; - vma->vm_flags |= (VM_SHM | VM_RESERVED | VM_IO); if (remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, size, vma->vm_page_prot)) diff -puN arch/powerpc/kernel/pci_32.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm arch/powerpc/kernel/pci_32.c --- 25/arch/powerpc/kernel/pci_32.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/arch/powerpc/kernel/pci_32.c Wed May 24 14:14:14 2006 @@ -1654,7 +1654,6 @@ int pci_mmap_page_range(struct pci_dev * return -EINVAL; vma->vm_pgoff = offset >> PAGE_SHIFT; - vma->vm_flags |= VM_SHM | VM_LOCKED | VM_IO; vma->vm_page_prot = __pci_mmap_set_pgprot(dev, rp, vma->vm_page_prot, mmap_state, write_combine); diff -puN arch/powerpc/kernel/pci_64.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm arch/powerpc/kernel/pci_64.c --- 25/arch/powerpc/kernel/pci_64.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/arch/powerpc/kernel/pci_64.c Wed May 24 14:14:14 2006 @@ -875,7 +875,6 @@ int pci_mmap_page_range(struct pci_dev * return -EINVAL; vma->vm_pgoff = offset >> PAGE_SHIFT; - vma->vm_flags |= VM_SHM | VM_LOCKED | VM_IO; vma->vm_page_prot = __pci_mmap_set_pgprot(dev, rp, vma->vm_page_prot, mmap_state, write_combine); diff -puN arch/powerpc/kernel/proc_ppc64.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm arch/powerpc/kernel/proc_ppc64.c --- 25/arch/powerpc/kernel/proc_ppc64.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/arch/powerpc/kernel/proc_ppc64.c Wed May 24 14:14:14 2006 @@ -115,8 +115,6 @@ static int page_map_mmap( struct file *f { struct proc_dir_entry *dp = PDE(file->f_dentry->d_inode); - vma->vm_flags |= VM_SHM | VM_LOCKED; - if ((vma->vm_end - vma->vm_start) > dp->size) return -EINVAL; diff -puN arch/ppc/kernel/pci.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm arch/ppc/kernel/pci.c --- 25/arch/ppc/kernel/pci.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/arch/ppc/kernel/pci.c Wed May 24 14:14:14 2006 @@ -1040,7 +1040,6 @@ int pci_mmap_page_range(struct pci_dev * return -EINVAL; vma->vm_pgoff = offset >> PAGE_SHIFT; - vma->vm_flags |= VM_SHM | VM_LOCKED | VM_IO; vma->vm_page_prot = __pci_mmap_set_pgprot(dev, rp, vma->vm_page_prot, mmap_state, write_combine); diff -puN arch/xtensa/kernel/pci.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm arch/xtensa/kernel/pci.c --- 25/arch/xtensa/kernel/pci.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/arch/xtensa/kernel/pci.c Wed May 24 14:14:14 2006 @@ -350,17 +350,6 @@ __pci_mmap_make_offset(struct pci_dev *d } /* - * Set vm_flags of VMA, as appropriate for this architecture, for a pci device - * mapping. - */ -static __inline__ void -__pci_mmap_set_flags(struct pci_dev *dev, struct vm_area_struct *vma, - enum pci_mmap_state mmap_state) -{ - vma->vm_flags |= VM_SHM | VM_LOCKED | VM_IO; -} - -/* * Set vm_page_prot of VMA, as appropriate for this architecture, for a pci * device mapping. */ @@ -399,7 +388,6 @@ int pci_mmap_page_range(struct pci_dev * if (ret < 0) return ret; - __pci_mmap_set_flags(dev, vma, mmap_state); __pci_mmap_set_pgprot(dev, vma, mmap_state, write_combine); ret = io_remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, diff -puN drivers/char/mmtimer.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm drivers/char/mmtimer.c --- 25/drivers/char/mmtimer.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/drivers/char/mmtimer.c Wed May 24 14:14:14 2006 @@ -329,7 +329,6 @@ static int mmtimer_mmap(struct file *fil if (PAGE_SIZE > (1 << 16)) return -ENOSYS; - vma->vm_flags |= (VM_IO | VM_SHM | VM_LOCKED ); vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); mmtimer_addr = __pa(RTC_COUNTER_ADDR); diff -puN drivers/sbus/char/flash.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm drivers/sbus/char/flash.c --- 25/drivers/sbus/char/flash.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/drivers/sbus/char/flash.c Wed May 24 14:14:14 2006 @@ -71,7 +71,6 @@ flash_mmap(struct file *file, struct vm_ 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)); - vma->vm_flags |= (VM_SHM | VM_LOCKED); vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); if (io_remap_pfn_range(vma, vma->vm_start, addr, size, vma->vm_page_prot)) diff -puN drivers/sbus/char/vfc_dev.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm drivers/sbus/char/vfc_dev.c --- 25/drivers/sbus/char/vfc_dev.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/drivers/sbus/char/vfc_dev.c Wed May 24 14:14:14 2006 @@ -623,7 +623,7 @@ static int vfc_mmap(struct file *file, s map_size = sizeof(struct vfc_regs); vma->vm_flags |= - (VM_SHM | VM_LOCKED | VM_IO | VM_MAYREAD | VM_MAYWRITE | VM_MAYSHARE); + (VM_MAYREAD | VM_MAYWRITE | VM_MAYSHARE); map_offset = (unsigned int) (long)dev->phys_regs; ret = io_remap_pfn_range(vma, vma->vm_start, MK_IOSPACE_PFN(dev->which_io, diff -puN drivers/video/igafb.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm drivers/video/igafb.c --- 25/drivers/video/igafb.c~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/drivers/video/igafb.c Wed May 24 14:14:14 2006 @@ -232,9 +232,6 @@ static int igafb_mmap(struct fb_info *in size = vma->vm_end - vma->vm_start; - /* To stop the swapper from even considering these pages. */ - vma->vm_flags |= (VM_SHM | VM_LOCKED); - /* Each page, see which map applies */ for (page = 0; page < size; ) { map_size = 0; diff -puN include/linux/mm.h~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm include/linux/mm.h --- 25/include/linux/mm.h~mm-remove-vm_locked-before-remap_pfn_range-and-drop-vm_shm Wed May 24 14:14:14 2006 +++ 25-akpm/include/linux/mm.h Wed May 24 14:14:14 2006 @@ -145,7 +145,6 @@ extern unsigned int kobjsize(const void #define VM_GROWSDOWN 0x00000100 /* general info on the segment */ #define VM_GROWSUP 0x00000200 -#define VM_SHM 0x00000000 /* Means nothing: delete it later */ #define VM_PFNMAP 0x00000400 /* Page-ranges managed without "struct page", just pure PFN */ #define VM_DENYWRITE 0x00000800 /* ETXTBSY on write attempts.. */ _