drm/radeon/kms: free fence IB if it wasn't emited at IB free time
authorJerome Glisse <jglisse@redhat.com>
Thu, 18 Feb 2010 13:13:29 +0000 (13:13 +0000)
committerDave Airlie <airlied@redhat.com>
Fri, 19 Feb 2010 21:35:18 +0000 (07:35 +1000)
If at IB free time fence wasn't emited that means the IB wasn't
scheduled because an error occured somewhere, thus we can free
then fence and mark the IB as free.

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/radeon/radeon_ring.c

index 694799f6fac1e7fd75c60d79398216d34e249de2..6579eb4c1f287007a3f22179c4593db621d12228 100644 (file)
@@ -100,6 +100,8 @@ void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib)
        if (tmp == NULL) {
                return;
        }
+       if (!tmp->fence->emited)
+               radeon_fence_unref(&tmp->fence);
        mutex_lock(&rdev->ib_pool.mutex);
        tmp->free = true;
        mutex_unlock(&rdev->ib_pool.mutex);