Re: [PATCH 12/28] drm/amdgpu: use new iterator in amdgpu_ttm_bo_eviction_valuable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 2021-10-19 um 7:36 a.m. schrieb Christian König:
> 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@xxxxxxx>
>>> ---
>>>   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.

amdkfd_fence_check_mm is only meaningful for KFD eviction fences, and
they are always added as shared fences. I think setting all_fences =
false would return only the exclusive fence.

Regards,
  Felix


>
> 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
>>>
>



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux