History

Revert "drm/gem: Warn on illegal use of the dumb buffer interface v2"

This reverts commit 355a70183848f21198e9f6296bd646df3478a26d. This had some bad side effects under normal operation, and should have been dropped earlier.

Dave Airlie committed 11 years ago

Commit da6b51d1 parent 0d83b729 files · +12 −74Browse files

Unified · Split

9 files
  1. drivers/gpu/drm/i915/i915_drv.c +1 −1
  2. drivers/gpu/drm/i915/i915_drv.h +2 −3
  3. drivers/gpu/drm/i915/i915_gem.c +5 −23
  4. drivers/gpu/drm/i915/i915_gem_execbuffer.c +0 −3
  5. drivers/gpu/drm/nouveau/nouveau_display.c +0 −9
  6. drivers/gpu/drm/nouveau/nouveau_gem.c +0 −3
  7. drivers/gpu/drm/radeon/radeon_gem.c +4 −22
  8. drivers/gpu/drm/radeon/radeon_object.c +0 −3
  9. include/drm/drm_gem.h +0 −7
drivers/gpu/drm/i915/i915_drv.c+1−1
@@ -1586,7 +1586,7 @@ static struct drm_driver driver = { · 1585 unmodified lines
15861586 .gem_prime_import = i915_gem_prime_import,
15871587
15881588 .dumb_create = i915_gem_dumb_create,
1589− .dumb_map_offset = i915_gem_dumb_map_offset,
1589+ .dumb_map_offset = i915_gem_mmap_gtt,
15901590 .dumb_destroy = drm_gem_dumb_destroy,
15911591 .ioctls = i915_ioctls,
15921592 .fops = &i915_driver_fops,
drivers/gpu/drm/i915/i915_drv.h+2−3
@@ -2501,9 +2501,8 @@ void i915_vma_move_to_active(struct i915_vma *vma, · 2500 unmodified lines
25012501 int i915_gem_dumb_create(struct drm_file *file_priv,
25022502 struct drm_device *dev,
25032503 struct drm_mode_create_dumb *args);
2504−int i915_gem_dumb_map_offset(struct drm_file *file_priv,
2505− struct drm_device *dev, uint32_t handle,
2506− uint64_t *offset);
2504+int i915_gem_mmap_gtt(struct drm_file *file_priv, struct drm_device *dev,
2505+ uint32_t handle, uint64_t *offset);
25072506 /**
25082507 * Returns true if seq1 is later than seq2.
25092508 */
drivers/gpu/drm/i915/i915_gem.c+5−23
@@ -401,7 +401,6 @@ static int · 400 unmodified lines
401401 i915_gem_create(struct drm_file *file,
402402 struct drm_device *dev,
403403 uint64_t size,
404− bool dumb,
405404 uint32_t *handle_p)
406405 {
407406 struct drm_i915_gem_object *obj;
@@ -417,7 +416,6 @@ i915_gem_create(struct drm_file *file, · 9 unmodified lines
417416 if (obj == NULL)
418417 return -ENOMEM;
419418
420− obj->base.dumb = dumb;
421419 ret = drm_gem_handle_create(file, &obj->base, &handle);
422420 /* drop reference from allocate - handle holds it now */
423421 drm_gem_object_unreference_unlocked(&obj->base);
@@ -437,7 +435,7 @@ i915_gem_dumb_create(struct drm_file *file, · 13 unmodified lines
437435 args->pitch = ALIGN(args->width * DIV_ROUND_UP(args->bpp, 8), 64);
438436 args->size = args->pitch * args->height;
439437 return i915_gem_create(file, dev,
440− args->size, true, &args->handle);
438+ args->size, &args->handle);
441439 }
442440
443441 /**
@@ -450,7 +448,7 @@ i915_gem_create_ioctl(struct drm_device *dev, void *data, · 6 unmodified lines
450448 struct drm_i915_gem_create *args = data;
451449
452450 return i915_gem_create(file, dev,
453− args->size, false, &args->handle);
451+ args->size, &args->handle);
454452 }
455453
456454 static inline int
@@ -1840,10 +1838,10 @@ static void i915_gem_object_free_mmap_offset(struct drm_i915_gem_object *obj) · 1383 unmodified lines
18401838 drm_gem_free_mmap_offset(&obj->base);
18411839 }
18421840
1843−static int
1841+int
18441842 i915_gem_mmap_gtt(struct drm_file *file,
18451843 struct drm_device *dev,
1846− uint32_t handle, bool dumb,
1844+ uint32_t handle,
18471845 uint64_t *offset)
18481846 {
18491847 struct drm_i915_private *dev_priv = dev->dev_private;
@@ -1860,13 +1858,6 @@ i915_gem_mmap_gtt(struct drm_file *file, · 10 unmodified lines
18601858 goto unlock;
18611859 }
18621860
1863− /*
1864− * We don't allow dumb mmaps on objects created using another
1865− * interface.
1866− */
1867− WARN_ONCE(dumb && !(obj->base.dumb || obj->base.import_attach),
1868− "Illegal dumb map of accelerated buffer.\n");
1869−
18701861 if (obj->base.size > dev_priv->gtt.mappable_end) {
18711862 ret = -E2BIG;
18721863 goto out;
@@ -1891,15 +1882,6 @@ unlock: · 18 unmodified lines
18911882 return ret;
18921883 }
18931884
1894−int
1895−i915_gem_dumb_map_offset(struct drm_file *file,
1896− struct drm_device *dev,
1897− uint32_t handle,
1898− uint64_t *offset)
1899−{
1900− return i915_gem_mmap_gtt(file, dev, handle, true, offset);
1901−}
1902−
19031885 /**
19041886 * i915_gem_mmap_gtt_ioctl - prepare an object for GTT mmap'ing
19051887 * @dev: DRM device
@@ -1921,7 +1903,7 @@ i915_gem_mmap_gtt_ioctl(struct drm_device *dev, void *data, · 15 unmodified lines
19211903 {
19221904 struct drm_i915_gem_mmap_gtt *args = data;
19231905
1924− return i915_gem_mmap_gtt(file, dev, args->handle, false, &args->offset);
1906+ return i915_gem_mmap_gtt(file, dev, args->handle, &args->offset);
19251907 }
19261908
19271909 static inline int
drivers/gpu/drm/i915/i915_gem_execbuffer.c+0−3
@@ -121,9 +121,6 @@ eb_lookup_vmas(struct eb_vmas *eb, · 120 unmodified lines
121121 goto err;
122122 }
123123
124− WARN_ONCE(obj->base.dumb,
125− "GPU use of dumb buffer is illegal.\n");
126−
127124 drm_gem_object_reference(&obj->base);
128125 list_add_tail(&obj->obj_exec_link, &objects);
129126 }
drivers/gpu/drm/nouveau/nouveau_display.c+0−9
@@ -876,7 +876,6 @@ nouveau_display_dumb_create(struct drm_file *file_priv, struct drm_device *dev, · 875 unmodified lines
876876 if (ret)
877877 return ret;
878878
879− bo->gem.dumb = true;
880879 ret = drm_gem_handle_create(file_priv, &bo->gem, &args->handle);
881880 drm_gem_object_unreference_unlocked(&bo->gem);
882881 return ret;
@@ -892,14 +891,6 @@ nouveau_display_dumb_map_offset(struct drm_file *file_priv, · 9 unmodified lines
892891 gem = drm_gem_object_lookup(dev, file_priv, handle);
893892 if (gem) {
894893 struct nouveau_bo *bo = nouveau_gem_object(gem);
895−
896− /*
897− * We don't allow dumb mmaps on objects created using another
898− * interface.
899− */
900− WARN_ONCE(!(gem->dumb || gem->import_attach),
901− "Illegal dumb map of accelerated buffer.\n");
902−
903894 *poffset = drm_vma_node_offset_addr(&bo->bo.vma_node);
904895 drm_gem_object_unreference_unlocked(gem);
905896 return 0;
drivers/gpu/drm/nouveau/nouveau_gem.c+0−3
@@ -444,9 +444,6 @@ validate_list(struct nouveau_channel *chan, struct nouveau_cli *cli, · 443 unmodified lines
444444 list_for_each_entry(nvbo, list, entry) {
445445 struct drm_nouveau_gem_pushbuf_bo *b = &pbbo[nvbo->pbbo_index];
446446
447− WARN_ONCE(nvbo->gem.dumb,
448− "GPU use of dumb buffer is illegal.\n");
449−
450447 ret = nouveau_gem_set_domain(&nvbo->gem, b->read_domains,
451448 b->write_domains,
452449 b->valid_domains);
drivers/gpu/drm/radeon/radeon_gem.c+4−22
@@ -394,10 +394,9 @@ int radeon_gem_set_domain_ioctl(struct drm_device *dev, void *data, · 393 unmodified lines
394394 return r;
395395 }
396396
397−static int radeon_mode_mmap(struct drm_file *filp,
398− struct drm_device *dev,
399− uint32_t handle, bool dumb,
400− uint64_t *offset_p)
397+int radeon_mode_dumb_mmap(struct drm_file *filp,
398+ struct drm_device *dev,
399+ uint32_t handle, uint64_t *offset_p)
401400 {
402401 struct drm_gem_object *gobj;
403402 struct radeon_bo *robj;
@@ -406,14 +405,6 @@ static int radeon_mode_mmap(struct drm_file *filp, · 2 unmodified lines
406405 if (gobj == NULL) {
407406 return -ENOENT;
408407 }
409−
410− /*
411− * We don't allow dumb mmaps on objects created using another
412− * interface.
413− */
414− WARN_ONCE(dumb && !(gobj->dumb || gobj->import_attach),
415− "Illegal dumb map of GPU buffer.\n");
416−
417408 robj = gem_to_radeon_bo(gobj);
418409 if (radeon_ttm_tt_has_userptr(robj->tbo.ttm)) {
419410 drm_gem_object_unreference_unlocked(gobj);
@@ -424,20 +415,12 @@ static int radeon_mode_mmap(struct drm_file *filp, · 4 unmodified lines
424415 return 0;
425416 }
426417
427−int radeon_mode_dumb_mmap(struct drm_file *filp,
428− struct drm_device *dev,
429− uint32_t handle, uint64_t *offset_p)
430−{
431− return radeon_mode_mmap(filp, dev, handle, true, offset_p);
432−}
433−
434418 int radeon_gem_mmap_ioctl(struct drm_device *dev, void *data,
435419 struct drm_file *filp)
436420 {
437421 struct drm_radeon_gem_mmap *args = data;
438422
439− return radeon_mode_mmap(filp, dev, args->handle, false,
440− &args->addr_ptr);
423+ return radeon_mode_dumb_mmap(filp, dev, args->handle, &args->addr_ptr);
441424 }
442425
443426 int radeon_gem_busy_ioctl(struct drm_device *dev, void *data,
@@ -763,7 +746,6 @@ int radeon_mode_dumb_create(struct drm_file *file_priv, · 319 unmodified lines
763746 return -ENOMEM;
764747
765748 r = drm_gem_handle_create(file_priv, gobj, &handle);
766− gobj->dumb = true;
767749 /* drop reference from allocate - handle holds it now */
768750 drm_gem_object_unreference_unlocked(gobj);
769751 if (r) {
drivers/gpu/drm/radeon/radeon_object.c+0−3
@@ -529,9 +529,6 @@ int radeon_bo_list_validate(struct radeon_device *rdev, · 528 unmodified lines
529529 u32 current_domain =
530530 radeon_mem_type_to_domain(bo->tbo.mem.mem_type);
531531
532− WARN_ONCE(bo->gem_base.dumb,
533− "GPU use of dumb buffer is illegal.\n");
534−
535532 /* Check if this buffer will be moved and don't move it
536533 * if we have moved too many buffers for this IB already.
537534 *
include/drm/drm_gem.h+0−7
@@ -119,13 +119,6 @@ struct drm_gem_object { · 118 unmodified lines
119119 * simply leave it as NULL.
120120 */
121121 struct dma_buf_attachment *import_attach;
122−
123− /**
124− * dumb - created as dumb buffer
125− * Whether the gem object was created using the dumb buffer interface
126− * as such it may not be used for GPU rendering.
127− */
128− bool dumb;
129122 };
130123
131124 void drm_gem_object_release(struct drm_gem_object *obj);