aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/vgem/vgem_drv.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2016-03-30 05:40:50 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2016-04-20 06:58:40 -0400
commit7f340a26f4769a49fb51bfc023ca651dfe16042e (patch)
tree0868427c45f430f785e44c430e5d91bbe532c073 /drivers/gpu/drm/vgem/vgem_drv.c
parente34274fd2aa84fb4b609e26af18507449e8feaca (diff)
drm/vgem: Move get_pages to gem_create
vgem doesn't have a shrinker or anything like that and drops backing storage only at object_free time. There's no use in trying to be clever and allocating backing storage delayed, it only causes trouble by requiring locking. Instead grab pages when we allocate the object right away. v2: Fix compiling. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1459330852-27668-12-git-send-email-daniel.vetter@ffwll.ch
Diffstat (limited to 'drivers/gpu/drm/vgem/vgem_drv.c')
-rw-r--r--drivers/gpu/drm/vgem/vgem_drv.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index f3ee1c41da1e..75f18987411a 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -154,6 +154,10 @@ static struct drm_gem_object *vgem_gem_create(struct drm_device *dev,
154 if (err) 154 if (err)
155 goto out; 155 goto out;
156 156
157 err = vgem_gem_get_pages(obj);
158 if (err)
159 goto out;
160
157 err = drm_gem_handle_create(file, gem_object, handle); 161 err = drm_gem_handle_create(file, gem_object, handle);
158 if (err) 162 if (err)
159 goto handle_out; 163 goto handle_out;
@@ -216,16 +220,8 @@ int vgem_gem_dumb_map(struct drm_file *file, struct drm_device *dev,
216 220
217 obj->filp->private_data = obj; 221 obj->filp->private_data = obj;
218 222
219 ret = vgem_gem_get_pages(to_vgem_bo(obj));
220 if (ret)
221 goto fail_get_pages;
222
223 *offset = drm_vma_node_offset_addr(&obj->vma_node); 223 *offset = drm_vma_node_offset_addr(&obj->vma_node);
224 224
225 goto unref;
226
227fail_get_pages:
228 drm_gem_free_mmap_offset(obj);
229unref: 225unref:
230 drm_gem_object_unreference(obj); 226 drm_gem_object_unreference(obj);
231unlock: 227unlock: