diff mbox

drm/radeon: do not try to uselessly update virtual memory pagetable

Message ID 1370536877-2440-1-git-send-email-j.glisse@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jerome Glisse June 6, 2013, 4:41 p.m. UTC
From: Jerome Glisse <jglisse@redhat.com>

If a buffer is never bind to a virtual memory pagetable than don't try
to unbind it. Only drawback is that we don't update the pagetable when
unbinding the ib pool buffer which is fine because it only happens at
suspend or module unload/shutdown.

Cc: stable@kernel.org
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
---
 drivers/gpu/drm/radeon/radeon_gart.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Alex Deucher June 6, 2013, 6:12 p.m. UTC | #1
On Thu, Jun 6, 2013 at 12:41 PM,  <j.glisse@gmail.com> wrote:
> From: Jerome Glisse <jglisse@redhat.com>
>
> If a buffer is never bind to a virtual memory pagetable than don't try
> to unbind it. Only drawback is that we don't update the pagetable when
> unbinding the ib pool buffer which is fine because it only happens at
> suspend or module unload/shutdown.

Applied with a note about fixing spurious messages.

Alex

>
> Cc: stable@kernel.org
> Signed-off-by: Jerome Glisse <jglisse@redhat.com>
> ---
>  drivers/gpu/drm/radeon/radeon_gart.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c
> index 6e24f84..daf9710 100644
> --- a/drivers/gpu/drm/radeon/radeon_gart.c
> +++ b/drivers/gpu/drm/radeon/radeon_gart.c
> @@ -1209,11 +1209,13 @@ int radeon_vm_bo_update_pte(struct radeon_device *rdev,
>  int radeon_vm_bo_rmv(struct radeon_device *rdev,
>                      struct radeon_bo_va *bo_va)
>  {
> -       int r;
> +       int r = 0;
>
>         mutex_lock(&rdev->vm_manager.lock);
>         mutex_lock(&bo_va->vm->mutex);
> -       r = radeon_vm_bo_update_pte(rdev, bo_va->vm, bo_va->bo, NULL);
> +       if (bo_va->soffset) {
> +               r = radeon_vm_bo_update_pte(rdev, bo_va->vm, bo_va->bo, NULL);
> +       }
>         mutex_unlock(&rdev->vm_manager.lock);
>         list_del(&bo_va->vm_list);
>         mutex_unlock(&bo_va->vm->mutex);
> --
> 1.7.11.7
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox

Patch

diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c
index 6e24f84..daf9710 100644
--- a/drivers/gpu/drm/radeon/radeon_gart.c
+++ b/drivers/gpu/drm/radeon/radeon_gart.c
@@ -1209,11 +1209,13 @@  int radeon_vm_bo_update_pte(struct radeon_device *rdev,
 int radeon_vm_bo_rmv(struct radeon_device *rdev,
 		     struct radeon_bo_va *bo_va)
 {
-	int r;
+	int r = 0;
 
 	mutex_lock(&rdev->vm_manager.lock);
 	mutex_lock(&bo_va->vm->mutex);
-	r = radeon_vm_bo_update_pte(rdev, bo_va->vm, bo_va->bo, NULL);
+	if (bo_va->soffset) {
+		r = radeon_vm_bo_update_pte(rdev, bo_va->vm, bo_va->bo, NULL);
+	}
 	mutex_unlock(&rdev->vm_manager.lock);
 	list_del(&bo_va->vm_list);
 	mutex_unlock(&bo_va->vm->mutex);