summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_gem.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-02-24 21:13:38 +0000
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-03-23 11:04:35 +0100
commita14917eeb2cc160d13f4fddefe5f7f9c80953ce1 (patch)
treefe2f0143ce8fb145cb22cbece58df348c5f6d095 /drivers/gpu/drm/i915/i915_gem.c
parent121d527a323f3fde313a8f522060ba859ee405b3 (diff)
downloadop-kernel-dev-a14917eeb2cc160d13f4fddefe5f7f9c80953ce1.zip
op-kernel-dev-a14917eeb2cc160d13f4fddefe5f7f9c80953ce1.tar.gz
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/i915/i915_gem.c')
-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 6b18597..0a16366 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)
inode = obj->base.filp->f_path.dentry->d_inode;
shmem_truncate_range(inode, 0, (loff_t)-1);
+ if (obj->base.map_list.map)
+ drm_gem_free_mmap_offset(&obj->base);
+
obj->madv = __I915_MADV_PURGED;
}
OpenPOWER on IntegriCloud