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