diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_preempt_mgr.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_preempt_mgr.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_preempt_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_preempt_mgr.c index d607f314cc1b..f6aff7ce5160 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_preempt_mgr.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_preempt_mgr.c @@ -66,14 +66,18 @@ static DEVICE_ATTR_RO(mem_info_preempt_used); static int amdgpu_preempt_mgr_new(struct ttm_resource_manager *man, struct ttm_buffer_object *tbo, const struct ttm_place *place, - struct ttm_resource *mem) + struct ttm_resource **res) { struct amdgpu_preempt_mgr *mgr = to_preempt_mgr(man); - atomic64_add(mem->num_pages, &mgr->used); + *res = kzalloc(sizeof(**res), GFP_KERNEL); + if (*res) + return -ENOMEM; - mem->mm_node = NULL; - mem->start = AMDGPU_BO_INVALID_OFFSET; + ttm_resource_init(tbo, place, *res); + (*res)->start = AMDGPU_BO_INVALID_OFFSET; + + atomic64_add((*res)->num_pages, &mgr->used); return 0; } @@ -86,11 +90,12 @@ static int amdgpu_preempt_mgr_new(struct ttm_resource_manager *man, * Free the allocated GTT again. */ static void amdgpu_preempt_mgr_del(struct ttm_resource_manager *man, - struct ttm_resource *mem) + struct ttm_resource *res) { struct amdgpu_preempt_mgr *mgr = to_preempt_mgr(man); - atomic64_sub(mem->num_pages, &mgr->used); + atomic64_sub(res->num_pages, &mgr->used); + kfree(res); } /** |