diff options
author | Dave Airlie <airlied@redhat.com> | 2014-12-23 22:11:17 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2014-12-23 22:13:22 -0500 |
commit | da6b51d007da17fd394405055e2f0109ec5f05f4 (patch) | |
tree | 8ec667f89310d324e87ca41343fb77aecd212812 /drivers/gpu | |
parent | 0d83b72acdab62e431393926a903255d32dc8dd1 (diff) |
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.
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 28 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_execbuffer.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_display.c | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_gem.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_gem.c | 26 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_object.c | 3 |
8 files changed, 12 insertions, 67 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index fc8cfddbf232..574057cd1d09 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -1586,7 +1586,7 @@ static struct drm_driver driver = { | |||
1586 | .gem_prime_import = i915_gem_prime_import, | 1586 | .gem_prime_import = i915_gem_prime_import, |
1587 | 1587 | ||
1588 | .dumb_create = i915_gem_dumb_create, | 1588 | .dumb_create = i915_gem_dumb_create, |
1589 | .dumb_map_offset = i915_gem_dumb_map_offset, | 1589 | .dumb_map_offset = i915_gem_mmap_gtt, |
1590 | .dumb_destroy = drm_gem_dumb_destroy, | 1590 | .dumb_destroy = drm_gem_dumb_destroy, |
1591 | .ioctls = i915_ioctls, | 1591 | .ioctls = i915_ioctls, |
1592 | .fops = &i915_driver_fops, | 1592 | .fops = &i915_driver_fops, |
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 63bcda5541ec..70d0f0f06f1a 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -2501,9 +2501,8 @@ void i915_vma_move_to_active(struct i915_vma *vma, | |||
2501 | int i915_gem_dumb_create(struct drm_file *file_priv, | 2501 | int i915_gem_dumb_create(struct drm_file *file_priv, |
2502 | struct drm_device *dev, | 2502 | struct drm_device *dev, |
2503 | struct drm_mode_create_dumb *args); | 2503 | struct drm_mode_create_dumb *args); |
2504 | int i915_gem_dumb_map_offset(struct drm_file *file_priv, | 2504 | int i915_gem_mmap_gtt(struct drm_file *file_priv, struct drm_device *dev, |
2505 | struct drm_device *dev, uint32_t handle, | 2505 | uint32_t handle, uint64_t *offset); |
2506 | uint64_t *offset); | ||
2507 | /** | 2506 | /** |
2508 | * Returns true if seq1 is later than seq2. | 2507 | * Returns true if seq1 is later than seq2. |
2509 | */ | 2508 | */ |
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 4a9faea626db..52adcb680be3 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -401,7 +401,6 @@ static int | |||
401 | i915_gem_create(struct drm_file *file, | 401 | i915_gem_create(struct drm_file *file, |
402 | struct drm_device *dev, | 402 | struct drm_device *dev, |
403 | uint64_t size, | 403 | uint64_t size, |
404 | bool dumb, | ||
405 | uint32_t *handle_p) | 404 | uint32_t *handle_p) |
406 | { | 405 | { |
407 | struct drm_i915_gem_object *obj; | 406 | struct drm_i915_gem_object *obj; |
@@ -417,7 +416,6 @@ i915_gem_create(struct drm_file *file, | |||
417 | if (obj == NULL) | 416 | if (obj == NULL) |
418 | return -ENOMEM; | 417 | return -ENOMEM; |
419 | 418 | ||
420 | obj->base.dumb = dumb; | ||
421 | ret = drm_gem_handle_create(file, &obj->base, &handle); | 419 | ret = drm_gem_handle_create(file, &obj->base, &handle); |
422 | /* drop reference from allocate - handle holds it now */ | 420 | /* drop reference from allocate - handle holds it now */ |
423 | drm_gem_object_unreference_unlocked(&obj->base); | 421 | drm_gem_object_unreference_unlocked(&obj->base); |
@@ -437,7 +435,7 @@ i915_gem_dumb_create(struct drm_file *file, | |||
437 | args->pitch = ALIGN(args->width * DIV_ROUND_UP(args->bpp, 8), 64); | 435 | args->pitch = ALIGN(args->width * DIV_ROUND_UP(args->bpp, 8), 64); |
438 | args->size = args->pitch * args->height; | 436 | args->size = args->pitch * args->height; |
439 | return i915_gem_create(file, dev, | 437 | return i915_gem_create(file, dev, |
440 | args->size, true, &args->handle); | 438 | args->size, &args->handle); |
441 | } | 439 | } |
442 | 440 | ||
443 | /** | 441 | /** |
@@ -450,7 +448,7 @@ i915_gem_create_ioctl(struct drm_device *dev, void *data, | |||
450 | struct drm_i915_gem_create *args = data; | 448 | struct drm_i915_gem_create *args = data; |
451 | 449 | ||
452 | return i915_gem_create(file, dev, | 450 | return i915_gem_create(file, dev, |
453 | args->size, false, &args->handle); | 451 | args->size, &args->handle); |
454 | } | 452 | } |
455 | 453 | ||
456 | static inline int | 454 | static inline int |
@@ -1840,10 +1838,10 @@ static void i915_gem_object_free_mmap_offset(struct drm_i915_gem_object *obj) | |||
1840 | drm_gem_free_mmap_offset(&obj->base); | 1838 | drm_gem_free_mmap_offset(&obj->base); |
1841 | } | 1839 | } |
1842 | 1840 | ||
1843 | static int | 1841 | int |
1844 | i915_gem_mmap_gtt(struct drm_file *file, | 1842 | i915_gem_mmap_gtt(struct drm_file *file, |
1845 | struct drm_device *dev, | 1843 | struct drm_device *dev, |
1846 | uint32_t handle, bool dumb, | 1844 | uint32_t handle, |
1847 | uint64_t *offset) | 1845 | uint64_t *offset) |
1848 | { | 1846 | { |
1849 | struct drm_i915_private *dev_priv = dev->dev_private; | 1847 | struct drm_i915_private *dev_priv = dev->dev_private; |
@@ -1860,13 +1858,6 @@ i915_gem_mmap_gtt(struct drm_file *file, | |||
1860 | goto unlock; | 1858 | goto unlock; |
1861 | } | 1859 | } |
1862 | 1860 | ||
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 | |||
1870 | if (obj->base.size > dev_priv->gtt.mappable_end) { | 1861 | if (obj->base.size > dev_priv->gtt.mappable_end) { |
1871 | ret = -E2BIG; | 1862 | ret = -E2BIG; |
1872 | goto out; | 1863 | goto out; |
@@ -1891,15 +1882,6 @@ unlock: | |||
1891 | return ret; | 1882 | return ret; |
1892 | } | 1883 | } |
1893 | 1884 | ||
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 | |||
1903 | /** | 1885 | /** |
1904 | * i915_gem_mmap_gtt_ioctl - prepare an object for GTT mmap'ing | 1886 | * i915_gem_mmap_gtt_ioctl - prepare an object for GTT mmap'ing |
1905 | * @dev: DRM device | 1887 | * @dev: DRM device |
@@ -1921,7 +1903,7 @@ i915_gem_mmap_gtt_ioctl(struct drm_device *dev, void *data, | |||
1921 | { | 1903 | { |
1922 | struct drm_i915_gem_mmap_gtt *args = data; | 1904 | struct drm_i915_gem_mmap_gtt *args = data; |
1923 | 1905 | ||
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); |
1925 | } | 1907 | } |
1926 | 1908 | ||
1927 | static inline int | 1909 | static inline int |
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c index f06027ba3ee5..11738316394a 100644 --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c | |||
@@ -121,9 +121,6 @@ eb_lookup_vmas(struct eb_vmas *eb, | |||
121 | goto err; | 121 | goto err; |
122 | } | 122 | } |
123 | 123 | ||
124 | WARN_ONCE(obj->base.dumb, | ||
125 | "GPU use of dumb buffer is illegal.\n"); | ||
126 | |||
127 | drm_gem_object_reference(&obj->base); | 124 | drm_gem_object_reference(&obj->base); |
128 | list_add_tail(&obj->obj_exec_link, &objects); | 125 | list_add_tail(&obj->obj_exec_link, &objects); |
129 | } | 126 | } |
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c index 5d93902a91ab..f8042433752b 100644 --- a/drivers/gpu/drm/nouveau/nouveau_display.c +++ b/drivers/gpu/drm/nouveau/nouveau_display.c | |||
@@ -876,7 +876,6 @@ nouveau_display_dumb_create(struct drm_file *file_priv, struct drm_device *dev, | |||
876 | if (ret) | 876 | if (ret) |
877 | return ret; | 877 | return ret; |
878 | 878 | ||
879 | bo->gem.dumb = true; | ||
880 | ret = drm_gem_handle_create(file_priv, &bo->gem, &args->handle); | 879 | ret = drm_gem_handle_create(file_priv, &bo->gem, &args->handle); |
881 | drm_gem_object_unreference_unlocked(&bo->gem); | 880 | drm_gem_object_unreference_unlocked(&bo->gem); |
882 | return ret; | 881 | return ret; |
@@ -892,14 +891,6 @@ nouveau_display_dumb_map_offset(struct drm_file *file_priv, | |||
892 | gem = drm_gem_object_lookup(dev, file_priv, handle); | 891 | gem = drm_gem_object_lookup(dev, file_priv, handle); |
893 | if (gem) { | 892 | if (gem) { |
894 | struct nouveau_bo *bo = nouveau_gem_object(gem); | 893 | 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 | |||
903 | *poffset = drm_vma_node_offset_addr(&bo->bo.vma_node); | 894 | *poffset = drm_vma_node_offset_addr(&bo->bo.vma_node); |
904 | drm_gem_object_unreference_unlocked(gem); | 895 | drm_gem_object_unreference_unlocked(gem); |
905 | return 0; | 896 | return 0; |
diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c index 28d51a22a4bf..42c34babc2e5 100644 --- a/drivers/gpu/drm/nouveau/nouveau_gem.c +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c | |||
@@ -444,9 +444,6 @@ validate_list(struct nouveau_channel *chan, struct nouveau_cli *cli, | |||
444 | list_for_each_entry(nvbo, list, entry) { | 444 | list_for_each_entry(nvbo, list, entry) { |
445 | struct drm_nouveau_gem_pushbuf_bo *b = &pbbo[nvbo->pbbo_index]; | 445 | struct drm_nouveau_gem_pushbuf_bo *b = &pbbo[nvbo->pbbo_index]; |
446 | 446 | ||
447 | WARN_ONCE(nvbo->gem.dumb, | ||
448 | "GPU use of dumb buffer is illegal.\n"); | ||
449 | |||
450 | ret = nouveau_gem_set_domain(&nvbo->gem, b->read_domains, | 447 | ret = nouveau_gem_set_domain(&nvbo->gem, b->read_domains, |
451 | b->write_domains, | 448 | b->write_domains, |
452 | b->valid_domains); | 449 | b->valid_domains); |
diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c index fe48f229043e..a46f73737994 100644 --- a/drivers/gpu/drm/radeon/radeon_gem.c +++ b/drivers/gpu/drm/radeon/radeon_gem.c | |||
@@ -394,10 +394,9 @@ int radeon_gem_set_domain_ioctl(struct drm_device *dev, void *data, | |||
394 | return r; | 394 | return r; |
395 | } | 395 | } |
396 | 396 | ||
397 | static int radeon_mode_mmap(struct drm_file *filp, | 397 | int radeon_mode_dumb_mmap(struct drm_file *filp, |
398 | struct drm_device *dev, | 398 | struct drm_device *dev, |
399 | uint32_t handle, bool dumb, | 399 | uint32_t handle, uint64_t *offset_p) |
400 | uint64_t *offset_p) | ||
401 | { | 400 | { |
402 | struct drm_gem_object *gobj; | 401 | struct drm_gem_object *gobj; |
403 | struct radeon_bo *robj; | 402 | struct radeon_bo *robj; |
@@ -406,14 +405,6 @@ static int radeon_mode_mmap(struct drm_file *filp, | |||
406 | if (gobj == NULL) { | 405 | if (gobj == NULL) { |
407 | return -ENOENT; | 406 | return -ENOENT; |
408 | } | 407 | } |
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 | |||
417 | robj = gem_to_radeon_bo(gobj); | 408 | robj = gem_to_radeon_bo(gobj); |
418 | if (radeon_ttm_tt_has_userptr(robj->tbo.ttm)) { | 409 | if (radeon_ttm_tt_has_userptr(robj->tbo.ttm)) { |
419 | drm_gem_object_unreference_unlocked(gobj); | 410 | drm_gem_object_unreference_unlocked(gobj); |
@@ -424,20 +415,12 @@ static int radeon_mode_mmap(struct drm_file *filp, | |||
424 | return 0; | 415 | return 0; |
425 | } | 416 | } |
426 | 417 | ||
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 | |||
434 | int radeon_gem_mmap_ioctl(struct drm_device *dev, void *data, | 418 | int radeon_gem_mmap_ioctl(struct drm_device *dev, void *data, |
435 | struct drm_file *filp) | 419 | struct drm_file *filp) |
436 | { | 420 | { |
437 | struct drm_radeon_gem_mmap *args = data; | 421 | struct drm_radeon_gem_mmap *args = data; |
438 | 422 | ||
439 | return radeon_mode_mmap(filp, dev, args->handle, false, | 423 | return radeon_mode_dumb_mmap(filp, dev, args->handle, &args->addr_ptr); |
440 | &args->addr_ptr); | ||
441 | } | 424 | } |
442 | 425 | ||
443 | int radeon_gem_busy_ioctl(struct drm_device *dev, void *data, | 426 | 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, | |||
763 | return -ENOMEM; | 746 | return -ENOMEM; |
764 | 747 | ||
765 | r = drm_gem_handle_create(file_priv, gobj, &handle); | 748 | r = drm_gem_handle_create(file_priv, gobj, &handle); |
766 | gobj->dumb = true; | ||
767 | /* drop reference from allocate - handle holds it now */ | 749 | /* drop reference from allocate - handle holds it now */ |
768 | drm_gem_object_unreference_unlocked(gobj); | 750 | drm_gem_object_unreference_unlocked(gobj); |
769 | if (r) { | 751 | if (r) { |
diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c index 7d68223eb469..86fc56434b28 100644 --- a/drivers/gpu/drm/radeon/radeon_object.c +++ b/drivers/gpu/drm/radeon/radeon_object.c | |||
@@ -529,9 +529,6 @@ int radeon_bo_list_validate(struct radeon_device *rdev, | |||
529 | u32 current_domain = | 529 | u32 current_domain = |
530 | radeon_mem_type_to_domain(bo->tbo.mem.mem_type); | 530 | radeon_mem_type_to_domain(bo->tbo.mem.mem_type); |
531 | 531 | ||
532 | WARN_ONCE(bo->gem_base.dumb, | ||
533 | "GPU use of dumb buffer is illegal.\n"); | ||
534 | |||
535 | /* Check if this buffer will be moved and don't move it | 532 | /* Check if this buffer will be moved and don't move it |
536 | * if we have moved too many buffers for this IB already. | 533 | * if we have moved too many buffers for this IB already. |
537 | * | 534 | * |