diff mbox

drm/radeon: don't init gpuvm if accel is disabled (v2)

Message ID 1422545720-19456-1-git-send-email-alexander.deucher@amd.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alex Deucher Jan. 29, 2015, 3:35 p.m. UTC
If acceleration is disabled, it does not make sense
to init gpuvm since nothing will use it.  Moreover,
if radeon_vm_init() gets called it uses accel to try
and clear the pde tables, etc. which results in a bug.

v2: handle vm_fini as well

Bug:
https://bugs.freedesktop.org/show_bug.cgi?id=88786

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
---
 drivers/gpu/drm/radeon/radeon_kms.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

Comments

Michel Dänzer Jan. 30, 2015, 2:45 a.m. UTC | #1
On 30.01.2015 00:35, Alex Deucher wrote:
> If acceleration is disabled, it does not make sense
> to init gpuvm since nothing will use it.  Moreover,
> if radeon_vm_init() gets called it uses accel to try
> and clear the pde tables, etc. which results in a bug.
> 
> v2: handle vm_fini as well
> 
> Bug:
> https://bugs.freedesktop.org/show_bug.cgi?id=88786
> 
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> Cc: stable@vger.kernel.org

Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Christian König Jan. 30, 2015, 9:18 a.m. UTC | #2
Am 29.01.2015 um 16:35 schrieb Alex Deucher:
> If acceleration is disabled, it does not make sense
> to init gpuvm since nothing will use it.  Moreover,
> if radeon_vm_init() gets called it uses accel to try
> and clear the pde tables, etc. which results in a bug.
>
> v2: handle vm_fini as well
>
> Bug:
> https://bugs.freedesktop.org/show_bug.cgi?id=88786
>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> Cc: stable@vger.kernel.org

Reviewed-by: Christian König <christian.koenig@amd.com>

> ---
>   drivers/gpu/drm/radeon/radeon_kms.c | 16 ++++++++--------
>   1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
> index 3cf9c1f..686411e 100644
> --- a/drivers/gpu/drm/radeon/radeon_kms.c
> +++ b/drivers/gpu/drm/radeon/radeon_kms.c
> @@ -605,14 +605,14 @@ int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv)
>   			return -ENOMEM;
>   		}
>   
> -		vm = &fpriv->vm;
> -		r = radeon_vm_init(rdev, vm);
> -		if (r) {
> -			kfree(fpriv);
> -			return r;
> -		}
> -
>   		if (rdev->accel_working) {
> +			vm = &fpriv->vm;
> +			r = radeon_vm_init(rdev, vm);
> +			if (r) {
> +				kfree(fpriv);
> +				return r;
> +			}
> +
>   			r = radeon_bo_reserve(rdev->ring_tmp_bo.bo, false);
>   			if (r) {
>   				radeon_vm_fini(rdev, vm);
> @@ -668,9 +668,9 @@ void radeon_driver_postclose_kms(struct drm_device *dev,
>   					radeon_vm_bo_rmv(rdev, vm->ib_bo_va);
>   				radeon_bo_unreserve(rdev->ring_tmp_bo.bo);
>   			}
> +			radeon_vm_fini(rdev, vm);
>   		}
>   
> -		radeon_vm_fini(rdev, vm);
>   		kfree(fpriv);
>   		file_priv->driver_priv = NULL;
>   	}
diff mbox

Patch

diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
index 3cf9c1f..686411e 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -605,14 +605,14 @@  int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv)
 			return -ENOMEM;
 		}
 
-		vm = &fpriv->vm;
-		r = radeon_vm_init(rdev, vm);
-		if (r) {
-			kfree(fpriv);
-			return r;
-		}
-
 		if (rdev->accel_working) {
+			vm = &fpriv->vm;
+			r = radeon_vm_init(rdev, vm);
+			if (r) {
+				kfree(fpriv);
+				return r;
+			}
+
 			r = radeon_bo_reserve(rdev->ring_tmp_bo.bo, false);
 			if (r) {
 				radeon_vm_fini(rdev, vm);
@@ -668,9 +668,9 @@  void radeon_driver_postclose_kms(struct drm_device *dev,
 					radeon_vm_bo_rmv(rdev, vm->ib_bo_va);
 				radeon_bo_unreserve(rdev->ring_tmp_bo.bo);
 			}
+			radeon_vm_fini(rdev, vm);
 		}
 
-		radeon_vm_fini(rdev, vm);
 		kfree(fpriv);
 		file_priv->driver_priv = NULL;
 	}