drm/ttm: remove special handling for non GEM drivers
authorChristian König <christian.koenig@amd.com>
Sat, 17 Apr 2021 17:09:30 +0000 (19:09 +0200)
committerChristian König <christian.koenig@amd.com>
Fri, 23 Apr 2021 12:42:43 +0000 (14:42 +0200)
vmwgfx is the only driver actually using this. Move the handling into
the driver instead.

Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Huang Rui <ray.huang@amd.com>
Reviewed-by: Zack Rusin <zackr@vmware.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210419092853.1605-1-christian.koenig@amd.com
drivers/gpu/drm/ttm/ttm_bo.c
drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
include/drm/ttm/ttm_bo_api.h

index aed8519..5b33220 100644 (file)
@@ -460,8 +460,6 @@ static void ttm_bo_release(struct kref *kref)
 
        atomic_dec(&ttm_glob.bo_count);
        dma_fence_put(bo->moving);
-       if (!ttm_bo_uses_embedded_gem_object(bo))
-               dma_resv_fini(&bo->base._resv);
        bo->destroy(bo);
 }
 
@@ -1056,15 +1054,6 @@ int ttm_bo_init_reserved(struct ttm_device *bdev,
        } else {
                bo->base.resv = &bo->base._resv;
        }
-       if (!ttm_bo_uses_embedded_gem_object(bo)) {
-               /*
-                * bo.base is not initialized, so we have to setup the
-                * struct elements we want use regardless.
-                */
-               bo->base.size = size;
-               dma_resv_init(&bo->base._resv);
-               drm_vma_node_reset(&bo->base.vma_node);
-       }
        atomic_inc(&ttm_glob.bo_count);
 
        /*
index 50e529a..587314d 100644 (file)
@@ -460,6 +460,7 @@ void vmw_bo_bo_free(struct ttm_buffer_object *bo)
        WARN_ON(vmw_bo->dirty);
        WARN_ON(!RB_EMPTY_ROOT(&vmw_bo->res_tree));
        vmw_bo_unmap(vmw_bo);
+       dma_resv_fini(&bo->base._resv);
        kfree(vmw_bo);
 }
 
@@ -512,6 +513,11 @@ int vmw_bo_create_kernel(struct vmw_private *dev_priv, unsigned long size,
        if (unlikely(ret))
                goto error_free;
 
+
+       bo->base.size = size;
+       dma_resv_init(&bo->base._resv);
+       drm_vma_node_reset(&bo->base.vma_node);
+
        ret = ttm_bo_init_reserved(&dev_priv->bdev, bo, size,
                                   ttm_bo_type_device, placement, 0,
                                   &ctx, NULL, NULL, NULL);
@@ -570,6 +576,10 @@ int vmw_bo_init(struct vmw_private *dev_priv,
        if (unlikely(ret))
                return ret;
 
+       vmw_bo->base.base.size = size;
+       dma_resv_init(&vmw_bo->base.base._resv);
+       drm_vma_node_reset(&vmw_bo->base.base.vma_node);
+
        ret = ttm_bo_init_reserved(bdev, &vmw_bo->base, size,
                                   ttm_bo_type_device, placement,
                                   0, &ctx, NULL, NULL, bo_free);
index 3587f66..e88da48 100644 (file)
@@ -563,25 +563,6 @@ int ttm_bo_swapout(struct ttm_buffer_object *bo, struct ttm_operation_ctx *ctx,
                   gfp_t gfp_flags);
 
 /**
- * ttm_bo_uses_embedded_gem_object - check if the given bo uses the
- * embedded drm_gem_object.
- *
- * Most ttm drivers are using gem too, so the embedded
- * ttm_buffer_object.base will be initialized by the driver (before
- * calling ttm_bo_init).  It is also possible to use ttm without gem
- * though (vmwgfx does that).
- *
- * This helper will figure whenever a given ttm bo is a gem object too
- * or not.
- *
- * @bo: The bo to check.
- */
-static inline bool ttm_bo_uses_embedded_gem_object(struct ttm_buffer_object *bo)
-{
-       return bo->base.dev != NULL;
-}
-
-/**
  * ttm_bo_pin - Pin the buffer object.
  * @bo: The buffer object to pin
  *