diff options
| author | Jason Gunthorpe <jgg@mellanox.com> | 2019-11-12 16:22:29 -0400 | 
|---|---|---|
| committer | Jason Gunthorpe <jgg@mellanox.com> | 2019-11-23 19:56:45 -0400 | 
| commit | 81fa1af31b5d79047821def6abdcb97a735d8a52 (patch) | |
| tree | efeb1b45fcc3dc116ccfa41476bfb9bc93de7789 /drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |
| parent | 62914a99dee5ac51253a84e7d4a05c18f0c77535 (diff) | |
drm/amdgpu: Use mmu_interval_notifier instead of hmm_mirror
Convert the collision-retry lock around hmm_range_fault to use the one now
provided by the mmu_interval notifier.
Although this driver does not seem to use the collision retry lock that
hmm provides correctly, it can still be converted over to use the
mmu_interval_notifier api instead of hmm_mirror without too much trouble.
This also deletes another place where a driver is associating additional
data (struct amdgpu_mn) with a mmu_struct.
Link: https://lore.kernel.org/r/20191112202231.3856-13-jgg@ziepe.ca
Signed-off-by: Philip Yang <Philip.Yang@amd.com>
Reviewed-by: Philip Yang <Philip.Yang@amd.com>
Tested-by: Philip Yang <Philip.Yang@amd.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 14 | 
1 files changed, 6 insertions, 8 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index 82823d9a8ba8..22c989bca751 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c @@ -603,8 +603,6 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,  		e->tv.num_shared = 2;  	amdgpu_bo_list_get_list(p->bo_list, &p->validated); -	if (p->bo_list->first_userptr != p->bo_list->num_entries) -		p->mn = amdgpu_mn_get(p->adev, AMDGPU_MN_TYPE_GFX);  	INIT_LIST_HEAD(&duplicates);  	amdgpu_vm_get_pd_bo(&fpriv->vm, &p->validated, &p->vm_pd); @@ -1287,11 +1285,11 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,  	if (r)  		goto error_unlock; -	/* No memory allocation is allowed while holding the mn lock. -	 * p->mn is hold until amdgpu_cs_submit is finished and fence is added -	 * to BOs. +	/* No memory allocation is allowed while holding the notifier lock. +	 * The lock is held until amdgpu_cs_submit is finished and fence is +	 * added to BOs.  	 */ -	amdgpu_mn_lock(p->mn); +	mutex_lock(&p->adev->notifier_lock);  	/* If userptr are invalidated after amdgpu_cs_parser_bos(), return  	 * -EAGAIN, drmIoctl in libdrm will restart the amdgpu_cs_ioctl. @@ -1334,13 +1332,13 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,  	amdgpu_vm_move_to_lru_tail(p->adev, &fpriv->vm);  	ttm_eu_fence_buffer_objects(&p->ticket, &p->validated, p->fence); -	amdgpu_mn_unlock(p->mn); +	mutex_unlock(&p->adev->notifier_lock);  	return 0;  error_abort:  	drm_sched_job_cleanup(&job->base); -	amdgpu_mn_unlock(p->mn); +	mutex_unlock(&p->adev->notifier_lock);  error_unlock:  	amdgpu_job_free(job); | 
