drm/radeon: Always flush the VM
authorJerome Glisse <jglisse@redhat.com>
Tue, 16 Apr 2013 16:20:15 +0000 (12:20 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 16 Apr 2013 20:15:28 +0000 (16:15 -0400)
This is slightly cleaned up version of Jerome's patch.
There seems to be an issue tracking the last flush of
the VM which results in hangs in certain cases when
VM is used.  For now just flush the VM for every IB.

Fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=62959
https://bugs.freedesktop.org/show_bug.cgi?id=62997

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
drivers/gpu/drm/radeon/radeon_ring.c

index 31e47d898c464f319722471f2b59f6622eae0ebc..e17faa7cf732ee436e66f99fc0e3ac69c6798eab 100644 (file)
@@ -180,7 +180,8 @@ int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib,
                radeon_semaphore_free(rdev, &ib->semaphore, NULL);
        }
        /* if we can't remember our last VM flush then flush now! */
-       if (ib->vm && !ib->vm->last_flush) {
+       /* XXX figure out why we have to flush for every IB */
+       if (ib->vm /*&& !ib->vm->last_flush*/) {
                radeon_ring_vm_flush(rdev, ib->ring, ib->vm);
        }
        if (const_ib) {