[PATCH 3/8] drm/amdgpu: make VMID owner none atomic

Chunming Zhou zhoucm1 at amd.com
Thu Feb 1 05:44:36 UTC 2018



On 2018年01月31日 23:47, Christian König wrote:
> The variable is protected by the VMID mutex anyway.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c | 10 +++++-----
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ids.h |  2 +-
>   2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
> index fbe958f7cb5b..8374fe870e8c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
> @@ -267,7 +267,7 @@ static int amdgpu_vmid_grab_reserved_locked(struct amdgpu_vm *vm,
>   
>   	flushed  = id->flushed_updates;
>   	if ((amdgpu_vmid_had_gpu_reset(adev, id)) ||
> -	    (atomic64_read(&id->owner) != vm->entity.fence_context) ||
> +	    (id->owner != vm->entity.fence_context) ||
>   	    (job->vm_pd_addr != id->pd_gpu_addr) ||
>   	    (updates && (!flushed || updates->context != flushed->context ||
>   			dma_fence_is_later(updates, flushed))) ||
> @@ -296,7 +296,7 @@ static int amdgpu_vmid_grab_reserved_locked(struct amdgpu_vm *vm,
>   		id->flushed_updates = dma_fence_get(updates);
>   	}
>   	id->pd_gpu_addr = job->vm_pd_addr;
> -	atomic64_set(&id->owner, vm->entity.fence_context);
> +	id->owner = vm->entity.fence_context;
>   	job->vm_needs_flush = needs_flush;
>   	if (needs_flush) {
>   		dma_fence_put(id->last_flush);
> @@ -353,7 +353,7 @@ int amdgpu_vmid_grab(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
>   		if (amdgpu_vmid_had_gpu_reset(adev, id))
>   			continue;
>   
> -		if (atomic64_read(&id->owner) != vm->entity.fence_context)
> +		if (id->owner != vm->entity.fence_context)
>   			continue;
>   
>   		if (job->vm_pd_addr != id->pd_gpu_addr)
> @@ -402,7 +402,7 @@ int amdgpu_vmid_grab(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
>   	id->pd_gpu_addr = job->vm_pd_addr;
>   	dma_fence_put(id->flushed_updates);
>   	id->flushed_updates = dma_fence_get(updates);
> -	atomic64_set(&id->owner, vm->entity.fence_context);
> +	id->owner = vm->entity.fence_context;
>   
>   needs_flush:
>   	job->vm_needs_flush = true;
> @@ -482,7 +482,7 @@ void amdgpu_vmid_reset(struct amdgpu_device *adev, unsigned vmhub,
>   	struct amdgpu_vmid_mgr *id_mgr = &adev->vm_manager.id_mgr[vmhub];
>   	struct amdgpu_vmid *id = &id_mgr->ids[vmid];
>   
> -	atomic64_set(&id->owner, 0);
> +	id->owner = 0;
here is not protect by id_mgr mutex, you can make another patch to add 
mutex for this function.

Regards,
David Zhou
>   	id->gds_base = 0;
>   	id->gds_size = 0;
>   	id->gws_base = 0;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.h
> index 38f37c16fc5e..20d4eca6cd6a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.h
> @@ -43,7 +43,7 @@ struct amdgpu_vmid {
>   	struct list_head	list;
>   	struct amdgpu_sync	active;
>   	struct dma_fence	*last_flush;
> -	atomic64_t		owner;
> +	uint64_t		owner;
>   
>   	uint64_t		pd_gpu_addr;
>   	/* last flushed PD/PT update */



More information about the amd-gfx mailing list