[PATCH] drm/amdgpu: fix placement flags in amdgpu_ttm_bind
Christian König
deathsimple at vodafone.de
Sat Sep 2 07:31:40 UTC 2017
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
More information about the amd-gfx
mailing list