Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0d16d299 authored by Christopher James Halse Rogers's avatar Christopher James Halse Rogers Committed by Alex Deucher
Browse files

drm/radeon: Maintain prime import/export refcount for BOs

parent 803d89ad
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -499,6 +499,7 @@ struct radeon_bo {
	u32				tiling_flags;
	u32				pitch;
	int				surface_reg;
	unsigned			prime_shared_count;
	/* list of all virtual address to which this bo
	 * is associated to
	 */
+6 −0
Original line number Diff line number Diff line
@@ -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);
}