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

Chunming Zhou zhoucm1 at amd.com
Thu Feb 1 04:42:01 UTC 2018


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



More information about the amd-gfx mailing list