drm/ttm: add ttm_tt_populate wrapper
Stop calling the driver callback directly. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Roger He <Hongbo.He@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Родитель
cc32ad8f55
Коммит
25893a14c9
|
@ -375,8 +375,8 @@ int ttm_bo_move_memcpy(struct ttm_buffer_object *bo,
|
|||
/*
|
||||
* TTM might be null for moves within the same region.
|
||||
*/
|
||||
if (ttm && ttm->state == tt_unpopulated) {
|
||||
ret = ttm->bdev->driver->ttm_tt_populate(ttm, ctx);
|
||||
if (ttm) {
|
||||
ret = ttm_tt_populate(ttm, ctx);
|
||||
if (ret)
|
||||
goto out1;
|
||||
}
|
||||
|
@ -557,11 +557,9 @@ static int ttm_bo_kmap_ttm(struct ttm_buffer_object *bo,
|
|||
|
||||
BUG_ON(!ttm);
|
||||
|
||||
if (ttm->state == tt_unpopulated) {
|
||||
ret = ttm->bdev->driver->ttm_tt_populate(ttm, &ctx);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
ret = ttm_tt_populate(ttm, &ctx);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (num_pages == 1 && (mem->placement & TTM_PL_FLAG_CACHED)) {
|
||||
/*
|
||||
|
|
|
@ -234,7 +234,7 @@ static int ttm_bo_vm_fault(struct vm_fault *vmf)
|
|||
cvma.vm_page_prot);
|
||||
|
||||
/* Allocate all page at once, most common usage */
|
||||
if (ttm->bdev->driver->ttm_tt_populate(ttm, &ctx)) {
|
||||
if (ttm_tt_populate(ttm, &ctx)) {
|
||||
ret = VM_FAULT_OOM;
|
||||
goto out_io_unlock;
|
||||
}
|
||||
|
|
|
@ -276,7 +276,7 @@ int ttm_tt_bind(struct ttm_tt *ttm, struct ttm_mem_reg *bo_mem,
|
|||
if (ttm->state == tt_bound)
|
||||
return 0;
|
||||
|
||||
ret = ttm->bdev->driver->ttm_tt_populate(ttm, ctx);
|
||||
ret = ttm_tt_populate(ttm, ctx);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -392,6 +392,14 @@ out_err:
|
|||
return ret;
|
||||
}
|
||||
|
||||
int ttm_tt_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx)
|
||||
{
|
||||
if (ttm->state != tt_unpopulated)
|
||||
return 0;
|
||||
|
||||
return ttm->bdev->driver->ttm_tt_populate(ttm, ctx);
|
||||
}
|
||||
|
||||
static void ttm_tt_clear_mapping(struct ttm_tt *ttm)
|
||||
{
|
||||
pgoff_t i;
|
||||
|
|
|
@ -700,6 +700,15 @@ int ttm_tt_swapin(struct ttm_tt *ttm);
|
|||
int ttm_tt_set_placement_caching(struct ttm_tt *ttm, uint32_t placement);
|
||||
int ttm_tt_swapout(struct ttm_tt *ttm, struct file *persistent_swap_storage);
|
||||
|
||||
/**
|
||||
* ttm_tt_populate - allocate pages for a ttm
|
||||
*
|
||||
* @ttm: Pointer to the ttm_tt structure
|
||||
*
|
||||
* Calls the driver method to allocate pages for a ttm
|
||||
*/
|
||||
int ttm_tt_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx);
|
||||
|
||||
/**
|
||||
* ttm_tt_unpopulate - free pages from a ttm
|
||||
*
|
||||
|
|
Загрузка…
Ссылка в новой задаче