* [PATCH 0/5] ttm get rid of ttm_bo_move_ttm
@ 2020-10-19 7:13 Dave Airlie
2020-10-19 7:13 ` [PATCH 1/5] drm/ttm: refactor out common code to setup a new tt backed resource Dave Airlie
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Dave Airlie @ 2020-10-19 7:13 UTC (permalink / raw)
To: dri-devel; +Cc: christian.koenig, rscheidegger.oss
This function post removal of the caching stuff was doing 3 jobs,
moving non system old ttm to system, moving from system to a new TT
and assigning. Instead this series splits it into 3 and only calls
the necessary combination from the drivers.
This is just a cleaned up and rebased version of some patches I've posted
before, and should be easier to digest. (Ben's r-bs are probably enough
to land this, but I said I'd resend first).
Thanks,
Dave.
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/5] drm/ttm: refactor out common code to setup a new tt backed resource
2020-10-19 7:13 [PATCH 0/5] ttm get rid of ttm_bo_move_ttm Dave Airlie
@ 2020-10-19 7:13 ` Dave Airlie
2020-10-19 9:51 ` Christian König
2020-10-19 7:13 ` [PATCH 2/5] drm/ttm: split out the move to system from move ttm code Dave Airlie
` (3 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Dave Airlie @ 2020-10-19 7:13 UTC (permalink / raw)
To: dri-devel; +Cc: christian.koenig, rscheidegger.oss
From: Dave Airlie <airlied@redhat.com>
This factors out the code to setup non-system tt.
The same code was used twice in the move paths.
Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
---
drivers/gpu/drm/ttm/ttm_bo.c | 12 +++--------
drivers/gpu/drm/ttm/ttm_bo_util.c | 34 +++++++++++++++++++++----------
include/drm/ttm/ttm_bo_driver.h | 4 ++++
3 files changed, 30 insertions(+), 20 deletions(-)
diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index b97ed6ca8765..cbc74a320db2 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -252,15 +252,9 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo,
if (ret)
goto out_err;
- if (mem->mem_type != TTM_PL_SYSTEM) {
- ret = ttm_tt_populate(bdev, bo->ttm, ctx);
- if (ret)
- goto out_err;
-
- ret = ttm_bo_tt_bind(bo, mem);
- if (ret)
- goto out_err;
- }
+ ret = ttm_bo_move_to_new_tt_mem(bo, ctx, mem);
+ if (ret)
+ goto out_err;
}
if (bdev->driver->move_notify)
diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
index ed1114235b66..a36c615bdf24 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
@@ -45,11 +45,30 @@ struct ttm_transfer_obj {
struct ttm_buffer_object *bo;
};
+int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
+ struct ttm_operation_ctx *ctx,
+ struct ttm_resource *new_mem)
+{
+ int ret;
+
+ if (new_mem->mem_type == TTM_PL_SYSTEM)
+ return 0;
+
+ ret = ttm_tt_populate(bo->bdev, bo->ttm, ctx);
+ if (unlikely(ret != 0))
+ return ret;
+
+ ret = ttm_bo_tt_bind(bo, new_mem);
+ if (unlikely(ret != 0))
+ return ret;
+
+ return 0;
+}
+
int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
struct ttm_operation_ctx *ctx,
struct ttm_resource *new_mem)
{
- struct ttm_tt *ttm = bo->ttm;
struct ttm_resource *old_mem = &bo->mem;
int ret;
@@ -67,16 +86,9 @@ int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
old_mem->mem_type = TTM_PL_SYSTEM;
}
- if (new_mem->mem_type != TTM_PL_SYSTEM) {
-
- ret = ttm_tt_populate(bo->bdev, ttm, ctx);
- if (unlikely(ret != 0))
- return ret;
-
- ret = ttm_bo_tt_bind(bo, new_mem);
- if (unlikely(ret != 0))
- return ret;
- }
+ ret = ttm_bo_move_to_new_tt_mem(bo, ctx, new_mem);
+ if (unlikely(ret != 0))
+ return ret;
ttm_bo_assign_mem(bo, new_mem);
return 0;
diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
index 3dbc11eb6787..1f4d2b1febd0 100644
--- a/include/drm/ttm/ttm_bo_driver.h
+++ b/include/drm/ttm/ttm_bo_driver.h
@@ -593,6 +593,10 @@ int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
struct ttm_operation_ctx *ctx,
struct ttm_resource *new_mem);
+int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
+ struct ttm_operation_ctx *ctx,
+ struct ttm_resource *new_mem);
+
/**
* ttm_bo_move_memcpy
*
--
2.27.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/5] drm/ttm: split out the move to system from move ttm code
2020-10-19 7:13 [PATCH 0/5] ttm get rid of ttm_bo_move_ttm Dave Airlie
2020-10-19 7:13 ` [PATCH 1/5] drm/ttm: refactor out common code to setup a new tt backed resource Dave Airlie
@ 2020-10-19 7:13 ` Dave Airlie
2020-10-19 9:57 ` Christian König
2020-10-19 7:13 ` [PATCH 3/5] drm/ttm: use new move interface for known system->ttm moves Dave Airlie
` (2 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Dave Airlie @ 2020-10-19 7:13 UTC (permalink / raw)
To: dri-devel; +Cc: christian.koenig, rscheidegger.oss
From: Dave Airlie <airlied@redhat.com>
Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
---
drivers/gpu/drm/ttm/ttm_bo_util.c | 38 ++++++++++++++++++++-----------
1 file changed, 25 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
index a36c615bdf24..29726652fef7 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
@@ -65,6 +65,28 @@ int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
return 0;
}
+static int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
+ struct ttm_operation_ctx *ctx)
+{
+ struct ttm_resource *old_mem = &bo->mem;
+ int ret;
+
+ if (old_mem->mem_type == TTM_PL_SYSTEM)
+ return 0;
+
+ ret = ttm_bo_wait_ctx(bo, ctx);
+ if (unlikely(ret != 0)) {
+ if (ret != -ERESTARTSYS)
+ pr_err("Failed to expire sync object before unbinding TTM\n");
+ return ret;
+ }
+
+ ttm_bo_tt_unbind(bo);
+ ttm_resource_free(bo, &bo->mem);
+ old_mem->mem_type = TTM_PL_SYSTEM;
+ return 0;
+}
+
int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
struct ttm_operation_ctx *ctx,
struct ttm_resource *new_mem)
@@ -72,19 +94,9 @@ int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
struct ttm_resource *old_mem = &bo->mem;
int ret;
- if (old_mem->mem_type != TTM_PL_SYSTEM) {
- ret = ttm_bo_wait_ctx(bo, ctx);
-
- if (unlikely(ret != 0)) {
- if (ret != -ERESTARTSYS)
- pr_err("Failed to expire sync object before unbinding TTM\n");
- return ret;
- }
-
- ttm_bo_tt_unbind(bo);
- ttm_resource_free(bo, &bo->mem);
- old_mem->mem_type = TTM_PL_SYSTEM;
- }
+ ret = ttm_bo_move_old_to_system(bo, ctx);
+ if (unlikely(ret != 0))
+ return ret;
ret = ttm_bo_move_to_new_tt_mem(bo, ctx, new_mem);
if (unlikely(ret != 0))
--
2.27.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/5] drm/ttm: use new move interface for known system->ttm moves
2020-10-19 7:13 [PATCH 0/5] ttm get rid of ttm_bo_move_ttm Dave Airlie
2020-10-19 7:13 ` [PATCH 1/5] drm/ttm: refactor out common code to setup a new tt backed resource Dave Airlie
2020-10-19 7:13 ` [PATCH 2/5] drm/ttm: split out the move to system from move ttm code Dave Airlie
@ 2020-10-19 7:13 ` Dave Airlie
2020-10-19 9:58 ` Christian König
2020-10-19 7:13 ` [PATCH 4/5] drm/ttm: add move old to system to drivers Dave Airlie
2020-10-19 7:13 ` [PATCH 5/5] drm/ttm: drop ttm_bo_move_ttm wrapper Dave Airlie
4 siblings, 1 reply; 11+ messages in thread
From: Dave Airlie @ 2020-10-19 7:13 UTC (permalink / raw)
To: dri-devel; +Cc: christian.koenig, rscheidegger.oss
From: Dave Airlie <airlied@redhat.com>
In all 3 drivers there is a case where the driver knows the
bo is in SYSTEM so don't call the api that checks that.
Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 ++--
drivers/gpu/drm/nouveau/nouveau_bo.c | 3 ++-
drivers/gpu/drm/radeon/radeon_ttm.c | 3 ++-
drivers/gpu/drm/ttm/ttm_bo_util.c | 1 +
4 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 8cdec58b9106..f8c9d66d3ef7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -601,11 +601,11 @@ static int amdgpu_move_ram_vram(struct ttm_buffer_object *bo, bool evict,
}
/* move/bind old memory to GTT space */
- r = ttm_bo_move_ttm(bo, ctx, &tmp_mem);
+ r = ttm_bo_move_to_new_tt_mem(bo, ctx, &tmp_mem);
if (unlikely(r)) {
goto out_cleanup;
}
-
+ ttm_bo_assign_mem(bo, &tmp_mem);
/* copy to VRAM */
r = amdgpu_move_blit(bo, evict, new_mem, old_mem);
if (unlikely(r)) {
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
index 4ccb3329014b..63baa9367851 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
@@ -927,10 +927,11 @@ nouveau_bo_move_flips(struct ttm_buffer_object *bo, bool evict,
if (ret)
return ret;
- ret = ttm_bo_move_ttm(bo, ctx, &tmp_reg);
+ ret = ttm_bo_move_to_new_tt_mem(bo, ctx, &tmp_reg);
if (ret)
goto out;
+ ttm_bo_assign_mem(bo, &tmp_reg);
ret = nouveau_bo_move_m2mf(bo, true, ctx, new_reg);
if (ret)
goto out;
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index d6f42fbc81f4..9437d29248fd 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -275,10 +275,11 @@ static int radeon_move_ram_vram(struct ttm_buffer_object *bo,
if (unlikely(r)) {
return r;
}
- r = ttm_bo_move_ttm(bo, ctx, &tmp_mem);
+ r = ttm_bo_move_to_new_tt_mem(bo, ctx, &tmp_mem);
if (unlikely(r)) {
goto out_cleanup;
}
+ ttm_bo_assign_mem(bo, &tmp_mem);
r = radeon_move_blit(bo, true, new_mem, old_mem);
if (unlikely(r)) {
goto out_cleanup;
diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
index 29726652fef7..39e03d99a377 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
@@ -64,6 +64,7 @@ int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
return 0;
}
+EXPORT_SYMBOL(ttm_bo_move_to_new_tt_mem);
static int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
struct ttm_operation_ctx *ctx)
--
2.27.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/5] drm/ttm: add move old to system to drivers.
2020-10-19 7:13 [PATCH 0/5] ttm get rid of ttm_bo_move_ttm Dave Airlie
` (2 preceding siblings ...)
2020-10-19 7:13 ` [PATCH 3/5] drm/ttm: use new move interface for known system->ttm moves Dave Airlie
@ 2020-10-19 7:13 ` Dave Airlie
2020-10-19 10:00 ` Christian König
2020-10-19 7:13 ` [PATCH 5/5] drm/ttm: drop ttm_bo_move_ttm wrapper Dave Airlie
4 siblings, 1 reply; 11+ messages in thread
From: Dave Airlie @ 2020-10-19 7:13 UTC (permalink / raw)
To: dri-devel; +Cc: christian.koenig, rscheidegger.oss
From: Dave Airlie <airlied@redhat.com>
Uninline ttm_bo_move_ttm. Eventually want to unhook the unbind out.
Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 15 ++++++++++++---
drivers/gpu/drm/nouveau/nouveau_bo.c | 11 +++++++++--
drivers/gpu/drm/radeon/radeon_ttm.c | 15 ++++++++++++---
drivers/gpu/drm/ttm/ttm_bo_util.c | 5 +++--
drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c | 7 ++++++-
include/drm/ttm/ttm_bo_driver.h | 2 ++
6 files changed, 44 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index f8c9d66d3ef7..b052d3e6f635 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -562,7 +562,11 @@ static int amdgpu_move_vram_ram(struct ttm_buffer_object *bo, bool evict,
}
/* move BO (in tmp_mem) to new_mem */
- r = ttm_bo_move_ttm(bo, ctx, new_mem);
+ r = ttm_bo_move_old_to_system(bo, ctx);
+ if (unlikely(r))
+ goto out_cleanup;
+
+ ttm_bo_assign_mem(bo, new_mem);
out_cleanup:
ttm_resource_free(bo, &tmp_mem);
return r;
@@ -672,8 +676,13 @@ static int amdgpu_bo_move(struct ttm_buffer_object *bo, bool evict,
}
if (old_mem->mem_type == TTM_PL_TT &&
- new_mem->mem_type == TTM_PL_SYSTEM)
- return ttm_bo_move_ttm(bo, ctx, new_mem);
+ new_mem->mem_type == TTM_PL_SYSTEM) {
+ r = ttm_bo_move_old_to_system(bo, ctx);
+ if (r)
+ return r;
+ ttm_bo_assign_mem(bo, new_mem);
+ return 0;
+ }
if (old_mem->mem_type == AMDGPU_PL_GDS ||
old_mem->mem_type == AMDGPU_PL_GWS ||
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
index 63baa9367851..e7e83f00674e 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
@@ -897,7 +897,11 @@ nouveau_bo_move_flipd(struct ttm_buffer_object *bo, bool evict,
if (ret)
goto out;
- ret = ttm_bo_move_ttm(bo, ctx, new_reg);
+ ret = ttm_bo_move_old_to_system(bo, ctx);
+ if (ret)
+ goto out;
+
+ ttm_bo_assign_mem(bo, &tmp_reg);
out:
ttm_resource_free(bo, &tmp_reg);
return ret;
@@ -1048,7 +1052,10 @@ nouveau_bo_move(struct ttm_buffer_object *bo, bool evict,
if (old_reg->mem_type == TTM_PL_TT &&
new_reg->mem_type == TTM_PL_SYSTEM) {
- ret = ttm_bo_move_ttm(bo, ctx, new_reg);
+ ret = ttm_bo_move_old_to_system(bo, ctx);
+ if (ret)
+ return ret;
+ ttm_bo_assign_mem(bo, new_reg);
goto out;
}
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index 9437d29248fd..4274f5ea56e4 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -244,7 +244,11 @@ static int radeon_move_vram_ram(struct ttm_buffer_object *bo,
if (unlikely(r)) {
goto out_cleanup;
}
- r = ttm_bo_move_ttm(bo, ctx, new_mem);
+ r = ttm_bo_move_old_to_system(bo, ctx);
+ if (unlikely(r))
+ goto out_cleanup;
+
+ ttm_bo_assign_mem(bo, new_mem);
out_cleanup:
ttm_resource_free(bo, &tmp_mem);
return r;
@@ -319,9 +323,14 @@ static int radeon_bo_move(struct ttm_buffer_object *bo, bool evict,
}
if (old_mem->mem_type == TTM_PL_TT &&
- new_mem->mem_type == TTM_PL_SYSTEM)
- return ttm_bo_move_ttm(bo, ctx, new_mem);
+ new_mem->mem_type == TTM_PL_SYSTEM) {
+ r = ttm_bo_move_old_to_system(bo, ctx);
+ if (r)
+ return r;
+ ttm_bo_assign_mem(bo, new_mem);
+ return 0;
+ }
if (!rdev->ring[radeon_copy_ring_index(rdev)].ready ||
rdev->asic->copy.copy == NULL) {
/* use memcpy */
diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
index 39e03d99a377..1c1055a500cd 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
@@ -66,8 +66,8 @@ int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
}
EXPORT_SYMBOL(ttm_bo_move_to_new_tt_mem);
-static int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
- struct ttm_operation_ctx *ctx)
+int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
+ struct ttm_operation_ctx *ctx)
{
struct ttm_resource *old_mem = &bo->mem;
int ret;
@@ -87,6 +87,7 @@ static int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
old_mem->mem_type = TTM_PL_SYSTEM;
return 0;
}
+EXPORT_SYMBOL(ttm_bo_move_old_to_system);
int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
struct ttm_operation_ctx *ctx,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
index 112253246f08..b55b28b4faa2 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
@@ -735,13 +735,18 @@ static int vmw_move(struct ttm_buffer_object *bo,
{
struct ttm_resource_manager *old_man = ttm_manager_type(bo->bdev, bo->mem.mem_type);
struct ttm_resource_manager *new_man = ttm_manager_type(bo->bdev, new_mem->mem_type);
+ int ret;
if (old_man->use_tt && new_man->use_tt) {
if (bo->mem.mem_type == TTM_PL_SYSTEM) {
ttm_bo_assign_mem(bo, new_mem);
return 0;
}
- return ttm_bo_move_ttm(bo, ctx, new_mem);
+ ret = ttm_bo_move_old_to_system(bo, ctx);
+ if (ret)
+ return ret;
+ ttm_bo_assign_mem(bo, new_mem);
+ return 0;
} else {
return ttm_bo_move_memcpy(bo, ctx, new_mem);
}
diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
index 1f4d2b1febd0..4b341914858b 100644
--- a/include/drm/ttm/ttm_bo_driver.h
+++ b/include/drm/ttm/ttm_bo_driver.h
@@ -596,6 +596,8 @@ int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
struct ttm_operation_ctx *ctx,
struct ttm_resource *new_mem);
+int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
+ struct ttm_operation_ctx *ctx);
/**
* ttm_bo_move_memcpy
--
2.27.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 5/5] drm/ttm: drop ttm_bo_move_ttm wrapper
2020-10-19 7:13 [PATCH 0/5] ttm get rid of ttm_bo_move_ttm Dave Airlie
` (3 preceding siblings ...)
2020-10-19 7:13 ` [PATCH 4/5] drm/ttm: add move old to system to drivers Dave Airlie
@ 2020-10-19 7:13 ` Dave Airlie
2020-10-19 10:00 ` Christian König
4 siblings, 1 reply; 11+ messages in thread
From: Dave Airlie @ 2020-10-19 7:13 UTC (permalink / raw)
To: dri-devel; +Cc: christian.koenig, rscheidegger.oss
From: Dave Airlie <airlied@redhat.com>
The apis to move old/new are in place everywhere so this is no
longer needed.
---
drivers/gpu/drm/ttm/ttm_bo_util.c | 20 --------------------
include/drm/ttm/ttm_bo_driver.h | 22 ----------------------
2 files changed, 42 deletions(-)
diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
index 1c1055a500cd..a3132e8a4102 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_util.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
@@ -89,26 +89,6 @@ int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
}
EXPORT_SYMBOL(ttm_bo_move_old_to_system);
-int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
- struct ttm_operation_ctx *ctx,
- struct ttm_resource *new_mem)
-{
- struct ttm_resource *old_mem = &bo->mem;
- int ret;
-
- ret = ttm_bo_move_old_to_system(bo, ctx);
- if (unlikely(ret != 0))
- return ret;
-
- ret = ttm_bo_move_to_new_tt_mem(bo, ctx, new_mem);
- if (unlikely(ret != 0))
- return ret;
-
- ttm_bo_assign_mem(bo, new_mem);
- return 0;
-}
-EXPORT_SYMBOL(ttm_bo_move_ttm);
-
int ttm_mem_io_reserve(struct ttm_bo_device *bdev,
struct ttm_resource *mem)
{
diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
index 4b341914858b..2fbd9adc1645 100644
--- a/include/drm/ttm/ttm_bo_driver.h
+++ b/include/drm/ttm/ttm_bo_driver.h
@@ -566,32 +566,10 @@ static inline void ttm_bo_unreserve(struct ttm_buffer_object *bo)
/*
* ttm_bo_util.c
*/
-
int ttm_mem_io_reserve(struct ttm_bo_device *bdev,
struct ttm_resource *mem);
void ttm_mem_io_free(struct ttm_bo_device *bdev,
struct ttm_resource *mem);
-/**
- * ttm_bo_move_ttm
- *
- * @bo: A pointer to a struct ttm_buffer_object.
- * @interruptible: Sleep interruptible if waiting.
- * @no_wait_gpu: Return immediately if the GPU is busy.
- * @new_mem: struct ttm_resource indicating where to move.
- *
- * Optimized move function for a buffer object with both old and
- * new placement backed by a TTM. The function will, if successful,
- * free any old aperture space, and set (@new_mem)->mm_node to NULL,
- * and update the (@bo)->mem placement flags. If unsuccessful, the old
- * data remains untouched, and it's up to the caller to free the
- * memory space indicated by @new_mem.
- * Returns:
- * !0: Failure.
- */
-
-int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
- struct ttm_operation_ctx *ctx,
- struct ttm_resource *new_mem);
int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
struct ttm_operation_ctx *ctx,
--
2.27.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 1/5] drm/ttm: refactor out common code to setup a new tt backed resource
2020-10-19 7:13 ` [PATCH 1/5] drm/ttm: refactor out common code to setup a new tt backed resource Dave Airlie
@ 2020-10-19 9:51 ` Christian König
0 siblings, 0 replies; 11+ messages in thread
From: Christian König @ 2020-10-19 9:51 UTC (permalink / raw)
To: Dave Airlie, dri-devel; +Cc: rscheidegger.oss
Am 19.10.20 um 09:13 schrieb Dave Airlie:
> From: Dave Airlie <airlied@redhat.com>
>
> This factors out the code to setup non-system tt.
>
> The same code was used twice in the move paths.
>
> Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
> Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
> ---
> drivers/gpu/drm/ttm/ttm_bo.c | 12 +++--------
> drivers/gpu/drm/ttm/ttm_bo_util.c | 34 +++++++++++++++++++++----------
> include/drm/ttm/ttm_bo_driver.h | 4 ++++
> 3 files changed, 30 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index b97ed6ca8765..cbc74a320db2 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -252,15 +252,9 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo,
> if (ret)
> goto out_err;
>
> - if (mem->mem_type != TTM_PL_SYSTEM) {
> - ret = ttm_tt_populate(bdev, bo->ttm, ctx);
> - if (ret)
> - goto out_err;
> -
> - ret = ttm_bo_tt_bind(bo, mem);
> - if (ret)
> - goto out_err;
> - }
> + ret = ttm_bo_move_to_new_tt_mem(bo, ctx, mem);
> + if (ret)
> + goto out_err;
> }
>
> if (bdev->driver->move_notify)
> diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
> index ed1114235b66..a36c615bdf24 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo_util.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
> @@ -45,11 +45,30 @@ struct ttm_transfer_obj {
> struct ttm_buffer_object *bo;
> };
>
> +int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
> + struct ttm_operation_ctx *ctx,
> + struct ttm_resource *new_mem)
> +{
> + int ret;
> +
> + if (new_mem->mem_type == TTM_PL_SYSTEM)
> + return 0;
> +
> + ret = ttm_tt_populate(bo->bdev, bo->ttm, ctx);
> + if (unlikely(ret != 0))
> + return ret;
> +
> + ret = ttm_bo_tt_bind(bo, new_mem);
> + if (unlikely(ret != 0))
> + return ret;
> +
> + return 0;
> +}
> +
> int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
> struct ttm_operation_ctx *ctx,
> struct ttm_resource *new_mem)
> {
> - struct ttm_tt *ttm = bo->ttm;
> struct ttm_resource *old_mem = &bo->mem;
> int ret;
>
> @@ -67,16 +86,9 @@ int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
> old_mem->mem_type = TTM_PL_SYSTEM;
> }
>
> - if (new_mem->mem_type != TTM_PL_SYSTEM) {
> -
> - ret = ttm_tt_populate(bo->bdev, ttm, ctx);
> - if (unlikely(ret != 0))
> - return ret;
> -
> - ret = ttm_bo_tt_bind(bo, new_mem);
> - if (unlikely(ret != 0))
> - return ret;
> - }
> + ret = ttm_bo_move_to_new_tt_mem(bo, ctx, new_mem);
> + if (unlikely(ret != 0))
> + return ret;
>
> ttm_bo_assign_mem(bo, new_mem);
> return 0;
> diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
> index 3dbc11eb6787..1f4d2b1febd0 100644
> --- a/include/drm/ttm/ttm_bo_driver.h
> +++ b/include/drm/ttm/ttm_bo_driver.h
> @@ -593,6 +593,10 @@ int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
> struct ttm_operation_ctx *ctx,
> struct ttm_resource *new_mem);
>
> +int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
> + struct ttm_operation_ctx *ctx,
> + struct ttm_resource *new_mem);
> +
> /**
> * ttm_bo_move_memcpy
> *
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/5] drm/ttm: split out the move to system from move ttm code
2020-10-19 7:13 ` [PATCH 2/5] drm/ttm: split out the move to system from move ttm code Dave Airlie
@ 2020-10-19 9:57 ` Christian König
0 siblings, 0 replies; 11+ messages in thread
From: Christian König @ 2020-10-19 9:57 UTC (permalink / raw)
To: Dave Airlie, dri-devel; +Cc: rscheidegger.oss
Am 19.10.20 um 09:13 schrieb Dave Airlie:
> From: Dave Airlie <airlied@redhat.com>
>
> Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
> Signed-off-by: Dave Airlie <airlied@redhat.com>
Maybe just call it ...move_to_system(), but either way Reviewed-by:
Christian König <christian.koenig@amd.com>
> ---
> drivers/gpu/drm/ttm/ttm_bo_util.c | 38 ++++++++++++++++++++-----------
> 1 file changed, 25 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
> index a36c615bdf24..29726652fef7 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo_util.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
> @@ -65,6 +65,28 @@ int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
> return 0;
> }
>
> +static int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
> + struct ttm_operation_ctx *ctx)
> +{
> + struct ttm_resource *old_mem = &bo->mem;
> + int ret;
> +
> + if (old_mem->mem_type == TTM_PL_SYSTEM)
> + return 0;
> +
> + ret = ttm_bo_wait_ctx(bo, ctx);
> + if (unlikely(ret != 0)) {
> + if (ret != -ERESTARTSYS)
> + pr_err("Failed to expire sync object before unbinding TTM\n");
> + return ret;
> + }
> +
> + ttm_bo_tt_unbind(bo);
> + ttm_resource_free(bo, &bo->mem);
> + old_mem->mem_type = TTM_PL_SYSTEM;
> + return 0;
> +}
> +
> int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
> struct ttm_operation_ctx *ctx,
> struct ttm_resource *new_mem)
> @@ -72,19 +94,9 @@ int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
> struct ttm_resource *old_mem = &bo->mem;
> int ret;
>
> - if (old_mem->mem_type != TTM_PL_SYSTEM) {
> - ret = ttm_bo_wait_ctx(bo, ctx);
> -
> - if (unlikely(ret != 0)) {
> - if (ret != -ERESTARTSYS)
> - pr_err("Failed to expire sync object before unbinding TTM\n");
> - return ret;
> - }
> -
> - ttm_bo_tt_unbind(bo);
> - ttm_resource_free(bo, &bo->mem);
> - old_mem->mem_type = TTM_PL_SYSTEM;
> - }
> + ret = ttm_bo_move_old_to_system(bo, ctx);
> + if (unlikely(ret != 0))
> + return ret;
>
> ret = ttm_bo_move_to_new_tt_mem(bo, ctx, new_mem);
> if (unlikely(ret != 0))
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/5] drm/ttm: use new move interface for known system->ttm moves
2020-10-19 7:13 ` [PATCH 3/5] drm/ttm: use new move interface for known system->ttm moves Dave Airlie
@ 2020-10-19 9:58 ` Christian König
0 siblings, 0 replies; 11+ messages in thread
From: Christian König @ 2020-10-19 9:58 UTC (permalink / raw)
To: Dave Airlie, dri-devel; +Cc: rscheidegger.oss
Am 19.10.20 um 09:13 schrieb Dave Airlie:
> From: Dave Airlie <airlied@redhat.com>
>
> In all 3 drivers there is a case where the driver knows the
> bo is in SYSTEM so don't call the api that checks that.
>
> Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
> Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 ++--
> drivers/gpu/drm/nouveau/nouveau_bo.c | 3 ++-
> drivers/gpu/drm/radeon/radeon_ttm.c | 3 ++-
> drivers/gpu/drm/ttm/ttm_bo_util.c | 1 +
> 4 files changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 8cdec58b9106..f8c9d66d3ef7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -601,11 +601,11 @@ static int amdgpu_move_ram_vram(struct ttm_buffer_object *bo, bool evict,
> }
>
> /* move/bind old memory to GTT space */
> - r = ttm_bo_move_ttm(bo, ctx, &tmp_mem);
> + r = ttm_bo_move_to_new_tt_mem(bo, ctx, &tmp_mem);
> if (unlikely(r)) {
> goto out_cleanup;
> }
> -
> + ttm_bo_assign_mem(bo, &tmp_mem);
> /* copy to VRAM */
> r = amdgpu_move_blit(bo, evict, new_mem, old_mem);
> if (unlikely(r)) {
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
> index 4ccb3329014b..63baa9367851 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
> @@ -927,10 +927,11 @@ nouveau_bo_move_flips(struct ttm_buffer_object *bo, bool evict,
> if (ret)
> return ret;
>
> - ret = ttm_bo_move_ttm(bo, ctx, &tmp_reg);
> + ret = ttm_bo_move_to_new_tt_mem(bo, ctx, &tmp_reg);
> if (ret)
> goto out;
>
> + ttm_bo_assign_mem(bo, &tmp_reg);
> ret = nouveau_bo_move_m2mf(bo, true, ctx, new_reg);
> if (ret)
> goto out;
> diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
> index d6f42fbc81f4..9437d29248fd 100644
> --- a/drivers/gpu/drm/radeon/radeon_ttm.c
> +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
> @@ -275,10 +275,11 @@ static int radeon_move_ram_vram(struct ttm_buffer_object *bo,
> if (unlikely(r)) {
> return r;
> }
> - r = ttm_bo_move_ttm(bo, ctx, &tmp_mem);
> + r = ttm_bo_move_to_new_tt_mem(bo, ctx, &tmp_mem);
> if (unlikely(r)) {
> goto out_cleanup;
> }
> + ttm_bo_assign_mem(bo, &tmp_mem);
> r = radeon_move_blit(bo, true, new_mem, old_mem);
> if (unlikely(r)) {
> goto out_cleanup;
> diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
> index 29726652fef7..39e03d99a377 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo_util.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
> @@ -64,6 +64,7 @@ int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
>
> return 0;
> }
> +EXPORT_SYMBOL(ttm_bo_move_to_new_tt_mem);
>
> static int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
> struct ttm_operation_ctx *ctx)
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 4/5] drm/ttm: add move old to system to drivers.
2020-10-19 7:13 ` [PATCH 4/5] drm/ttm: add move old to system to drivers Dave Airlie
@ 2020-10-19 10:00 ` Christian König
0 siblings, 0 replies; 11+ messages in thread
From: Christian König @ 2020-10-19 10:00 UTC (permalink / raw)
To: Dave Airlie, dri-devel; +Cc: rscheidegger.oss
Am 19.10.20 um 09:13 schrieb Dave Airlie:
> From: Dave Airlie <airlied@redhat.com>
>
> Uninline ttm_bo_move_ttm. Eventually want to unhook the unbind out.
>
> Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
> Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 15 ++++++++++++---
> drivers/gpu/drm/nouveau/nouveau_bo.c | 11 +++++++++--
> drivers/gpu/drm/radeon/radeon_ttm.c | 15 ++++++++++++---
> drivers/gpu/drm/ttm/ttm_bo_util.c | 5 +++--
> drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c | 7 ++++++-
> include/drm/ttm/ttm_bo_driver.h | 2 ++
> 6 files changed, 44 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index f8c9d66d3ef7..b052d3e6f635 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -562,7 +562,11 @@ static int amdgpu_move_vram_ram(struct ttm_buffer_object *bo, bool evict,
> }
>
> /* move BO (in tmp_mem) to new_mem */
> - r = ttm_bo_move_ttm(bo, ctx, new_mem);
> + r = ttm_bo_move_old_to_system(bo, ctx);
> + if (unlikely(r))
> + goto out_cleanup;
> +
> + ttm_bo_assign_mem(bo, new_mem);
> out_cleanup:
> ttm_resource_free(bo, &tmp_mem);
> return r;
> @@ -672,8 +676,13 @@ static int amdgpu_bo_move(struct ttm_buffer_object *bo, bool evict,
> }
>
> if (old_mem->mem_type == TTM_PL_TT &&
> - new_mem->mem_type == TTM_PL_SYSTEM)
> - return ttm_bo_move_ttm(bo, ctx, new_mem);
> + new_mem->mem_type == TTM_PL_SYSTEM) {
> + r = ttm_bo_move_old_to_system(bo, ctx);
> + if (r)
> + return r;
> + ttm_bo_assign_mem(bo, new_mem);
> + return 0;
> + }
>
> if (old_mem->mem_type == AMDGPU_PL_GDS ||
> old_mem->mem_type == AMDGPU_PL_GWS ||
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
> index 63baa9367851..e7e83f00674e 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
> @@ -897,7 +897,11 @@ nouveau_bo_move_flipd(struct ttm_buffer_object *bo, bool evict,
> if (ret)
> goto out;
>
> - ret = ttm_bo_move_ttm(bo, ctx, new_reg);
> + ret = ttm_bo_move_old_to_system(bo, ctx);
> + if (ret)
> + goto out;
> +
> + ttm_bo_assign_mem(bo, &tmp_reg);
> out:
> ttm_resource_free(bo, &tmp_reg);
> return ret;
> @@ -1048,7 +1052,10 @@ nouveau_bo_move(struct ttm_buffer_object *bo, bool evict,
>
> if (old_reg->mem_type == TTM_PL_TT &&
> new_reg->mem_type == TTM_PL_SYSTEM) {
> - ret = ttm_bo_move_ttm(bo, ctx, new_reg);
> + ret = ttm_bo_move_old_to_system(bo, ctx);
> + if (ret)
> + return ret;
> + ttm_bo_assign_mem(bo, new_reg);
> goto out;
> }
>
> diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
> index 9437d29248fd..4274f5ea56e4 100644
> --- a/drivers/gpu/drm/radeon/radeon_ttm.c
> +++ b/drivers/gpu/drm/radeon/radeon_ttm.c
> @@ -244,7 +244,11 @@ static int radeon_move_vram_ram(struct ttm_buffer_object *bo,
> if (unlikely(r)) {
> goto out_cleanup;
> }
> - r = ttm_bo_move_ttm(bo, ctx, new_mem);
> + r = ttm_bo_move_old_to_system(bo, ctx);
> + if (unlikely(r))
> + goto out_cleanup;
> +
> + ttm_bo_assign_mem(bo, new_mem);
> out_cleanup:
> ttm_resource_free(bo, &tmp_mem);
> return r;
> @@ -319,9 +323,14 @@ static int radeon_bo_move(struct ttm_buffer_object *bo, bool evict,
> }
>
> if (old_mem->mem_type == TTM_PL_TT &&
> - new_mem->mem_type == TTM_PL_SYSTEM)
> - return ttm_bo_move_ttm(bo, ctx, new_mem);
> + new_mem->mem_type == TTM_PL_SYSTEM) {
> + r = ttm_bo_move_old_to_system(bo, ctx);
> + if (r)
> + return r;
>
> + ttm_bo_assign_mem(bo, new_mem);
> + return 0;
> + }
> if (!rdev->ring[radeon_copy_ring_index(rdev)].ready ||
> rdev->asic->copy.copy == NULL) {
> /* use memcpy */
> diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
> index 39e03d99a377..1c1055a500cd 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo_util.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
> @@ -66,8 +66,8 @@ int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
> }
> EXPORT_SYMBOL(ttm_bo_move_to_new_tt_mem);
>
> -static int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
> - struct ttm_operation_ctx *ctx)
> +int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
> + struct ttm_operation_ctx *ctx)
> {
> struct ttm_resource *old_mem = &bo->mem;
> int ret;
> @@ -87,6 +87,7 @@ static int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
> old_mem->mem_type = TTM_PL_SYSTEM;
> return 0;
> }
> +EXPORT_SYMBOL(ttm_bo_move_old_to_system);
>
> int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
> struct ttm_operation_ctx *ctx,
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
> index 112253246f08..b55b28b4faa2 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_buffer.c
> @@ -735,13 +735,18 @@ static int vmw_move(struct ttm_buffer_object *bo,
> {
> struct ttm_resource_manager *old_man = ttm_manager_type(bo->bdev, bo->mem.mem_type);
> struct ttm_resource_manager *new_man = ttm_manager_type(bo->bdev, new_mem->mem_type);
> + int ret;
>
> if (old_man->use_tt && new_man->use_tt) {
> if (bo->mem.mem_type == TTM_PL_SYSTEM) {
> ttm_bo_assign_mem(bo, new_mem);
> return 0;
> }
> - return ttm_bo_move_ttm(bo, ctx, new_mem);
> + ret = ttm_bo_move_old_to_system(bo, ctx);
> + if (ret)
> + return ret;
> + ttm_bo_assign_mem(bo, new_mem);
> + return 0;
> } else {
> return ttm_bo_move_memcpy(bo, ctx, new_mem);
> }
> diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
> index 1f4d2b1febd0..4b341914858b 100644
> --- a/include/drm/ttm/ttm_bo_driver.h
> +++ b/include/drm/ttm/ttm_bo_driver.h
> @@ -596,6 +596,8 @@ int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
> int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
> struct ttm_operation_ctx *ctx,
> struct ttm_resource *new_mem);
> +int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
> + struct ttm_operation_ctx *ctx);
>
> /**
> * ttm_bo_move_memcpy
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 5/5] drm/ttm: drop ttm_bo_move_ttm wrapper
2020-10-19 7:13 ` [PATCH 5/5] drm/ttm: drop ttm_bo_move_ttm wrapper Dave Airlie
@ 2020-10-19 10:00 ` Christian König
0 siblings, 0 replies; 11+ messages in thread
From: Christian König @ 2020-10-19 10:00 UTC (permalink / raw)
To: Dave Airlie, dri-devel; +Cc: rscheidegger.oss
Am 19.10.20 um 09:13 schrieb Dave Airlie:
> From: Dave Airlie <airlied@redhat.com>
>
> The apis to move old/new are in place everywhere so this is no
> longer needed.
Reviewed-by: Christian König <christian.koenig@amd.com>
> ---
> drivers/gpu/drm/ttm/ttm_bo_util.c | 20 --------------------
> include/drm/ttm/ttm_bo_driver.h | 22 ----------------------
> 2 files changed, 42 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c
> index 1c1055a500cd..a3132e8a4102 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo_util.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c
> @@ -89,26 +89,6 @@ int ttm_bo_move_old_to_system(struct ttm_buffer_object *bo,
> }
> EXPORT_SYMBOL(ttm_bo_move_old_to_system);
>
> -int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
> - struct ttm_operation_ctx *ctx,
> - struct ttm_resource *new_mem)
> -{
> - struct ttm_resource *old_mem = &bo->mem;
> - int ret;
> -
> - ret = ttm_bo_move_old_to_system(bo, ctx);
> - if (unlikely(ret != 0))
> - return ret;
> -
> - ret = ttm_bo_move_to_new_tt_mem(bo, ctx, new_mem);
> - if (unlikely(ret != 0))
> - return ret;
> -
> - ttm_bo_assign_mem(bo, new_mem);
> - return 0;
> -}
> -EXPORT_SYMBOL(ttm_bo_move_ttm);
> -
> int ttm_mem_io_reserve(struct ttm_bo_device *bdev,
> struct ttm_resource *mem)
> {
> diff --git a/include/drm/ttm/ttm_bo_driver.h b/include/drm/ttm/ttm_bo_driver.h
> index 4b341914858b..2fbd9adc1645 100644
> --- a/include/drm/ttm/ttm_bo_driver.h
> +++ b/include/drm/ttm/ttm_bo_driver.h
> @@ -566,32 +566,10 @@ static inline void ttm_bo_unreserve(struct ttm_buffer_object *bo)
> /*
> * ttm_bo_util.c
> */
> -
> int ttm_mem_io_reserve(struct ttm_bo_device *bdev,
> struct ttm_resource *mem);
> void ttm_mem_io_free(struct ttm_bo_device *bdev,
> struct ttm_resource *mem);
> -/**
> - * ttm_bo_move_ttm
> - *
> - * @bo: A pointer to a struct ttm_buffer_object.
> - * @interruptible: Sleep interruptible if waiting.
> - * @no_wait_gpu: Return immediately if the GPU is busy.
> - * @new_mem: struct ttm_resource indicating where to move.
> - *
> - * Optimized move function for a buffer object with both old and
> - * new placement backed by a TTM. The function will, if successful,
> - * free any old aperture space, and set (@new_mem)->mm_node to NULL,
> - * and update the (@bo)->mem placement flags. If unsuccessful, the old
> - * data remains untouched, and it's up to the caller to free the
> - * memory space indicated by @new_mem.
> - * Returns:
> - * !0: Failure.
> - */
> -
> -int ttm_bo_move_ttm(struct ttm_buffer_object *bo,
> - struct ttm_operation_ctx *ctx,
> - struct ttm_resource *new_mem);
>
> int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo,
> struct ttm_operation_ctx *ctx,
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2020-10-19 10:01 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-19 7:13 [PATCH 0/5] ttm get rid of ttm_bo_move_ttm Dave Airlie
2020-10-19 7:13 ` [PATCH 1/5] drm/ttm: refactor out common code to setup a new tt backed resource Dave Airlie
2020-10-19 9:51 ` Christian König
2020-10-19 7:13 ` [PATCH 2/5] drm/ttm: split out the move to system from move ttm code Dave Airlie
2020-10-19 9:57 ` Christian König
2020-10-19 7:13 ` [PATCH 3/5] drm/ttm: use new move interface for known system->ttm moves Dave Airlie
2020-10-19 9:58 ` Christian König
2020-10-19 7:13 ` [PATCH 4/5] drm/ttm: add move old to system to drivers Dave Airlie
2020-10-19 10:00 ` Christian König
2020-10-19 7:13 ` [PATCH 5/5] drm/ttm: drop ttm_bo_move_ttm wrapper Dave Airlie
2020-10-19 10:00 ` Christian König
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.