diff options
-rw-r--r-- | drivers/gpu/drm/drm_gem.c | 20 | ||||
-rw-r--r-- | drivers/gpu/drm/gma500/framebuffer.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/gma500/gem.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_dmabuf.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_stolen.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_gem.c | 3 | ||||
-rw-r--r-- | include/drm/drmP.h | 4 |
7 files changed, 20 insertions, 31 deletions
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 603f256152ef..1ad9e7ec0119 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c | |||
@@ -132,16 +132,14 @@ drm_gem_destroy(struct drm_device *dev) | |||
132 | int drm_gem_object_init(struct drm_device *dev, | 132 | int drm_gem_object_init(struct drm_device *dev, |
133 | struct drm_gem_object *obj, size_t size) | 133 | struct drm_gem_object *obj, size_t size) |
134 | { | 134 | { |
135 | BUG_ON((size & (PAGE_SIZE - 1)) != 0); | 135 | struct file *filp; |
136 | 136 | ||
137 | obj->dev = dev; | 137 | filp = shmem_file_setup("drm mm object", size, VM_NORESERVE); |
138 | obj->filp = shmem_file_setup("drm mm object", size, VM_NORESERVE); | 138 | if (IS_ERR(filp)) |
139 | if (IS_ERR(obj->filp)) | 139 | return PTR_ERR(filp); |
140 | return PTR_ERR(obj->filp); | ||
141 | 140 | ||
142 | kref_init(&obj->refcount); | 141 | drm_gem_private_object_init(dev, obj, size); |
143 | atomic_set(&obj->handle_count, 0); | 142 | obj->filp = filp; |
144 | obj->size = size; | ||
145 | 143 | ||
146 | return 0; | 144 | return 0; |
147 | } | 145 | } |
@@ -152,8 +150,8 @@ EXPORT_SYMBOL(drm_gem_object_init); | |||
152 | * no GEM provided backing store. Instead the caller is responsible for | 150 | * no GEM provided backing store. Instead the caller is responsible for |
153 | * backing the object and handling it. | 151 | * backing the object and handling it. |
154 | */ | 152 | */ |
155 | int drm_gem_private_object_init(struct drm_device *dev, | 153 | void drm_gem_private_object_init(struct drm_device *dev, |
156 | struct drm_gem_object *obj, size_t size) | 154 | struct drm_gem_object *obj, size_t size) |
157 | { | 155 | { |
158 | BUG_ON((size & (PAGE_SIZE - 1)) != 0); | 156 | BUG_ON((size & (PAGE_SIZE - 1)) != 0); |
159 | 157 | ||
@@ -163,8 +161,6 @@ int drm_gem_private_object_init(struct drm_device *dev, | |||
163 | kref_init(&obj->refcount); | 161 | kref_init(&obj->refcount); |
164 | atomic_set(&obj->handle_count, 0); | 162 | atomic_set(&obj->handle_count, 0); |
165 | obj->size = size; | 163 | obj->size = size; |
166 | |||
167 | return 0; | ||
168 | } | 164 | } |
169 | EXPORT_SYMBOL(drm_gem_private_object_init); | 165 | EXPORT_SYMBOL(drm_gem_private_object_init); |
170 | 166 | ||
diff --git a/drivers/gpu/drm/gma500/framebuffer.c b/drivers/gpu/drm/gma500/framebuffer.c index 8b1b6d923abe..362dd2ad286f 100644 --- a/drivers/gpu/drm/gma500/framebuffer.c +++ b/drivers/gpu/drm/gma500/framebuffer.c | |||
@@ -321,10 +321,8 @@ static struct gtt_range *psbfb_alloc(struct drm_device *dev, int aligned_size) | |||
321 | /* Begin by trying to use stolen memory backing */ | 321 | /* Begin by trying to use stolen memory backing */ |
322 | backing = psb_gtt_alloc_range(dev, aligned_size, "fb", 1); | 322 | backing = psb_gtt_alloc_range(dev, aligned_size, "fb", 1); |
323 | if (backing) { | 323 | if (backing) { |
324 | if (drm_gem_private_object_init(dev, | 324 | drm_gem_private_object_init(dev, &backing->gem, aligned_size); |
325 | &backing->gem, aligned_size) == 0) | 325 | return backing; |
326 | return backing; | ||
327 | psb_gtt_free_range(dev, backing); | ||
328 | } | 326 | } |
329 | return NULL; | 327 | return NULL; |
330 | } | 328 | } |
diff --git a/drivers/gpu/drm/gma500/gem.c b/drivers/gpu/drm/gma500/gem.c index eefd6cc5b80d..fe1d3320ce6a 100644 --- a/drivers/gpu/drm/gma500/gem.c +++ b/drivers/gpu/drm/gma500/gem.c | |||
@@ -261,11 +261,12 @@ static int psb_gem_create_stolen(struct drm_file *file, struct drm_device *dev, | |||
261 | struct gtt_range *gtt = psb_gtt_alloc_range(dev, size, "gem", 1); | 261 | struct gtt_range *gtt = psb_gtt_alloc_range(dev, size, "gem", 1); |
262 | if (gtt == NULL) | 262 | if (gtt == NULL) |
263 | return -ENOMEM; | 263 | return -ENOMEM; |
264 | if (drm_gem_private_object_init(dev, >t->gem, size) != 0) | 264 | |
265 | goto free_gtt; | 265 | drm_gem_private_object_init(dev, >t->gem, size); |
266 | if (drm_gem_handle_create(file, >t->gem, handle) == 0) | 266 | if (drm_gem_handle_create(file, >t->gem, handle) == 0) |
267 | return 0; | 267 | return 0; |
268 | free_gtt: | 268 | |
269 | drm_gem_object_release(>t->gem); | ||
269 | psb_gtt_free_range(dev, gtt); | 270 | psb_gtt_free_range(dev, gtt); |
270 | return -ENOMEM; | 271 | return -ENOMEM; |
271 | } | 272 | } |
diff --git a/drivers/gpu/drm/i915/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/i915_gem_dmabuf.c index dc53a527126b..f2e185c9038f 100644 --- a/drivers/gpu/drm/i915/i915_gem_dmabuf.c +++ b/drivers/gpu/drm/i915/i915_gem_dmabuf.c | |||
@@ -289,12 +289,7 @@ struct drm_gem_object *i915_gem_prime_import(struct drm_device *dev, | |||
289 | goto fail_detach; | 289 | goto fail_detach; |
290 | } | 290 | } |
291 | 291 | ||
292 | ret = drm_gem_private_object_init(dev, &obj->base, dma_buf->size); | 292 | drm_gem_private_object_init(dev, &obj->base, dma_buf->size); |
293 | if (ret) { | ||
294 | i915_gem_object_free(obj); | ||
295 | goto fail_detach; | ||
296 | } | ||
297 | |||
298 | i915_gem_object_init(obj, &i915_gem_object_dmabuf_ops); | 293 | i915_gem_object_init(obj, &i915_gem_object_dmabuf_ops); |
299 | obj->base.import_attach = attach; | 294 | obj->base.import_attach = attach; |
300 | 295 | ||
diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c index 5c1a535d5072..55218332e625 100644 --- a/drivers/gpu/drm/i915/i915_gem_stolen.c +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c | |||
@@ -291,9 +291,7 @@ _i915_gem_object_create_stolen(struct drm_device *dev, | |||
291 | if (obj == NULL) | 291 | if (obj == NULL) |
292 | return NULL; | 292 | return NULL; |
293 | 293 | ||
294 | if (drm_gem_private_object_init(dev, &obj->base, stolen->size)) | 294 | drm_gem_private_object_init(dev, &obj->base, stolen->size); |
295 | goto cleanup; | ||
296 | |||
297 | i915_gem_object_init(obj, &i915_gem_object_stolen_ops); | 295 | i915_gem_object_init(obj, &i915_gem_object_stolen_ops); |
298 | 296 | ||
299 | obj->pages = i915_pages_create_for_stolen(dev, | 297 | obj->pages = i915_pages_create_for_stolen(dev, |
diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c b/drivers/gpu/drm/omapdrm/omap_gem.c index ebbdf4132e9c..cbcd71e6ed83 100644 --- a/drivers/gpu/drm/omapdrm/omap_gem.c +++ b/drivers/gpu/drm/omapdrm/omap_gem.c | |||
@@ -1427,8 +1427,9 @@ struct drm_gem_object *omap_gem_new(struct drm_device *dev, | |||
1427 | omap_obj->height = gsize.tiled.height; | 1427 | omap_obj->height = gsize.tiled.height; |
1428 | } | 1428 | } |
1429 | 1429 | ||
1430 | ret = 0; | ||
1430 | if (flags & (OMAP_BO_DMA|OMAP_BO_EXT_MEM)) | 1431 | if (flags & (OMAP_BO_DMA|OMAP_BO_EXT_MEM)) |
1431 | ret = drm_gem_private_object_init(dev, obj, size); | 1432 | drm_gem_private_object_init(dev, obj, size); |
1432 | else | 1433 | else |
1433 | ret = drm_gem_object_init(dev, obj, size); | 1434 | ret = drm_gem_object_init(dev, obj, size); |
1434 | 1435 | ||
diff --git a/include/drm/drmP.h b/include/drm/drmP.h index dd03fd4239ad..86f524338e03 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h | |||
@@ -1601,8 +1601,8 @@ struct drm_gem_object *drm_gem_object_alloc(struct drm_device *dev, | |||
1601 | size_t size); | 1601 | size_t size); |
1602 | int drm_gem_object_init(struct drm_device *dev, | 1602 | int drm_gem_object_init(struct drm_device *dev, |
1603 | struct drm_gem_object *obj, size_t size); | 1603 | struct drm_gem_object *obj, size_t size); |
1604 | int drm_gem_private_object_init(struct drm_device *dev, | 1604 | void drm_gem_private_object_init(struct drm_device *dev, |
1605 | struct drm_gem_object *obj, size_t size); | 1605 | struct drm_gem_object *obj, size_t size); |
1606 | void drm_gem_object_handle_free(struct drm_gem_object *obj); | 1606 | void drm_gem_object_handle_free(struct drm_gem_object *obj); |
1607 | void drm_gem_vm_open(struct vm_area_struct *vma); | 1607 | void drm_gem_vm_open(struct vm_area_struct *vma); |
1608 | void drm_gem_vm_close(struct vm_area_struct *vma); | 1608 | void drm_gem_vm_close(struct vm_area_struct *vma); |