[PATCH 1/8] drm/amdgpu: make VMID assignment more fair

Christian König ckoenig.leichtzumerken at gmail.com
Thu Feb 1 09:05:42 UTC 2018


Am 01.02.2018 um 09:55 schrieb Chunming Zhou:
>
>
> On 2018年02月01日 16:36, Christian König wrote:
>>> reserved vmid is independent on id_mgr
>> And that is exactly the reason why I want to have that here.
>>
>> If we don't fix this reserving a VMID would otherwise give the 
>> process an unfair advantage while scheduling jobs.
> ok, I see your mean, that's same why you always make idle vmid for 
> re-using vmid.
Yes, exactly.

> Adding this explain to patch commit is better.
Good point.

>
> Acked-by: Chunming Zhou <david1.zhou at amd.com> for this patch and patch 
> #7 then.

With the addition of the mutex can I get your rb or ab for patch #3 as 
well? Cause then it looks ready for commit.

Thanks,
Christian.

>
> Regards,
> David Zhou
>>
>> Regards,
>> Christian.
>>
>> Am 01.02.2018 um 05:42 schrieb Chunming Zhou:
>>> NAK, reserved vmid is independent on id_mgr, which is removed from 
>>> id mgr when process allocates reserved vmid.
>>>
>>>
>>> Regards,
>>>
>>> David Zhou
>>>
>>>
>>> On 2018年01月31日 23:47, Christian König wrote:
>>>> To guarantee fairness between processes grab reserved VMID only when
>>>> there is an idle one.
>>>>
>>>> Signed-off-by: Christian König <christian.koenig at amd.com>
>>>> ---
>>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c | 12 +++++++-----
>>>>   1 file changed, 7 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c 
>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
>>>> index c13cf7e79b2e..7a3d0de7425d 100644
>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
>>>> @@ -268,11 +268,6 @@ int amdgpu_vmid_grab(struct amdgpu_vm *vm, 
>>>> struct amdgpu_ring *ring,
>>>>       int r = 0;
>>>>         mutex_lock(&id_mgr->lock);
>>>> -    if (vm->reserved_vmid[vmhub]) {
>>>> -        r = amdgpu_vmid_grab_reserved_locked(vm, ring, sync, 
>>>> fence, job);
>>>> -        mutex_unlock(&id_mgr->lock);
>>>> -        return r;
>>>> -    }
>>>>       fences = kmalloc_array(sizeof(void *), id_mgr->num_ids, 
>>>> GFP_KERNEL);
>>>>       if (!fences) {
>>>>           mutex_unlock(&id_mgr->lock);
>>>> @@ -319,6 +314,13 @@ int amdgpu_vmid_grab(struct amdgpu_vm *vm, 
>>>> struct amdgpu_ring *ring,
>>>>       }
>>>>       kfree(fences);
>>>>   +    if (vm->reserved_vmid[vmhub]) {
>>>> +        r = amdgpu_vmid_grab_reserved_locked(vm, ring, sync,
>>>> +                             fence, job);
>>>> +        mutex_unlock(&id_mgr->lock);
>>>> +        return r;
>>>> +    }
>>>> +
>>>>       job->vm_needs_flush = vm->use_cpu_for_update;
>>>>       /* Check if we can use a VMID already assigned to this VM */
>>>>       list_for_each_entry_reverse(id, &id_mgr->ids_lru, list) {
>>>
>>
>
> _______________________________________________
> 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