Commit 6034d9d4 authored by Thomas Zimmermann's avatar Thomas Zimmermann Committed by Alex Deucher

drm/vmwgfx: Replace ttm_bo_unref with ttm_bo_put

The function ttm_bo_put releases a reference to a TTM buffer object. The
function's name is more aligned to the Linux kernel convention of naming
ref-counting function _get and _put.

A call to ttm_bo_unref takes the address of the TTM BO object's pointer and
clears the pointer's value to NULL. This is not necessary in most cases and
sometimes even worked around by the calling code. A call to ttm_bo_put only
releases the reference without clearing the pointer.

In places where is might be necessary, the current behaviour of cleaning the
pointer is kept.
Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarHuang Rui <ray.huang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 2d18cb98
...@@ -534,7 +534,6 @@ static void vmw_user_bo_release(struct ttm_base_object **p_base) ...@@ -534,7 +534,6 @@ static void vmw_user_bo_release(struct ttm_base_object **p_base)
{ {
struct vmw_user_buffer_object *vmw_user_bo; struct vmw_user_buffer_object *vmw_user_bo;
struct ttm_base_object *base = *p_base; struct ttm_base_object *base = *p_base;
struct ttm_buffer_object *bo;
*p_base = NULL; *p_base = NULL;
...@@ -543,8 +542,7 @@ static void vmw_user_bo_release(struct ttm_base_object **p_base) ...@@ -543,8 +542,7 @@ static void vmw_user_bo_release(struct ttm_base_object **p_base)
vmw_user_bo = container_of(base, struct vmw_user_buffer_object, vmw_user_bo = container_of(base, struct vmw_user_buffer_object,
prime.base); prime.base);
bo = &vmw_user_bo->vbo.base; ttm_bo_put(&vmw_user_bo->vbo.base);
ttm_bo_unref(&bo);
} }
...@@ -597,7 +595,6 @@ int vmw_user_bo_alloc(struct vmw_private *dev_priv, ...@@ -597,7 +595,6 @@ int vmw_user_bo_alloc(struct vmw_private *dev_priv,
struct ttm_base_object **p_base) struct ttm_base_object **p_base)
{ {
struct vmw_user_buffer_object *user_bo; struct vmw_user_buffer_object *user_bo;
struct ttm_buffer_object *tmp;
int ret; int ret;
user_bo = kzalloc(sizeof(*user_bo), GFP_KERNEL); user_bo = kzalloc(sizeof(*user_bo), GFP_KERNEL);
...@@ -615,7 +612,6 @@ int vmw_user_bo_alloc(struct vmw_private *dev_priv, ...@@ -615,7 +612,6 @@ int vmw_user_bo_alloc(struct vmw_private *dev_priv,
return ret; return ret;
ttm_bo_get(&user_bo->vbo.base); ttm_bo_get(&user_bo->vbo.base);
tmp = &user_bo->vbo.base;
ret = ttm_prime_object_init(tfile, ret = ttm_prime_object_init(tfile,
size, size,
&user_bo->prime, &user_bo->prime,
...@@ -624,7 +620,7 @@ int vmw_user_bo_alloc(struct vmw_private *dev_priv, ...@@ -624,7 +620,7 @@ int vmw_user_bo_alloc(struct vmw_private *dev_priv,
&vmw_user_bo_release, &vmw_user_bo_release,
&vmw_user_bo_ref_obj_release); &vmw_user_bo_ref_obj_release);
if (unlikely(ret != 0)) { if (unlikely(ret != 0)) {
ttm_bo_unref(&tmp); ttm_bo_put(&user_bo->vbo.base);
goto out_no_base_object; goto out_no_base_object;
} }
......
...@@ -1276,8 +1276,10 @@ int vmw_cmdbuf_set_pool_size(struct vmw_cmdbuf_man *man, ...@@ -1276,8 +1276,10 @@ int vmw_cmdbuf_set_pool_size(struct vmw_cmdbuf_man *man,
return 0; return 0;
out_no_map: out_no_map:
if (man->using_mob) if (man->using_mob) {
ttm_bo_unref(&man->cmd_space); ttm_bo_put(man->cmd_space);
man->cmd_space = NULL;
}
return ret; return ret;
} }
...@@ -1380,7 +1382,8 @@ void vmw_cmdbuf_remove_pool(struct vmw_cmdbuf_man *man) ...@@ -1380,7 +1382,8 @@ void vmw_cmdbuf_remove_pool(struct vmw_cmdbuf_man *man)
(void) vmw_cmdbuf_idle(man, false, 10*HZ); (void) vmw_cmdbuf_idle(man, false, 10*HZ);
if (man->using_mob) { if (man->using_mob) {
(void) ttm_bo_kunmap(&man->map_obj); (void) ttm_bo_kunmap(&man->map_obj);
ttm_bo_unref(&man->cmd_space); ttm_bo_put(man->cmd_space);
man->cmd_space = NULL;
} else { } else {
dma_free_coherent(&man->dev_priv->dev->pdev->dev, dma_free_coherent(&man->dev_priv->dev->pdev->dev,
man->size, man->map, man->handle); man->size, man->map, man->handle);
......
...@@ -1337,9 +1337,7 @@ static inline void vmw_bo_unreference(struct vmw_buffer_object **buf) ...@@ -1337,9 +1337,7 @@ static inline void vmw_bo_unreference(struct vmw_buffer_object **buf)
*buf = NULL; *buf = NULL;
if (tmp_buf != NULL) { if (tmp_buf != NULL) {
struct ttm_buffer_object *bo = &tmp_buf->base; ttm_bo_put(&tmp_buf->base);
ttm_bo_unref(&bo);
} }
} }
......
...@@ -300,7 +300,8 @@ static int vmw_otable_batch_setup(struct vmw_private *dev_priv, ...@@ -300,7 +300,8 @@ static int vmw_otable_batch_setup(struct vmw_private *dev_priv,
&batch->otables[i]); &batch->otables[i]);
} }
ttm_bo_unref(&batch->otable_bo); ttm_bo_put(batch->otable_bo);
batch->otable_bo = NULL;
out_no_bo: out_no_bo:
return ret; return ret;
} }
...@@ -365,7 +366,8 @@ static void vmw_otable_batch_takedown(struct vmw_private *dev_priv, ...@@ -365,7 +366,8 @@ static void vmw_otable_batch_takedown(struct vmw_private *dev_priv,
vmw_bo_fence_single(bo, NULL); vmw_bo_fence_single(bo, NULL);
ttm_bo_unreserve(bo); ttm_bo_unreserve(bo);
ttm_bo_unref(&batch->otable_bo); ttm_bo_put(batch->otable_bo);
batch->otable_bo = NULL;
} }
/* /*
...@@ -463,7 +465,8 @@ static int vmw_mob_pt_populate(struct vmw_private *dev_priv, ...@@ -463,7 +465,8 @@ static int vmw_mob_pt_populate(struct vmw_private *dev_priv,
out_unreserve: out_unreserve:
ttm_bo_unreserve(mob->pt_bo); ttm_bo_unreserve(mob->pt_bo);
ttm_bo_unref(&mob->pt_bo); ttm_bo_put(mob->pt_bo);
mob->pt_bo = NULL;
return ret; return ret;
} }
...@@ -580,8 +583,10 @@ static void vmw_mob_pt_setup(struct vmw_mob *mob, ...@@ -580,8 +583,10 @@ static void vmw_mob_pt_setup(struct vmw_mob *mob,
*/ */
void vmw_mob_destroy(struct vmw_mob *mob) void vmw_mob_destroy(struct vmw_mob *mob)
{ {
if (mob->pt_bo) if (mob->pt_bo) {
ttm_bo_unref(&mob->pt_bo); ttm_bo_put(mob->pt_bo);
mob->pt_bo = NULL;
}
kfree(mob); kfree(mob);
} }
...@@ -698,8 +703,10 @@ int vmw_mob_bind(struct vmw_private *dev_priv, ...@@ -698,8 +703,10 @@ int vmw_mob_bind(struct vmw_private *dev_priv,
out_no_cmd_space: out_no_cmd_space:
vmw_fifo_resource_dec(dev_priv); vmw_fifo_resource_dec(dev_priv);
if (pt_set_up) if (pt_set_up) {
ttm_bo_unref(&mob->pt_bo); ttm_bo_put(mob->pt_bo);
mob->pt_bo = NULL;
}
return -ENOMEM; return -ENOMEM;
} }
...@@ -485,7 +485,8 @@ vmw_resource_check_buffer(struct ww_acquire_ctx *ticket, ...@@ -485,7 +485,8 @@ vmw_resource_check_buffer(struct ww_acquire_ctx *ticket,
out_no_validate: out_no_validate:
ttm_eu_backoff_reservation(ticket, &val_list); ttm_eu_backoff_reservation(ticket, &val_list);
out_no_reserve: out_no_reserve:
ttm_bo_unref(&val_buf->bo); ttm_bo_put(val_buf->bo);
val_buf->bo = NULL;
if (backup_dirty) if (backup_dirty)
vmw_bo_unreference(&res->backup); vmw_bo_unreference(&res->backup);
...@@ -545,7 +546,8 @@ vmw_resource_backoff_reservation(struct ww_acquire_ctx *ticket, ...@@ -545,7 +546,8 @@ vmw_resource_backoff_reservation(struct ww_acquire_ctx *ticket,
INIT_LIST_HEAD(&val_list); INIT_LIST_HEAD(&val_list);
list_add_tail(&val_buf->head, &val_list); list_add_tail(&val_buf->head, &val_list);
ttm_eu_backoff_reservation(ticket, &val_list); ttm_eu_backoff_reservation(ticket, &val_list);
ttm_bo_unref(&val_buf->bo); ttm_bo_put(val_buf->bo);
val_buf->bo = NULL;
} }
/** /**
......
...@@ -628,8 +628,10 @@ void vmw_validation_unref_lists(struct vmw_validation_context *ctx) ...@@ -628,8 +628,10 @@ void vmw_validation_unref_lists(struct vmw_validation_context *ctx)
struct vmw_validation_bo_node *entry; struct vmw_validation_bo_node *entry;
struct vmw_validation_res_node *val; struct vmw_validation_res_node *val;
list_for_each_entry(entry, &ctx->bo_list, base.head) list_for_each_entry(entry, &ctx->bo_list, base.head) {
ttm_bo_unref(&entry->base.bo); ttm_bo_put(entry->base.bo);
entry->base.bo = NULL;
}
list_splice_init(&ctx->resource_ctx_list, &ctx->resource_list); list_splice_init(&ctx->resource_ctx_list, &ctx->resource_list);
list_for_each_entry(val, &ctx->resource_list, head) list_for_each_entry(val, &ctx->resource_list, head)
......
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