* [PATCH v2 0/7] Replace ttm_bo_{unref, reference} with ttm_bo_{get|put}
@ 2019-01-25 11:02 Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 1/7] drm/ast: Replace ttm_bo_unref with ttm_bo_put Thomas Zimmermann
` (7 more replies)
0 siblings, 8 replies; 10+ messages in thread
From: Thomas Zimmermann @ 2019-01-25 11:02 UTC (permalink / raw)
To: christian.koenig, ray.huang, Jerry.Zhang, airlied, bskeggs,
linux-graphics-maintainer, thellstrom, dri-devel
Cc: Thomas Zimmermann
This patchset cleans up the last remaining callers of ttm_bo_reference
and ttm_bo_unref. Calls are replaced with ttm_bo_get and ttm_bo_put,
which follow Linux' get/put semantics more closely.
The most notable difference is that ttm_bo_get does not clear the supplied
pointer's value. This behaviour is now located in the calling code for cases
where it might be required.
v2:
* rebased onto drm-tip
Thomas Zimmermann (7):
drm/ast: Replace ttm_bo_unref with ttm_bo_put
drm/nouveau: Replace ttm_bo_reference with ttm_bo_get
drm/nouveau: Replace ttm_bo_unref with ttm_bo_put
drm/vmwgfx: Replace ttm_bo_reference with ttm_bo_get
drm/vmwgfx: Replace ttm_bo_unref with ttm_bo_put
drm/mgag200: Replace ttm_bo_unref with ttm_bo_put
drm/ttm: Remove ttm_bo_reference and ttm_bo_unref
drivers/gpu/drm/ast/ast_main.c | 6 +----
drivers/gpu/drm/mgag200/mgag200_main.c | 8 ++-----
drivers/gpu/drm/nouveau/nouveau_bo.h | 12 ++++++----
drivers/gpu/drm/nouveau/nouveau_gem.c | 3 +--
drivers/gpu/drm/ttm/ttm_bo.c | 9 -------
drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 11 ++++-----
drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c | 11 +++++----
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 9 +++----
drivers/gpu/drm/vmwgfx/vmwgfx_mob.c | 21 ++++++++++------
drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 9 ++++---
drivers/gpu/drm/vmwgfx/vmwgfx_validation.c | 6 +++--
include/drm/ttm/ttm_bo_api.h | 28 ----------------------
12 files changed, 49 insertions(+), 84 deletions(-)
--
2.20.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/7] drm/ast: Replace ttm_bo_unref with ttm_bo_put
2019-01-25 11:02 [PATCH v2 0/7] Replace ttm_bo_{unref, reference} with ttm_bo_{get|put} Thomas Zimmermann
@ 2019-01-25 11:02 ` Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 2/7] drm/nouveau: Replace ttm_bo_reference with ttm_bo_get Thomas Zimmermann
` (6 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Thomas Zimmermann @ 2019-01-25 11:02 UTC (permalink / raw)
To: christian.koenig, ray.huang, Jerry.Zhang, airlied, bskeggs,
linux-graphics-maintainer, thellstrom, dri-devel
Cc: Thomas Zimmermann
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.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/ast/ast_main.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
index 373700c05a00..2854399856ba 100644
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -639,13 +639,9 @@ int ast_dumb_create(struct drm_file *file,
static void ast_bo_unref(struct ast_bo **bo)
{
- struct ttm_buffer_object *tbo;
-
if ((*bo) == NULL)
return;
-
- tbo = &((*bo)->bo);
- ttm_bo_unref(&tbo);
+ ttm_bo_put(&((*bo)->bo));
*bo = NULL;
}
--
2.20.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 2/7] drm/nouveau: Replace ttm_bo_reference with ttm_bo_get
2019-01-25 11:02 [PATCH v2 0/7] Replace ttm_bo_{unref, reference} with ttm_bo_{get|put} Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 1/7] drm/ast: Replace ttm_bo_unref with ttm_bo_put Thomas Zimmermann
@ 2019-01-25 11:02 ` Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 3/7] drm/nouveau: Replace ttm_bo_unref with ttm_bo_put Thomas Zimmermann
` (5 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Thomas Zimmermann @ 2019-01-25 11:02 UTC (permalink / raw)
To: christian.koenig, ray.huang, Jerry.Zhang, airlied, bskeggs,
linux-graphics-maintainer, thellstrom, dri-devel
Cc: Thomas Zimmermann
The function ttm_bo_get acquires a reference on a TTM buffer object. The
function's name is more aligned to the Linux kernel convention of naming
ref-counting function _get and _put.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/nouveau/nouveau_bo.h | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.h b/drivers/gpu/drm/nouveau/nouveau_bo.h
index 73c48440d4d7..3920134cb132 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.h
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.h
@@ -61,7 +61,12 @@ nouveau_bo_ref(struct nouveau_bo *ref, struct nouveau_bo **pnvbo)
return -EINVAL;
prev = *pnvbo;
- *pnvbo = ref ? nouveau_bo(ttm_bo_reference(&ref->bo)) : NULL;
+ if (ref) {
+ ttm_bo_get(&ref->bo);
+ *pnvbo = nouveau_bo(&ref->bo);
+ } else {
+ *pnvbo = NULL;
+ }
if (prev) {
struct ttm_buffer_object *bo = &prev->bo;
--
2.20.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 3/7] drm/nouveau: Replace ttm_bo_unref with ttm_bo_put
2019-01-25 11:02 [PATCH v2 0/7] Replace ttm_bo_{unref, reference} with ttm_bo_{get|put} Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 1/7] drm/ast: Replace ttm_bo_unref with ttm_bo_put Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 2/7] drm/nouveau: Replace ttm_bo_reference with ttm_bo_get Thomas Zimmermann
@ 2019-01-25 11:02 ` Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 4/7] drm/vmwgfx: Replace ttm_bo_reference with ttm_bo_get Thomas Zimmermann
` (4 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Thomas Zimmermann @ 2019-01-25 11:02 UTC (permalink / raw)
To: christian.koenig, ray.huang, Jerry.Zhang, airlied, bskeggs,
linux-graphics-maintainer, thellstrom, dri-devel
Cc: Thomas Zimmermann
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.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/nouveau/nouveau_bo.h | 7 ++-----
drivers/gpu/drm/nouveau/nouveau_gem.c | 3 +--
2 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.h b/drivers/gpu/drm/nouveau/nouveau_bo.h
index 3920134cb132..846f4bdec0de 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.h
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.h
@@ -67,11 +67,8 @@ nouveau_bo_ref(struct nouveau_bo *ref, struct nouveau_bo **pnvbo)
} else {
*pnvbo = NULL;
}
- if (prev) {
- struct ttm_buffer_object *bo = &prev->bo;
-
- ttm_bo_unref(&bo);
- }
+ if (prev)
+ ttm_bo_put(&prev->bo);
return 0;
}
diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
index b56524d343c3..fb028e3b5f51 100644
--- a/drivers/gpu/drm/nouveau/nouveau_gem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
@@ -41,7 +41,6 @@ nouveau_gem_object_del(struct drm_gem_object *gem)
{
struct nouveau_bo *nvbo = nouveau_gem_object(gem);
struct nouveau_drm *drm = nouveau_bdev(nvbo->bo.bdev);
- struct ttm_buffer_object *bo = &nvbo->bo;
struct device *dev = drm->dev->dev;
int ret;
@@ -56,7 +55,7 @@ nouveau_gem_object_del(struct drm_gem_object *gem)
/* reset filp so nouveau_bo_del_ttm() can test for it */
gem->filp = NULL;
- ttm_bo_unref(&bo);
+ ttm_bo_put(&nvbo->bo);
pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
--
2.20.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 4/7] drm/vmwgfx: Replace ttm_bo_reference with ttm_bo_get
2019-01-25 11:02 [PATCH v2 0/7] Replace ttm_bo_{unref, reference} with ttm_bo_{get|put} Thomas Zimmermann
` (2 preceding siblings ...)
2019-01-25 11:02 ` [PATCH v2 3/7] drm/nouveau: Replace ttm_bo_unref with ttm_bo_put Thomas Zimmermann
@ 2019-01-25 11:02 ` Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 5/7] drm/vmwgfx: Replace ttm_bo_unref with ttm_bo_put Thomas Zimmermann
` (3 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Thomas Zimmermann @ 2019-01-25 11:02 UTC (permalink / raw)
To: christian.koenig, ray.huang, Jerry.Zhang, airlied, bskeggs,
linux-graphics-maintainer, thellstrom, dri-devel
Cc: Thomas Zimmermann
The function ttm_bo_get acquires a reference on a TTM buffer object. The
function's name is more aligned to the Linux kernel convention of naming
ref-counting function _get and _put.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 5 +++--
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 5 ++---
drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 3 ++-
3 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
index 7ce1c2f87d9a..bb9d95ef0707 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
@@ -614,7 +614,8 @@ int vmw_user_bo_alloc(struct vmw_private *dev_priv,
if (unlikely(ret != 0))
return ret;
- tmp = ttm_bo_reference(&user_bo->vbo.base);
+ ttm_bo_get(&user_bo->vbo.base);
+ tmp = &user_bo->vbo.base;
ret = ttm_prime_object_init(tfile,
size,
&user_bo->prime,
@@ -911,7 +912,7 @@ int vmw_user_bo_lookup(struct ttm_object_file *tfile,
vmw_user_bo = container_of(base, struct vmw_user_buffer_object,
prime.base);
- (void)ttm_bo_reference(&vmw_user_bo->vbo.base);
+ ttm_bo_get(&vmw_user_bo->vbo.base);
if (p_base)
*p_base = base;
else
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
index cd607ba9c2fe..b7fb9b79bfef 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
@@ -1346,9 +1346,8 @@ static inline void vmw_bo_unreference(struct vmw_buffer_object **buf)
static inline struct vmw_buffer_object *
vmw_bo_reference(struct vmw_buffer_object *buf)
{
- if (ttm_bo_reference(&buf->base))
- return buf;
- return NULL;
+ ttm_bo_get(&buf->base);
+ return buf;
}
static inline struct ttm_mem_global *vmw_mem_glob(struct vmw_private *dev_priv)
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
index 3025bfc001a1..d67b928adf6a 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
@@ -461,7 +461,8 @@ vmw_resource_check_buffer(struct ww_acquire_ctx *ticket,
}
INIT_LIST_HEAD(&val_list);
- val_buf->bo = ttm_bo_reference(&res->backup->base);
+ ttm_bo_get(&res->backup->base);
+ val_buf->bo = &res->backup->base;
val_buf->num_shared = 0;
list_add_tail(&val_buf->head, &val_list);
ret = ttm_eu_reserve_buffers(ticket, &val_list, interruptible, NULL);
--
2.20.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 5/7] drm/vmwgfx: Replace ttm_bo_unref with ttm_bo_put
2019-01-25 11:02 [PATCH v2 0/7] Replace ttm_bo_{unref, reference} with ttm_bo_{get|put} Thomas Zimmermann
` (3 preceding siblings ...)
2019-01-25 11:02 ` [PATCH v2 4/7] drm/vmwgfx: Replace ttm_bo_reference with ttm_bo_get Thomas Zimmermann
@ 2019-01-25 11:02 ` Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 6/7] drm/mgag200: " Thomas Zimmermann
` (2 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: Thomas Zimmermann @ 2019-01-25 11:02 UTC (permalink / raw)
To: christian.koenig, ray.huang, Jerry.Zhang, airlied, bskeggs,
linux-graphics-maintainer, thellstrom, dri-devel
Cc: Thomas Zimmermann
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: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 8 ++------
drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c | 11 +++++++----
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 4 +---
drivers/gpu/drm/vmwgfx/vmwgfx_mob.c | 21 ++++++++++++++-------
drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 6 ++++--
drivers/gpu/drm/vmwgfx/vmwgfx_validation.c | 6 ++++--
6 files changed, 32 insertions(+), 24 deletions(-)
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
index bb9d95ef0707..5d5c2bce01f3 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
@@ -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 ttm_base_object *base = *p_base;
- struct ttm_buffer_object *bo;
*p_base = NULL;
@@ -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,
prime.base);
- bo = &vmw_user_bo->vbo.base;
- ttm_bo_unref(&bo);
+ ttm_bo_put(&vmw_user_bo->vbo.base);
}
@@ -597,7 +595,6 @@ int vmw_user_bo_alloc(struct vmw_private *dev_priv,
struct ttm_base_object **p_base)
{
struct vmw_user_buffer_object *user_bo;
- struct ttm_buffer_object *tmp;
int ret;
user_bo = kzalloc(sizeof(*user_bo), GFP_KERNEL);
@@ -615,7 +612,6 @@ int vmw_user_bo_alloc(struct vmw_private *dev_priv,
return ret;
ttm_bo_get(&user_bo->vbo.base);
- tmp = &user_bo->vbo.base;
ret = ttm_prime_object_init(tfile,
size,
&user_bo->prime,
@@ -624,7 +620,7 @@ int vmw_user_bo_alloc(struct vmw_private *dev_priv,
&vmw_user_bo_release,
&vmw_user_bo_ref_obj_release);
if (unlikely(ret != 0)) {
- ttm_bo_unref(&tmp);
+ ttm_bo_put(&user_bo->vbo.base);
goto out_no_base_object;
}
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c
index 48d1380a952e..70dab55e7888 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c
@@ -765,7 +765,7 @@ static bool vmw_cmdbuf_try_alloc(struct vmw_cmdbuf_man *man,
if (info->done)
return true;
-
+
memset(info->node, 0, sizeof(*info->node));
spin_lock(&man->lock);
ret = drm_mm_insert_node(&man->mm, info->node, info->page_size);
@@ -1276,8 +1276,10 @@ int vmw_cmdbuf_set_pool_size(struct vmw_cmdbuf_man *man,
return 0;
out_no_map:
- if (man->using_mob)
- ttm_bo_unref(&man->cmd_space);
+ if (man->using_mob) {
+ ttm_bo_put(man->cmd_space);
+ man->cmd_space = NULL;
+ }
return ret;
}
@@ -1380,7 +1382,8 @@ void vmw_cmdbuf_remove_pool(struct vmw_cmdbuf_man *man)
(void) vmw_cmdbuf_idle(man, false, 10*HZ);
if (man->using_mob) {
(void) ttm_bo_kunmap(&man->map_obj);
- ttm_bo_unref(&man->cmd_space);
+ ttm_bo_put(man->cmd_space);
+ man->cmd_space = NULL;
} else {
dma_free_coherent(&man->dev_priv->dev->pdev->dev,
man->size, man->map, man->handle);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
index b7fb9b79bfef..accb2fafe2f1 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
@@ -1337,9 +1337,7 @@ static inline void vmw_bo_unreference(struct vmw_buffer_object **buf)
*buf = NULL;
if (tmp_buf != NULL) {
- struct ttm_buffer_object *bo = &tmp_buf->base;
-
- ttm_bo_unref(&bo);
+ ttm_bo_put(&tmp_buf->base);
}
}
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c b/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
index 7ed179d30ec5..d83cc66e1210 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
@@ -300,7 +300,8 @@ static int vmw_otable_batch_setup(struct vmw_private *dev_priv,
&batch->otables[i]);
}
- ttm_bo_unref(&batch->otable_bo);
+ ttm_bo_put(batch->otable_bo);
+ batch->otable_bo = NULL;
out_no_bo:
return ret;
}
@@ -365,7 +366,8 @@ static void vmw_otable_batch_takedown(struct vmw_private *dev_priv,
vmw_bo_fence_single(bo, NULL);
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,
out_unreserve:
ttm_bo_unreserve(mob->pt_bo);
- ttm_bo_unref(&mob->pt_bo);
+ ttm_bo_put(mob->pt_bo);
+ mob->pt_bo = NULL;
return ret;
}
@@ -580,8 +583,10 @@ static void vmw_mob_pt_setup(struct vmw_mob *mob,
*/
void vmw_mob_destroy(struct vmw_mob *mob)
{
- if (mob->pt_bo)
- ttm_bo_unref(&mob->pt_bo);
+ if (mob->pt_bo) {
+ ttm_bo_put(mob->pt_bo);
+ mob->pt_bo = NULL;
+ }
kfree(mob);
}
@@ -698,8 +703,10 @@ int vmw_mob_bind(struct vmw_private *dev_priv,
out_no_cmd_space:
vmw_fifo_resource_dec(dev_priv);
- if (pt_set_up)
- ttm_bo_unref(&mob->pt_bo);
+ if (pt_set_up) {
+ ttm_bo_put(mob->pt_bo);
+ mob->pt_bo = NULL;
+ }
return -ENOMEM;
}
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
index d67b928adf6a..a7c30e567f09 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
@@ -485,7 +485,8 @@ vmw_resource_check_buffer(struct ww_acquire_ctx *ticket,
out_no_validate:
ttm_eu_backoff_reservation(ticket, &val_list);
out_no_reserve:
- ttm_bo_unref(&val_buf->bo);
+ ttm_bo_put(val_buf->bo);
+ val_buf->bo = NULL;
if (backup_dirty)
vmw_bo_unreference(&res->backup);
@@ -545,7 +546,8 @@ vmw_resource_backoff_reservation(struct ww_acquire_ctx *ticket,
INIT_LIST_HEAD(&val_list);
list_add_tail(&val_buf->head, &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;
}
/**
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c b/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c
index b3f547fc5d3d..e9944ac2e057 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c
@@ -628,8 +628,10 @@ void vmw_validation_unref_lists(struct vmw_validation_context *ctx)
struct vmw_validation_bo_node *entry;
struct vmw_validation_res_node *val;
- list_for_each_entry(entry, &ctx->bo_list, base.head)
- ttm_bo_unref(&entry->base.bo);
+ list_for_each_entry(entry, &ctx->bo_list, base.head) {
+ ttm_bo_put(entry->base.bo);
+ entry->base.bo = NULL;
+ }
list_splice_init(&ctx->resource_ctx_list, &ctx->resource_list);
list_for_each_entry(val, &ctx->resource_list, head)
--
2.20.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 6/7] drm/mgag200: Replace ttm_bo_unref with ttm_bo_put
2019-01-25 11:02 [PATCH v2 0/7] Replace ttm_bo_{unref, reference} with ttm_bo_{get|put} Thomas Zimmermann
` (4 preceding siblings ...)
2019-01-25 11:02 ` [PATCH v2 5/7] drm/vmwgfx: Replace ttm_bo_unref with ttm_bo_put Thomas Zimmermann
@ 2019-01-25 11:02 ` Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 7/7] drm/ttm: Remove ttm_bo_reference and ttm_bo_unref Thomas Zimmermann
2019-01-25 11:29 ` [PATCH v2 0/7] Replace ttm_bo_{unref,reference} with ttm_bo_{get|put} Koenig, Christian
7 siblings, 0 replies; 10+ messages in thread
From: Thomas Zimmermann @ 2019-01-25 11:02 UTC (permalink / raw)
To: christian.koenig, ray.huang, Jerry.Zhang, airlied, bskeggs,
linux-graphics-maintainer, thellstrom, dri-devel
Cc: Thomas Zimmermann
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.
The current behaviour of cleaning the pointer is kept in the calling code,
but should be removed if not required in a later patch.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/mgag200/mgag200_main.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/mgag200/mgag200_main.c b/drivers/gpu/drm/mgag200/mgag200_main.c
index 79d54103d470..163255099779 100644
--- a/drivers/gpu/drm/mgag200/mgag200_main.c
+++ b/drivers/gpu/drm/mgag200/mgag200_main.c
@@ -33,7 +33,7 @@ int mgag200_framebuffer_init(struct drm_device *dev,
struct drm_gem_object *obj)
{
int ret;
-
+
drm_helper_mode_fill_fb_struct(dev, &gfb->base, mode_cmd);
gfb->obj = obj;
ret = drm_framebuffer_init(dev, &gfb->base, &mga_fb_funcs);
@@ -318,13 +318,9 @@ int mgag200_dumb_create(struct drm_file *file,
static void mgag200_bo_unref(struct mgag200_bo **bo)
{
- struct ttm_buffer_object *tbo;
-
if ((*bo) == NULL)
return;
-
- tbo = &((*bo)->bo);
- ttm_bo_unref(&tbo);
+ ttm_bo_put(&((*bo)->bo));
*bo = NULL;
}
--
2.20.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 7/7] drm/ttm: Remove ttm_bo_reference and ttm_bo_unref
2019-01-25 11:02 [PATCH v2 0/7] Replace ttm_bo_{unref, reference} with ttm_bo_{get|put} Thomas Zimmermann
` (5 preceding siblings ...)
2019-01-25 11:02 ` [PATCH v2 6/7] drm/mgag200: " Thomas Zimmermann
@ 2019-01-25 11:02 ` Thomas Zimmermann
2019-01-25 11:29 ` [PATCH v2 0/7] Replace ttm_bo_{unref,reference} with ttm_bo_{get|put} Koenig, Christian
7 siblings, 0 replies; 10+ messages in thread
From: Thomas Zimmermann @ 2019-01-25 11:02 UTC (permalink / raw)
To: christian.koenig, ray.huang, Jerry.Zhang, airlied, bskeggs,
linux-graphics-maintainer, thellstrom, dri-devel
Cc: Thomas Zimmermann
Both functions are obsolete and all calls have been replaced by
ttm_bo_get and ttm_bo_put.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
---
drivers/gpu/drm/ttm/ttm_bo.c | 9 ---------
include/drm/ttm/ttm_bo_api.h | 28 ----------------------------
2 files changed, 37 deletions(-)
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index 0ec08394e17a..f2bee7be42ac 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -676,15 +676,6 @@ void ttm_bo_put(struct ttm_buffer_object *bo)
}
EXPORT_SYMBOL(ttm_bo_put);
-void ttm_bo_unref(struct ttm_buffer_object **p_bo)
-{
- struct ttm_buffer_object *bo = *p_bo;
-
- *p_bo = NULL;
- ttm_bo_put(bo);
-}
-EXPORT_SYMBOL(ttm_bo_unref);
-
int ttm_bo_lock_delayed_workqueue(struct ttm_bo_device *bdev)
{
return cancel_delayed_work_sync(&bdev->wq);
diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h
index 3fc4854dce49..49d9cdfc58f2 100644
--- a/include/drm/ttm/ttm_bo_api.h
+++ b/include/drm/ttm/ttm_bo_api.h
@@ -295,23 +295,6 @@ static inline void ttm_bo_get(struct ttm_buffer_object *bo)
kref_get(&bo->kref);
}
-/**
- * ttm_bo_reference - reference a struct ttm_buffer_object
- *
- * @bo: The buffer object.
- *
- * Returns a refcounted pointer to a buffer object.
- *
- * This function is deprecated. Use @ttm_bo_get instead.
- */
-
-static inline struct ttm_buffer_object *
-ttm_bo_reference(struct ttm_buffer_object *bo)
-{
- ttm_bo_get(bo);
- return bo;
-}
-
/**
* ttm_bo_get_unless_zero - reference a struct ttm_buffer_object unless
* its refcount has already reached zero.
@@ -386,17 +369,6 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
*/
void ttm_bo_put(struct ttm_buffer_object *bo);
-/**
- * ttm_bo_unref
- *
- * @bo: The buffer object.
- *
- * Unreference and clear a pointer to a buffer object.
- *
- * This function is deprecated. Use @ttm_bo_put instead.
- */
-void ttm_bo_unref(struct ttm_buffer_object **bo);
-
/**
* ttm_bo_add_to_lru
*
--
2.20.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 0/7] Replace ttm_bo_{unref,reference} with ttm_bo_{get|put}
2019-01-25 11:02 [PATCH v2 0/7] Replace ttm_bo_{unref, reference} with ttm_bo_{get|put} Thomas Zimmermann
` (6 preceding siblings ...)
2019-01-25 11:02 ` [PATCH v2 7/7] drm/ttm: Remove ttm_bo_reference and ttm_bo_unref Thomas Zimmermann
@ 2019-01-25 11:29 ` Koenig, Christian
2019-01-28 3:20 ` Huang, Ray
7 siblings, 1 reply; 10+ messages in thread
From: Koenig, Christian @ 2019-01-25 11:29 UTC (permalink / raw)
To: Thomas Zimmermann, Huang, Ray, Zhang, Jerry, airlied@redhat.com,
bskeggs@redhat.com, linux-graphics-maintainer@vmware.com,
thellstrom@vmware.com, dri-devel@lists.freedesktop.org
Reviewed-by: Christian König <christian.koenig@amd.com>
If there are no objections over the weekend I'm going to push that into
upstream direction on monday.
Thanks for the work,
Christian.
Am 25.01.19 um 12:02 schrieb Thomas Zimmermann:
> This patchset cleans up the last remaining callers of ttm_bo_reference
> and ttm_bo_unref. Calls are replaced with ttm_bo_get and ttm_bo_put,
> which follow Linux' get/put semantics more closely.
>
> The most notable difference is that ttm_bo_get does not clear the supplied
> pointer's value. This behaviour is now located in the calling code for cases
> where it might be required.
>
> v2:
> * rebased onto drm-tip
>
> Thomas Zimmermann (7):
> drm/ast: Replace ttm_bo_unref with ttm_bo_put
> drm/nouveau: Replace ttm_bo_reference with ttm_bo_get
> drm/nouveau: Replace ttm_bo_unref with ttm_bo_put
> drm/vmwgfx: Replace ttm_bo_reference with ttm_bo_get
> drm/vmwgfx: Replace ttm_bo_unref with ttm_bo_put
> drm/mgag200: Replace ttm_bo_unref with ttm_bo_put
> drm/ttm: Remove ttm_bo_reference and ttm_bo_unref
>
> drivers/gpu/drm/ast/ast_main.c | 6 +----
> drivers/gpu/drm/mgag200/mgag200_main.c | 8 ++-----
> drivers/gpu/drm/nouveau/nouveau_bo.h | 12 ++++++----
> drivers/gpu/drm/nouveau/nouveau_gem.c | 3 +--
> drivers/gpu/drm/ttm/ttm_bo.c | 9 -------
> drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 11 ++++-----
> drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c | 11 +++++----
> drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 9 +++----
> drivers/gpu/drm/vmwgfx/vmwgfx_mob.c | 21 ++++++++++------
> drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 9 ++++---
> drivers/gpu/drm/vmwgfx/vmwgfx_validation.c | 6 +++--
> include/drm/ttm/ttm_bo_api.h | 28 ----------------------
> 12 files changed, 49 insertions(+), 84 deletions(-)
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH v2 0/7] Replace ttm_bo_{unref,reference} with ttm_bo_{get|put}
2019-01-25 11:29 ` [PATCH v2 0/7] Replace ttm_bo_{unref,reference} with ttm_bo_{get|put} Koenig, Christian
@ 2019-01-28 3:20 ` Huang, Ray
0 siblings, 0 replies; 10+ messages in thread
From: Huang, Ray @ 2019-01-28 3:20 UTC (permalink / raw)
To: Koenig, Christian, Thomas Zimmermann, Zhang, Jerry,
airlied@redhat.com, bskeggs@redhat.com,
linux-graphics-maintainer@vmware.com, thellstrom@vmware.com,
dri-devel@lists.freedesktop.org
Also looks for me. Thanks Thomas.
Reviewed-by: Huang Rui <ray.huang@amd.com>
> -----Original Message-----
> From: Koenig, Christian
> Sent: Friday, January 25, 2019 7:29 PM
> To: Thomas Zimmermann <tzimmermann@suse.de>; Huang, Ray
> <Ray.Huang@amd.com>; Zhang, Jerry <Jerry.Zhang@amd.com>;
> airlied@redhat.com; bskeggs@redhat.com; linux-graphics-
> maintainer@vmware.com; thellstrom@vmware.com; dri-
> devel@lists.freedesktop.org
> Subject: Re: [PATCH v2 0/7] Replace ttm_bo_{unref,reference} with
> ttm_bo_{get|put}
>
> Reviewed-by: Christian König <christian.koenig@amd.com>
>
> If there are no objections over the weekend I'm going to push that into
> upstream direction on monday.
>
> Thanks for the work,
> Christian.
>
> Am 25.01.19 um 12:02 schrieb Thomas Zimmermann:
> > This patchset cleans up the last remaining callers of ttm_bo_reference
> > and ttm_bo_unref. Calls are replaced with ttm_bo_get and ttm_bo_put,
> > which follow Linux' get/put semantics more closely.
> >
> > The most notable difference is that ttm_bo_get does not clear the
> > supplied pointer's value. This behaviour is now located in the calling
> > code for cases where it might be required.
> >
> > v2:
> > * rebased onto drm-tip
> >
> > Thomas Zimmermann (7):
> > drm/ast: Replace ttm_bo_unref with ttm_bo_put
> > drm/nouveau: Replace ttm_bo_reference with ttm_bo_get
> > drm/nouveau: Replace ttm_bo_unref with ttm_bo_put
> > drm/vmwgfx: Replace ttm_bo_reference with ttm_bo_get
> > drm/vmwgfx: Replace ttm_bo_unref with ttm_bo_put
> > drm/mgag200: Replace ttm_bo_unref with ttm_bo_put
> > drm/ttm: Remove ttm_bo_reference and ttm_bo_unref
> >
> > drivers/gpu/drm/ast/ast_main.c | 6 +----
> > drivers/gpu/drm/mgag200/mgag200_main.c | 8 ++-----
> > drivers/gpu/drm/nouveau/nouveau_bo.h | 12 ++++++----
> > drivers/gpu/drm/nouveau/nouveau_gem.c | 3 +--
> > drivers/gpu/drm/ttm/ttm_bo.c | 9 -------
> > drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 11 ++++-----
> > drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c | 11 +++++----
> > drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 9 +++----
> > drivers/gpu/drm/vmwgfx/vmwgfx_mob.c | 21 ++++++++++------
> > drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 9 ++++---
> > drivers/gpu/drm/vmwgfx/vmwgfx_validation.c | 6 +++--
> > include/drm/ttm/ttm_bo_api.h | 28 ----------------------
> > 12 files changed, 49 insertions(+), 84 deletions(-)
> >
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2019-01-28 3:21 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-25 11:02 [PATCH v2 0/7] Replace ttm_bo_{unref, reference} with ttm_bo_{get|put} Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 1/7] drm/ast: Replace ttm_bo_unref with ttm_bo_put Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 2/7] drm/nouveau: Replace ttm_bo_reference with ttm_bo_get Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 3/7] drm/nouveau: Replace ttm_bo_unref with ttm_bo_put Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 4/7] drm/vmwgfx: Replace ttm_bo_reference with ttm_bo_get Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 5/7] drm/vmwgfx: Replace ttm_bo_unref with ttm_bo_put Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 6/7] drm/mgag200: " Thomas Zimmermann
2019-01-25 11:02 ` [PATCH v2 7/7] drm/ttm: Remove ttm_bo_reference and ttm_bo_unref Thomas Zimmermann
2019-01-25 11:29 ` [PATCH v2 0/7] Replace ttm_bo_{unref,reference} with ttm_bo_{get|put} Koenig, Christian
2019-01-28 3:20 ` Huang, Ray
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox