diff mbox

drm/radeon: Always flush the VM

Message ID 1366129569-8059-1-git-send-email-alexdeucher@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Alex Deucher April 16, 2013, 4:26 p.m. UTC
From: Jerome Glisse <jglisse@redhat.com>

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: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
---
 drivers/gpu/drm/radeon/radeon_ring.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

Comments

Christian König April 16, 2013, 5:45 p.m. UTC | #1
Am 16.04.2013 18:26, schrieb alexdeucher@gmail.com:
> From: Jerome Glisse <jglisse@redhat.com>
>
> 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: Alex Deucher <alexander.deucher@amd.com>

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

> Cc: stable@vger.kernel.org
> ---
>   drivers/gpu/drm/radeon/radeon_ring.c |    3 ++-
>   1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c
> index 31e47d8..e17faa7 100644
> --- a/drivers/gpu/drm/radeon/radeon_ring.c
> +++ b/drivers/gpu/drm/radeon/radeon_ring.c
> @@ -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) {
diff mbox

Patch

diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c
index 31e47d8..e17faa7 100644
--- a/drivers/gpu/drm/radeon/radeon_ring.c
+++ b/drivers/gpu/drm/radeon/radeon_ring.c
@@ -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) {