[Intel-gfx] [PATCH 12/28] drm/amdgpu: use new iterator in amdgpu_ttm_bo_eviction_valuable

Christian König ckoenig.leichtzumerken at gmail.com
Tue Oct 19 11:36:26 UTC 2021


Am 13.10.21 um 16:07 schrieb Daniel Vetter:
> On Tue, Oct 05, 2021 at 01:37:26PM +0200, Christian König wrote:
>> Simplifying the code a bit.
>>
>> Signed-off-by: Christian König <christian.koenig at amd.com>
>> ---
>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 14 ++++----------
>>   1 file changed, 4 insertions(+), 10 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> index e8d70b6e6737..722e3c9e8882 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> @@ -1345,10 +1345,9 @@ static bool amdgpu_ttm_bo_eviction_valuable(struct ttm_buffer_object *bo,
>>   					    const struct ttm_place *place)
>>   {
>>   	unsigned long num_pages = bo->resource->num_pages;
>> +	struct dma_resv_iter resv_cursor;
>>   	struct amdgpu_res_cursor cursor;
>> -	struct dma_resv_list *flist;
>>   	struct dma_fence *f;
>> -	int i;
>>   
>>   	/* Swapout? */
>>   	if (bo->resource->mem_type == TTM_PL_SYSTEM)
>> @@ -1362,14 +1361,9 @@ static bool amdgpu_ttm_bo_eviction_valuable(struct ttm_buffer_object *bo,
>>   	 * If true, then return false as any KFD process needs all its BOs to
>>   	 * be resident to run successfully
>>   	 */
>> -	flist = dma_resv_shared_list(bo->base.resv);
>> -	if (flist) {
>> -		for (i = 0; i < flist->shared_count; ++i) {
>> -			f = rcu_dereference_protected(flist->shared[i],
>> -				dma_resv_held(bo->base.resv));
>> -			if (amdkfd_fence_check_mm(f, current->mm))
>> -				return false;
>> -		}
>> +	dma_resv_for_each_fence(&resv_cursor, bo->base.resv, true, f) {
> 							    ^false?
>
> At least I'm not seeing the code look at the exclusive fence here.

Yes, but that's correct. We need to look at all potential fences.

It's a design problem in KFD if you ask me, but that is a completely 
different topic.

Christian.

> -Daniel
>
>> +		if (amdkfd_fence_check_mm(f, current->mm))
>> +			return false;
>>   	}
>>   
>>   	switch (bo->resource->mem_type) {
>> -- 
>> 2.25.1
>>



More information about the Intel-gfx mailing list