On 4/29/25 11:12, Liang, Prike wrote:
>>> +   if (!IS_ERR_OR_NULL(fpriv->evf_mgr.ev_fence)) {
>>
>> Please don't use ERR_PTR functions on members.
>>
>>> +           r = amdgpu_eviction_fence_attach(&fpriv->evf_mgr, abo);
>>> +           if (r) {
>>> +                   DRM_DEBUG_DRIVER("Failed to attach eviction fence to
>> BO\n");
>>> +                   amdgpu_bo_unreserve(abo);
>>> +                   return r;
>>> +           }
>>
>> We should always have a stub fence in fpriv->evf_mgr.ev_fence, so those 
>> checks
>> are unnecessary.
> I checked that when enabling the kq and uq at the same time, and before 
> schedule any user queue task then the eviction fence is NULL.

Yeah, but that case is handled by amdgpu_eviction_fence_attach() and *NOT* here.

You are completely messing up the logic with that stuff here.

Regards,
Christian.


> Based on the current design, the eviction fence only be created at the user 
> queue BOs restored time.
> 
>> Regards,
>> Christian.
>>
>>>     }
>>>
>>>     amdgpu_bo_unreserve(abo);
>>> @@ -362,7 +365,8 @@ static void amdgpu_gem_object_close(struct
>> drm_gem_object *obj,
>>>                     goto out_unlock;
>>>     }
>>>
>>> -   if (!amdgpu_vm_is_bo_always_valid(vm, bo))
>>> +   if (!amdgpu_vm_is_bo_always_valid(vm, bo) &&
>>> +                   !IS_ERR_OR_NULL(fpriv->evf_mgr.ev_fence))
>>>             amdgpu_eviction_fence_detach(&fpriv->evf_mgr, bo);
>>>
>>>     bo_va = amdgpu_vm_bo_find(vm, bo);
> 

Reply via email to