diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c | 11 | 
1 files changed, 11 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c index 76efd5f8950f..d3e4203f6217 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c @@ -34,6 +34,7 @@  #include <asm/set_memory.h>  #endif  #include "amdgpu.h" +#include <drm/drm_drv.h>  /*   * GART @@ -230,12 +231,16 @@ int amdgpu_gart_unbind(struct amdgpu_device *adev, uint64_t offset,  	u64 page_base;  	/* Starting from VEGA10, system bit must be 0 to mean invalid. */  	uint64_t flags = 0; +	int idx;  	if (!adev->gart.ready) {  		WARN(1, "trying to unbind memory from uninitialized GART !\n");  		return -EINVAL;  	} +	if (!drm_dev_enter(adev_to_drm(adev), &idx)) +		return 0; +  	t = offset / AMDGPU_GPU_PAGE_SIZE;  	p = t / AMDGPU_GPU_PAGES_IN_CPU_PAGE;  	for (i = 0; i < pages; i++, p++) { @@ -254,6 +259,7 @@ int amdgpu_gart_unbind(struct amdgpu_device *adev, uint64_t offset,  	for (i = 0; i < adev->num_vmhubs; i++)  		amdgpu_gmc_flush_gpu_tlb(adev, 0, i, 0); +	drm_dev_exit(idx);  	return 0;  } @@ -276,12 +282,16 @@ int amdgpu_gart_map(struct amdgpu_device *adev, uint64_t offset,  {  	uint64_t page_base;  	unsigned i, j, t; +	int idx;  	if (!adev->gart.ready) {  		WARN(1, "trying to bind memory to uninitialized GART !\n");  		return -EINVAL;  	} +	if (!drm_dev_enter(adev_to_drm(adev), &idx)) +		return 0; +  	t = offset / AMDGPU_GPU_PAGE_SIZE;  	for (i = 0; i < pages; i++) { @@ -291,6 +301,7 @@ int amdgpu_gart_map(struct amdgpu_device *adev, uint64_t offset,  			page_base += AMDGPU_GPU_PAGE_SIZE;  		}  	} +	drm_dev_exit(idx);  	return 0;  } |