[PATCH] drm/amdgpu: fix placement flags in amdgpu_ttm_bind

Deucher, Alexander Alexander.Deucher at amd.com
Fri Sep 1 19:58:46 UTC 2017


> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Felix Kuehling
> Sent: Friday, September 01, 2017 3:18 PM
> To: Christian König; amd-gfx at lists.freedesktop.org
> Cc: Russell, Kent
> Subject: Re: [PATCH] drm/amdgpu: fix placement flags in amdgpu_ttm_bind
> 
> Thanks for the fix. I still don't quite understand how this works. We
> still call ttm_bo_move_ttm for a pinned BO. Maybe the function name is
> misleading. As I understand it, this doesn't move the memory physically.
> It just changes the GART address mapping? All that's needed is
> maintaining the flags to ensure that the pinned BO stays off the LRU
> lists and won't get swapped out?

It's been a while since I traced through this, but as long as the flag is retained, it will be checked in ttm_bo_add_to_lru() and if set the bo won't be added to the LRU list.  ttm_bo_move_ttm() is always called via amdgpu_ttm_bind() as part of the initial pinning process in amdgpu_bo_pin_restricted().

Alex

> 
> Thanks,
>   Felix
> 
> 
> On 2017-09-01 03:24 AM, Christian König wrote:
> > From: Christian König <christian.koenig at amd.com>
> >
> > Otherwise we lose the NO_EVICT flag and can try to evict pinned BOs.
> >
> > Signed-off-by: Christian König <christian.koenig at amd.com>
> > ---
> >  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > index e9a0518..ac14c18 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > @@ -819,7 +819,7 @@ int amdgpu_ttm_bind(struct ttm_buffer_object
> *bo, struct ttm_mem_reg *bo_mem)
> >  	placement.busy_placement = &placements;
> >  	placements.fpfn = 0;
> >  	placements.lpfn = adev->mc.gart_size >> PAGE_SHIFT;
> > -	placements.flags = TTM_PL_MASK_CACHING | TTM_PL_FLAG_TT;
> > +	placements.flags = bo->mem.placement | TTM_PL_FLAG_TT;
> >
> >  	r = ttm_bo_mem_space(bo, &placement, &tmp, true, false);
> >  	if (unlikely(r))
> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list