Message ID | 20201020010319.1692445-2-airlied@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/ttm: get rid of bind/unbind | expand |
Am 20.10.20 um 03:03 schrieb Dave Airlie: > From: Dave Airlie <airlied@redhat.com> > > This just gives the driver control over some of the bind paths. > > 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 | 7 ++++++- > drivers/gpu/drm/nouveau/nouveau_bo.c | 10 +++++++--- > drivers/gpu/drm/radeon/radeon_ttm.c | 11 ++++++++--- > drivers/gpu/drm/ttm/ttm_bo_util.c | 1 - > 4 files changed, 21 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > index 91b20aa2294d..4af4891264e1 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > @@ -605,10 +605,15 @@ static int amdgpu_move_ram_vram(struct ttm_buffer_object *bo, bool evict, > } > > /* move/bind old memory to GTT space */ > - r = ttm_bo_move_to_new_tt_mem(bo, ctx, &tmp_mem); > + r = ttm_tt_populate(bo->bdev, bo->ttm, ctx); > + if (unlikely(r)) > + return r; > + > + r = amdgpu_ttm_backend_bind(bo->bdev, bo->ttm, &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); > diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c > index fec7a901865e..7e604340b780 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_bo.c > +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c > @@ -931,9 +931,13 @@ nouveau_bo_move_flips(struct ttm_buffer_object *bo, bool evict, > if (ret) > return ret; > > - ret = ttm_bo_move_to_new_tt_mem(bo, ctx, &tmp_reg); > - if (ret) > - goto out; > + ret = ttm_tt_populate(bo->bdev, bo->ttm, ctx); > + if (unlikely(ret != 0)) > + return ret; > + > + ret = nouveau_ttm_tt_bind(bo->bdev, bo->ttm, &tmp_reg); > + if (unlikely(ret != 0)) > + return ret; > > ttm_bo_assign_mem(bo, &tmp_reg); > ret = nouveau_bo_move_m2mf(bo, true, ctx, new_reg); > diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c > index ec713f0e55e5..24ef25665249 100644 > --- a/drivers/gpu/drm/radeon/radeon_ttm.c > +++ b/drivers/gpu/drm/radeon/radeon_ttm.c > @@ -279,10 +279,15 @@ static int radeon_move_ram_vram(struct ttm_buffer_object *bo, > if (unlikely(r)) { > return r; > } > - r = ttm_bo_move_to_new_tt_mem(bo, ctx, &tmp_mem); > - if (unlikely(r)) { > + > + r = ttm_tt_populate(bo->bdev, bo->ttm, ctx); > + if (unlikely(r)) > goto out_cleanup; > - } > + > + r = radeon_ttm_tt_bind(bo->bdev, bo->ttm, &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)) { > diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c > index e4bd381a8962..c8ca6694cc1c 100644 > --- a/drivers/gpu/drm/ttm/ttm_bo_util.c > +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c > @@ -64,7 +64,6 @@ int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo, > > return 0; > } > -EXPORT_SYMBOL(ttm_bo_move_to_new_tt_mem); > > int ttm_bo_move_to_system(struct ttm_buffer_object *bo, > struct ttm_operation_ctx *ctx)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index 91b20aa2294d..4af4891264e1 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c @@ -605,10 +605,15 @@ static int amdgpu_move_ram_vram(struct ttm_buffer_object *bo, bool evict, } /* move/bind old memory to GTT space */ - r = ttm_bo_move_to_new_tt_mem(bo, ctx, &tmp_mem); + r = ttm_tt_populate(bo->bdev, bo->ttm, ctx); + if (unlikely(r)) + return r; + + r = amdgpu_ttm_backend_bind(bo->bdev, bo->ttm, &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); diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c index fec7a901865e..7e604340b780 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bo.c +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c @@ -931,9 +931,13 @@ nouveau_bo_move_flips(struct ttm_buffer_object *bo, bool evict, if (ret) return ret; - ret = ttm_bo_move_to_new_tt_mem(bo, ctx, &tmp_reg); - if (ret) - goto out; + ret = ttm_tt_populate(bo->bdev, bo->ttm, ctx); + if (unlikely(ret != 0)) + return ret; + + ret = nouveau_ttm_tt_bind(bo->bdev, bo->ttm, &tmp_reg); + if (unlikely(ret != 0)) + return ret; ttm_bo_assign_mem(bo, &tmp_reg); ret = nouveau_bo_move_m2mf(bo, true, ctx, new_reg); diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c index ec713f0e55e5..24ef25665249 100644 --- a/drivers/gpu/drm/radeon/radeon_ttm.c +++ b/drivers/gpu/drm/radeon/radeon_ttm.c @@ -279,10 +279,15 @@ static int radeon_move_ram_vram(struct ttm_buffer_object *bo, if (unlikely(r)) { return r; } - r = ttm_bo_move_to_new_tt_mem(bo, ctx, &tmp_mem); - if (unlikely(r)) { + + r = ttm_tt_populate(bo->bdev, bo->ttm, ctx); + if (unlikely(r)) goto out_cleanup; - } + + r = radeon_ttm_tt_bind(bo->bdev, bo->ttm, &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)) { diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c index e4bd381a8962..c8ca6694cc1c 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_util.c +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c @@ -64,7 +64,6 @@ int ttm_bo_move_to_new_tt_mem(struct ttm_buffer_object *bo, return 0; } -EXPORT_SYMBOL(ttm_bo_move_to_new_tt_mem); int ttm_bo_move_to_system(struct ttm_buffer_object *bo, struct ttm_operation_ctx *ctx)