Commit b254557c authored by Christian König's avatar Christian König

drm/vmwgfx: stop using ttm_bo_create v2

Implement in the driver instead since it is the only user of that function.

v2: fix usage of ttm_bo_init_reserved
Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
Reviewed-by: default avatarHuang Rui <ray.huang@amd.com>
Link: https://patchwork.freedesktop.org/patch/391614/?series=81973&rev=1
parent a3b3bef3
...@@ -487,6 +487,49 @@ static void vmw_user_bo_destroy(struct ttm_buffer_object *bo) ...@@ -487,6 +487,49 @@ static void vmw_user_bo_destroy(struct ttm_buffer_object *bo)
ttm_prime_object_kfree(vmw_user_bo, prime); ttm_prime_object_kfree(vmw_user_bo, prime);
} }
/**
* vmw_bo_create_kernel - Create a pinned BO for internal kernel use.
*
* @dev_priv: Pointer to the device private struct
* @size: size of the BO we need
* @placement: where to put it
* @p_bo: resulting BO
*
* Creates and pin a simple BO for in kernel use.
*/
int vmw_bo_create_kernel(struct vmw_private *dev_priv, unsigned long size,
struct ttm_placement *placement,
struct ttm_buffer_object **p_bo)
{
unsigned npages = PAGE_ALIGN(size) >> PAGE_SHIFT;
struct ttm_operation_ctx ctx = { false, false };
struct ttm_buffer_object *bo;
size_t acc_size;
int ret;
bo = kzalloc(sizeof(*bo), GFP_KERNEL);
if (unlikely(!bo))
return -ENOMEM;
acc_size = ttm_round_pot(sizeof(*bo));
acc_size += ttm_round_pot(npages * sizeof(void *));
acc_size += ttm_round_pot(sizeof(struct ttm_tt));
ret = ttm_bo_init_reserved(&dev_priv->bdev, bo, size,
ttm_bo_type_device, placement, 0,
&ctx, acc_size, NULL, NULL, NULL);
if (unlikely(ret))
goto error_free;
ttm_bo_pin(bo);
ttm_bo_unreserve(bo);
*p_bo = bo;
return 0;
error_free:
kfree(bo);
return ret;
}
/** /**
* vmw_bo_init - Initialize a vmw buffer object * vmw_bo_init - Initialize a vmw buffer object
......
...@@ -1245,8 +1245,8 @@ int vmw_cmdbuf_set_pool_size(struct vmw_cmdbuf_man *man, ...@@ -1245,8 +1245,8 @@ int vmw_cmdbuf_set_pool_size(struct vmw_cmdbuf_man *man,
!dev_priv->has_mob) !dev_priv->has_mob)
return -ENOMEM; return -ENOMEM;
ret = ttm_bo_create(&dev_priv->bdev, size, ttm_bo_type_device, ret = vmw_bo_create_kernel(dev_priv, size,
&vmw_mob_ne_placement, 0, false, &vmw_mob_placement,
&man->cmd_space); &man->cmd_space);
if (ret) if (ret)
return ret; return ret;
......
...@@ -845,6 +845,10 @@ extern void vmw_bo_get_guest_ptr(const struct ttm_buffer_object *buf, ...@@ -845,6 +845,10 @@ extern void vmw_bo_get_guest_ptr(const struct ttm_buffer_object *buf,
SVGAGuestPtr *ptr); SVGAGuestPtr *ptr);
extern void vmw_bo_pin_reserved(struct vmw_buffer_object *bo, bool pin); extern void vmw_bo_pin_reserved(struct vmw_buffer_object *bo, bool pin);
extern void vmw_bo_bo_free(struct ttm_buffer_object *bo); extern void vmw_bo_bo_free(struct ttm_buffer_object *bo);
extern int vmw_bo_create_kernel(struct vmw_private *dev_priv,
unsigned long size,
struct ttm_placement *placement,
struct ttm_buffer_object **p_bo);
extern int vmw_bo_init(struct vmw_private *dev_priv, extern int vmw_bo_init(struct vmw_private *dev_priv,
struct vmw_buffer_object *vmw_bo, struct vmw_buffer_object *vmw_bo,
size_t size, struct ttm_placement *placement, size_t size, struct ttm_placement *placement,
......
...@@ -793,11 +793,9 @@ int vmw_bo_create_and_populate(struct vmw_private *dev_priv, ...@@ -793,11 +793,9 @@ int vmw_bo_create_and_populate(struct vmw_private *dev_priv,
struct ttm_buffer_object *bo; struct ttm_buffer_object *bo;
int ret; int ret;
ret = ttm_bo_create(&dev_priv->bdev, bo_size, ret = vmw_bo_create_kernel(dev_priv, bo_size,
ttm_bo_type_device, &vmw_sys_placement,
&vmw_sys_ne_placement, &bo);
0, false, &bo);
if (unlikely(ret != 0)) if (unlikely(ret != 0))
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment