> -----Original Message----- > From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf > Of Christian König > Sent: Thursday, October 26, 2017 12:06 PM > To: amd-gfx at lists.freedesktop.org > Subject: [PATCH 5/8] drm/amdgpu: don't use ttm_bo_move_ttm in > amdgpu_ttm_bind > > From: Christian König <christian.koenig at amd.com> > > Just unbind and rebind to force updates of the GART space. > > This prevents forcing the BO to be idle. Is there a chance something could change like the caching on a rebind that we need to account for? Alex > > Signed-off-by: Christian König <christian.koenig at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 24 ++++++++++++++++++- > ----- > 1 file changed, 18 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > index 3045701..b40d2f3 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c > @@ -917,14 +917,26 @@ int amdgpu_ttm_bind(struct ttm_buffer_object > *bo, struct ttm_mem_reg *bo_mem) > if (unlikely(r)) > return r; > > - r = ttm_bo_move_ttm(bo, true, false, &tmp); > - if (unlikely(r)) > + if (ttm->state == tt_bound) { > + r = ttm->func->unbind(ttm); > + if (unlikely(r)) > + return r; > + > + ttm->state = tt_unbound; > + } > + > + r = ttm_tt_bind(ttm, &tmp); > + if (unlikely(r)) { > ttm_bo_mem_put(bo, &tmp); > - else > - bo->offset = (bo->mem.start << PAGE_SHIFT) + > - bo->bdev->man[bo->mem.mem_type].gpu_offset; > + return r; > + } > > - return r; > + ttm_bo_mem_put(bo, bo_mem); > + bo->mem = tmp; > + bo->offset = (bo->mem.start << PAGE_SHIFT) + > + bo->bdev->man[bo->mem.mem_type].gpu_offset; > + > + return 0; > } > > int amdgpu_ttm_recover_gart(struct amdgpu_device *adev) > -- > 2.7.4 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx