diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 15 | 
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c index a418df1b9422..e87eedcc0da9 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c @@ -63,6 +63,11 @@ retry:  			     flags, NULL, resv, 0, &bo);  	if (r) {  		if (r != -ERESTARTSYS) { +			if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) { +				flags &= ~AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED; +				goto retry; +			} +  			if (initial_domain == AMDGPU_GEM_DOMAIN_VRAM) {  				initial_domain |= AMDGPU_GEM_DOMAIN_GTT;  				goto retry; @@ -323,7 +328,7 @@ int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data,  		r = amdgpu_ttm_tt_get_user_pages(bo->tbo.ttm,  						 bo->tbo.ttm->pages);  		if (r) -			goto unlock_mmap_sem; +			goto release_object;  		r = amdgpu_bo_reserve(bo, true);  		if (r) @@ -348,9 +353,6 @@ int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data,  free_pages:  	release_pages(bo->tbo.ttm->pages, bo->tbo.ttm->num_pages); -unlock_mmap_sem: -	up_read(¤t->mm->mmap_sem); -  release_object:  	drm_gem_object_put_unlocked(gobj); @@ -556,9 +558,8 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,  	if (args->va_address < AMDGPU_VA_RESERVED_SIZE) {  		dev_err(&dev->pdev->dev, -			"va_address 0x%lX is in reserved area 0x%X\n", -			(unsigned long)args->va_address, -			AMDGPU_VA_RESERVED_SIZE); +			"va_address 0x%LX is in reserved area 0x%LX\n", +			args->va_address, AMDGPU_VA_RESERVED_SIZE);  		return -EINVAL;  	}  | 
