Commit d02117f8 authored by Christian König's avatar Christian König
Browse files

drm/ttm: remove special handling for non GEM drivers



vmwgfx is the only driver actually using this. Move the handling into
the driver instead.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Acked-by: default avatarHuang Rui <ray.huang@amd.com>
Reviewed-by: default avatarZack Rusin <zackr@vmware.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210419092853.1605-1-christian.koenig@amd.com
parent 13ea9aa1
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -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);

	/*
+10 −0
Original line number Diff line number Diff line
@@ -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);
+0 −19
Original line number Diff line number Diff line
@@ -562,25 +562,6 @@ ssize_t ttm_bo_io(struct ttm_device *bdev, struct file *filp,
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