[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