Am 01.09.2017 um 21:58 schrieb Deucher, Alexander: >> -----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? Correct, the physical backing memory stays the same. The function just moves the TTM from one ttm_mem_reg structure to another and unbind/binds it in between. >> 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(). Correct as well, we just need to make sure the mem->placement flags are correct when the BO is unreserved. Christian. > > 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 > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx