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: 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
This commit is contained in:
Родитель
13ea9aa1e7
Коммит
d02117f8ef
|
@ -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);
|
||||
|
||||
/*
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче