diff options
author | Konstantin Khlebnikov <khlebnikov@openvz.org> | 2012-10-08 19:29:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-09 03:22:19 -0400 |
commit | 314e51b9851b4f4e8ab302243ff5a6fc6147f379 (patch) | |
tree | f757b89206355fd129830782566768693eed23ce /drivers/gpu | |
parent | 0103bd16fb90bc741c7a03fd1ea4e8a505abad23 (diff) |
mm: kill vma flag VM_RESERVED and mm->reserved_vm counter
A long time ago, in v2.4, VM_RESERVED kept swapout process off VMA,
currently it lost original meaning but still has some effects:
| effect | alternative flags
-+------------------------+---------------------------------------------
1| account as reserved_vm | VM_IO
2| skip in core dump | VM_IO, VM_DONTDUMP
3| do not merge or expand | VM_IO, VM_DONTEXPAND, VM_HUGETLB, VM_PFNMAP
4| do not mlock | VM_IO, VM_DONTEXPAND, VM_HUGETLB, VM_PFNMAP
This patch removes reserved_vm counter from mm_struct. Seems like nobody
cares about it, it does not exported into userspace directly, it only
reduces total_vm showed in proc.
Thus VM_RESERVED can be replaced with VM_IO or pair VM_DONTEXPAND | VM_DONTDUMP.
remap_pfn_range() and io_remap_pfn_range() set VM_IO|VM_DONTEXPAND|VM_DONTDUMP.
remap_vmalloc_range() set VM_DONTEXPAND | VM_DONTDUMP.
[akpm@linux-foundation.org: drivers/vfio/pci/vfio_pci.c fixup]
Signed-off-by: Konstantin Khlebnikov <khlebnikov@openvz.org>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Carsten Otte <cotte@de.ibm.com>
Cc: Chris Metcalf <cmetcalf@tilera.com>
Cc: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: Eric Paris <eparis@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Morris <james.l.morris@oracle.com>
Cc: Jason Baron <jbaron@redhat.com>
Cc: Kentaro Takeda <takedakn@nttdata.co.jp>
Cc: Matt Helsley <matthltc@us.ibm.com>
Cc: Nick Piggin <npiggin@kernel.dk>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: Venkatesh Pallipadi <venki@google.com>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/drm_gem.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/drm_vm.c | 10 | ||||
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_gem.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/gma500/framebuffer.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/ttm/ttm_bo_vm.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/udl/udl_fb.c | 2 |
6 files changed, 8 insertions, 15 deletions
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 92177d5aedee..24efae464e2c 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c | |||
@@ -706,7 +706,7 @@ int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma) | |||
706 | goto out_unlock; | 706 | goto out_unlock; |
707 | } | 707 | } |
708 | 708 | ||
709 | vma->vm_flags |= VM_RESERVED | VM_IO | VM_PFNMAP | VM_DONTEXPAND; | 709 | vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP; |
710 | vma->vm_ops = obj->dev->driver->gem_vm_ops; | 710 | vma->vm_ops = obj->dev->driver->gem_vm_ops; |
711 | vma->vm_private_data = map->handle; | 711 | vma->vm_private_data = map->handle; |
712 | vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags)); | 712 | vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags)); |
diff --git a/drivers/gpu/drm/drm_vm.c b/drivers/gpu/drm/drm_vm.c index 23a824e6a22a..db7bd292410b 100644 --- a/drivers/gpu/drm/drm_vm.c +++ b/drivers/gpu/drm/drm_vm.c | |||
@@ -514,8 +514,7 @@ static int drm_mmap_dma(struct file *filp, struct vm_area_struct *vma) | |||
514 | 514 | ||
515 | vma->vm_ops = &drm_vm_dma_ops; | 515 | vma->vm_ops = &drm_vm_dma_ops; |
516 | 516 | ||
517 | vma->vm_flags |= VM_RESERVED; /* Don't swap */ | 517 | vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; |
518 | vma->vm_flags |= VM_DONTEXPAND; | ||
519 | 518 | ||
520 | drm_vm_open_locked(dev, vma); | 519 | drm_vm_open_locked(dev, vma); |
521 | return 0; | 520 | return 0; |
@@ -643,21 +642,16 @@ int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma) | |||
643 | case _DRM_SHM: | 642 | case _DRM_SHM: |
644 | vma->vm_ops = &drm_vm_shm_ops; | 643 | vma->vm_ops = &drm_vm_shm_ops; |
645 | vma->vm_private_data = (void *)map; | 644 | vma->vm_private_data = (void *)map; |
646 | /* Don't let this area swap. Change when | ||
647 | DRM_KERNEL advisory is supported. */ | ||
648 | vma->vm_flags |= VM_RESERVED; | ||
649 | break; | 645 | break; |
650 | case _DRM_SCATTER_GATHER: | 646 | case _DRM_SCATTER_GATHER: |
651 | vma->vm_ops = &drm_vm_sg_ops; | 647 | vma->vm_ops = &drm_vm_sg_ops; |
652 | vma->vm_private_data = (void *)map; | 648 | vma->vm_private_data = (void *)map; |
653 | vma->vm_flags |= VM_RESERVED; | ||
654 | vma->vm_page_prot = drm_dma_prot(map->type, vma); | 649 | vma->vm_page_prot = drm_dma_prot(map->type, vma); |
655 | break; | 650 | break; |
656 | default: | 651 | default: |
657 | return -EINVAL; /* This should never happen. */ | 652 | return -EINVAL; /* This should never happen. */ |
658 | } | 653 | } |
659 | vma->vm_flags |= VM_RESERVED; /* Don't swap */ | 654 | vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; |
660 | vma->vm_flags |= VM_DONTEXPAND; | ||
661 | 655 | ||
662 | drm_vm_open_locked(dev, vma); | 656 | drm_vm_open_locked(dev, vma); |
663 | return 0; | 657 | return 0; |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c index fcdbe46914f7..d2545560664f 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c | |||
@@ -500,7 +500,7 @@ static int exynos_drm_gem_mmap_buffer(struct file *filp, | |||
500 | 500 | ||
501 | DRM_DEBUG_KMS("%s\n", __FILE__); | 501 | DRM_DEBUG_KMS("%s\n", __FILE__); |
502 | 502 | ||
503 | vma->vm_flags |= (VM_IO | VM_RESERVED); | 503 | vma->vm_flags |= VM_IO | VM_DONTEXPAND | VM_DONTDUMP; |
504 | 504 | ||
505 | update_vm_cache_attr(exynos_gem_obj, vma); | 505 | update_vm_cache_attr(exynos_gem_obj, vma); |
506 | 506 | ||
diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c index 884ba73ac6ce..afded54dbb10 100644 --- a/drivers/gpu/drm/gma500/framebuffer.c +++ b/drivers/gpu/drm/gma500/framebuffer.c | |||
@@ -178,8 +178,7 @@ static int psbfb_mmap(struct fb_info *info, struct vm_area_struct *vma) | |||
178 | */ | 178 | */ |
179 | vma->vm_ops = &psbfb_vm_ops; | 179 | vma->vm_ops = &psbfb_vm_ops; |
180 | vma->vm_private_data = (void *)psbfb; | 180 | vma->vm_private_data = (void *)psbfb; |
181 | vma->vm_flags |= VM_RESERVED | VM_IO | | 181 | vma->vm_flags |= VM_IO | VM_MIXEDMAP | VM_DONTEXPAND | VM_DONTDUMP; |
182 | VM_MIXEDMAP | VM_DONTEXPAND; | ||
183 | return 0; | 182 | return 0; |
184 | } | 183 | } |
185 | 184 | ||
diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c index a877813571a4..3ba72dbdc4bd 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c | |||
@@ -285,7 +285,7 @@ int ttm_bo_mmap(struct file *filp, struct vm_area_struct *vma, | |||
285 | */ | 285 | */ |
286 | 286 | ||
287 | vma->vm_private_data = bo; | 287 | vma->vm_private_data = bo; |
288 | vma->vm_flags |= VM_RESERVED | VM_IO | VM_MIXEDMAP | VM_DONTEXPAND; | 288 | vma->vm_flags |= VM_IO | VM_MIXEDMAP | VM_DONTEXPAND | VM_DONTDUMP; |
289 | return 0; | 289 | return 0; |
290 | out_unref: | 290 | out_unref: |
291 | ttm_bo_unref(&bo); | 291 | ttm_bo_unref(&bo); |
@@ -300,7 +300,7 @@ int ttm_fbdev_mmap(struct vm_area_struct *vma, struct ttm_buffer_object *bo) | |||
300 | 300 | ||
301 | vma->vm_ops = &ttm_bo_vm_ops; | 301 | vma->vm_ops = &ttm_bo_vm_ops; |
302 | vma->vm_private_data = ttm_bo_reference(bo); | 302 | vma->vm_private_data = ttm_bo_reference(bo); |
303 | vma->vm_flags |= VM_RESERVED | VM_IO | VM_MIXEDMAP | VM_DONTEXPAND; | 303 | vma->vm_flags |= VM_IO | VM_MIXEDMAP | VM_DONTEXPAND; |
304 | return 0; | 304 | return 0; |
305 | } | 305 | } |
306 | EXPORT_SYMBOL(ttm_fbdev_mmap); | 306 | EXPORT_SYMBOL(ttm_fbdev_mmap); |
diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c index 67df842fbb33..69a2b16f42a6 100644 --- a/drivers/gpu/drm/udl/udl_fb.c +++ b/drivers/gpu/drm/udl/udl_fb.c | |||
@@ -243,7 +243,7 @@ static int udl_fb_mmap(struct fb_info *info, struct vm_area_struct *vma) | |||
243 | size = 0; | 243 | size = 0; |
244 | } | 244 | } |
245 | 245 | ||
246 | vma->vm_flags |= VM_RESERVED; /* avoid to swap out this VMA */ | 246 | /* VM_IO | VM_DONTEXPAND | VM_DONTDUMP are set by remap_pfn_range() */ |
247 | return 0; | 247 | return 0; |
248 | } | 248 | } |
249 | 249 | ||