Skip to content

Commit

Permalink
drm/vmwgfx: stop using ttm_bo_create
Browse files Browse the repository at this point in the history
Implement in the driver instead since it is the only user of that function.

Signed-off-by: Christian König <christian.koenig@amd.com>
  • Loading branch information
Christian König authored and intel-lab-lkp committed Sep 21, 2020
1 parent 1066357 commit 4f52191
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 8 deletions.
42 changes: 42 additions & 0 deletions drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,48 @@ 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_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,
false, 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
Expand Down
6 changes: 3 additions & 3 deletions drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
4 changes: 4 additions & 0 deletions drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
8 changes: 3 additions & 5 deletions drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -784,11 +784,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;

Expand Down

0 comments on commit 4f52191

Please sign in to comment.