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 at amd.com> > Cc: stable at vger.kernel.org
Reviewed-by: Christian König <christian.koenig at 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; > }