aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-02-24 16:13:38 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-03-23 06:04:35 -0400
commita14917eeb2cc160d13f4fddefe5f7f9c80953ce1 (patch)
treefe2f0143ce8fb145cb22cbece58df348c5f6d095 /drivers/gpu/drm
parent121d527a323f3fde313a8f522060ba859ee405b3 (diff)
drm/i915: Release the mmap offset when purging a buffer
If we discard a buffer due to memory pressure, also release its alloted mmap address space. As it may be sometime before userspace wakes up and notices that it has buffers to purge from its cache, we may waste valuable address space on unusable objects for a period of time. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47738 Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 6b1859799e6c..0a16366efaac 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1546,6 +1546,9 @@ i915_gem_object_truncate(struct drm_i915_gem_object *obj)
1546 inode = obj->base.filp->f_path.dentry->d_inode; 1546 inode = obj->base.filp->f_path.dentry->d_inode;
1547 shmem_truncate_range(inode, 0, (loff_t)-1); 1547 shmem_truncate_range(inode, 0, (loff_t)-1);
1548 1548
1549 if (obj->base.map_list.map)
1550 drm_gem_free_mmap_offset(&obj->base);
1551
1549 obj->madv = __I915_MADV_PURGED; 1552 obj->madv = __I915_MADV_PURGED;
1550} 1553}
1551 1554