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: Christian König <christian.koenig@amd.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Huang Rui <ray.huang@amd.com> Link: https://patchwork.freedesktop.org/patch/391614/?series=81973&rev=1
This commit is contained in:
parent
a3b3bef335
commit
b254557cb2
@ -487,6 +487,49 @@ static void vmw_user_bo_destroy(struct ttm_buffer_object *bo)
|
||||
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
|
||||
|
@ -1245,9 +1245,9 @@ int vmw_cmdbuf_set_pool_size(struct vmw_cmdbuf_man *man,
|
||||
!dev_priv->has_mob)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = ttm_bo_create(&dev_priv->bdev, size, ttm_bo_type_device,
|
||||
&vmw_mob_ne_placement, 0, false,
|
||||
&man->cmd_space);
|
||||
ret = vmw_bo_create_kernel(dev_priv, size,
|
||||
&vmw_mob_placement,
|
||||
&man->cmd_space);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -845,6 +845,10 @@ extern void vmw_bo_get_guest_ptr(const struct ttm_buffer_object *buf,
|
||||
SVGAGuestPtr *ptr);
|
||||
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 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,
|
||||
struct vmw_buffer_object *vmw_bo,
|
||||
size_t size, struct ttm_placement *placement,
|
||||
|
@ -793,11 +793,9 @@ int vmw_bo_create_and_populate(struct vmw_private *dev_priv,
|
||||
struct ttm_buffer_object *bo;
|
||||
int ret;
|
||||
|
||||
ret = ttm_bo_create(&dev_priv->bdev, bo_size,
|
||||
ttm_bo_type_device,
|
||||
&vmw_sys_ne_placement,
|
||||
0, false, &bo);
|
||||
|
||||
ret = vmw_bo_create_kernel(dev_priv, bo_size,
|
||||
&vmw_sys_placement,
|
||||
&bo);
|
||||
if (unlikely(ret != 0))
|
||||
return ret;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user