Message ID | 1366129569-8059-1-git-send-email-alexdeucher@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 --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) {