Am 01.09.2017 um 21:58 schrieb Deucher, Alexander:
-----Original Message-----
From: amd-gfx [mailto:amd-gfx-boun...@lists.freedesktop.org] On Behalf
Of Felix Kuehling
Sent: Friday, September 01, 2017 3:18 PM
To: Christian König; amd-gfx@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.koe...@amd.com>

Otherwise we lose the NO_EVICT flag and can try to evict pinned BOs.

Signed-off-by: Christian König <christian.koe...@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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx


_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to