|
@@ -77,6 +77,7 @@ struct drm_gem_object *radeon_gem_prime_import_sg_table(struct drm_device *dev,
|
|
|
list_add_tail(&bo->list, &rdev->gem.objects);
|
|
|
mutex_unlock(&rdev->gem.mutex);
|
|
|
|
|
|
+ bo->prime_shared_count = 1;
|
|
|
return &bo->gem_base;
|
|
|
}
|
|
|
|
|
@@ -91,6 +92,9 @@ int radeon_gem_prime_pin(struct drm_gem_object *obj)
|
|
|
|
|
|
/* pin buffer into GTT */
|
|
|
ret = radeon_bo_pin(bo, RADEON_GEM_DOMAIN_GTT, NULL);
|
|
|
+ if (likely(ret == 0))
|
|
|
+ bo->prime_shared_count++;
|
|
|
+
|
|
|
radeon_bo_unreserve(bo);
|
|
|
return ret;
|
|
|
}
|
|
@@ -105,6 +109,8 @@ void radeon_gem_prime_unpin(struct drm_gem_object *obj)
|
|
|
return;
|
|
|
|
|
|
radeon_bo_unpin(bo);
|
|
|
+ if (bo->prime_shared_count)
|
|
|
+ bo->prime_shared_count--;
|
|
|
radeon_bo_unreserve(bo);
|
|
|
}
|
|
|
|