Commit a32ba6bd authored by Christian König's avatar Christian König
Browse files

drm/radeon: remove resource accounting v2

parent d5c6f647
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -2462,8 +2462,6 @@ struct radeon_device {
	struct radeon_vm_manager	vm_manager;
	struct mutex			gpu_clock_mutex;
	/* memory stats */
	atomic64_t			vram_usage;
	atomic64_t			gtt_usage;
	atomic64_t			num_bytes_moved;
	atomic_t			gpu_reset_counter;
	/* ACPI interface */
+5 −2
Original line number Diff line number Diff line
@@ -241,6 +241,7 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
	struct drm_radeon_info *info = data;
	struct radeon_mode_info *minfo = &rdev->mode_info;
	uint32_t *value, value_tmp, *value_ptr, value_size;
	struct ttm_resource_manager *man;
	uint64_t value64;
	struct drm_crtc *crtc;
	int i, found;
@@ -550,12 +551,14 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
	case RADEON_INFO_VRAM_USAGE:
		value = (uint32_t*)&value64;
		value_size = sizeof(uint64_t);
		value64 = atomic64_read(&rdev->vram_usage);
		man = ttm_manager_type(&rdev->mman.bdev, TTM_PL_VRAM);
		value64 = ttm_resource_manager_usage(man);
		break;
	case RADEON_INFO_GTT_USAGE:
		value = (uint32_t*)&value64;
		value_size = sizeof(uint64_t);
		value64 = atomic64_read(&rdev->gtt_usage);
		man = ttm_manager_type(&rdev->mman.bdev, TTM_PL_TT);
		value64 = ttm_resource_manager_usage(man);
		break;
	case RADEON_INFO_ACTIVE_CU_COUNT:
		if (rdev->family >= CHIP_BONAIRE)
+4 −29
Original line number Diff line number Diff line
@@ -49,27 +49,6 @@ static void radeon_bo_clear_surface_reg(struct radeon_bo *bo);
 * function are calling it.
 */

static void radeon_update_memory_usage(struct ttm_buffer_object *bo,
				       unsigned int mem_type, int sign)
{
	struct radeon_device *rdev = radeon_get_rdev(bo->bdev);

	switch (mem_type) {
	case TTM_PL_TT:
		if (sign > 0)
			atomic64_add(bo->base.size, &rdev->gtt_usage);
		else
			atomic64_sub(bo->base.size, &rdev->gtt_usage);
		break;
	case TTM_PL_VRAM:
		if (sign > 0)
			atomic64_add(bo->base.size, &rdev->vram_usage);
		else
			atomic64_sub(bo->base.size, &rdev->vram_usage);
		break;
	}
}

static void radeon_ttm_bo_destroy(struct ttm_buffer_object *tbo)
{
	struct radeon_bo *bo;
@@ -434,7 +413,9 @@ void radeon_bo_fini(struct radeon_device *rdev)
static u64 radeon_bo_get_threshold_for_moves(struct radeon_device *rdev)
{
	u64 real_vram_size = rdev->mc.real_vram_size;
	u64 vram_usage = atomic64_read(&rdev->vram_usage);
	struct ttm_resource_manager *man =
		ttm_manager_type(&rdev->mman.bdev, TTM_PL_VRAM);
	u64 vram_usage = ttm_resource_manager_usage(man);

	/* This function is based on the current VRAM usage.
	 *
@@ -724,16 +705,10 @@ int radeon_bo_check_tiling(struct radeon_bo *bo, bool has_moved,
	return radeon_bo_get_surface_reg(bo);
}

void radeon_bo_move_notify(struct ttm_buffer_object *bo,
			   unsigned int old_type,
			   struct ttm_resource *new_mem)
void radeon_bo_move_notify(struct ttm_buffer_object *bo)
{
	struct radeon_bo *rbo;

	radeon_update_memory_usage(bo, old_type, -1);
	if (new_mem)
		radeon_update_memory_usage(bo, new_mem->mem_type, 1);

	if (!radeon_ttm_bo_is_radeon_bo(bo))
		return;

+1 −3
Original line number Diff line number Diff line
@@ -160,9 +160,7 @@ extern void radeon_bo_get_tiling_flags(struct radeon_bo *bo,
				u32 *tiling_flags, u32 *pitch);
extern int radeon_bo_check_tiling(struct radeon_bo *bo, bool has_moved,
				bool force_drop);
extern void radeon_bo_move_notify(struct ttm_buffer_object *bo,
				  unsigned int old_type,
				  struct ttm_resource *new_mem);
extern void radeon_bo_move_notify(struct ttm_buffer_object *bo);
extern vm_fault_t radeon_bo_fault_reserve_notify(struct ttm_buffer_object *bo);
extern int radeon_bo_get_surface_reg(struct radeon_bo *bo);
extern void radeon_bo_fence(struct radeon_bo *bo, struct radeon_fence *fence,
+2 −16
Original line number Diff line number Diff line
@@ -199,7 +199,7 @@ static int radeon_bo_move(struct ttm_buffer_object *bo, bool evict,
	struct ttm_resource *old_mem = bo->resource;
	struct radeon_device *rdev;
	struct radeon_bo *rbo;
	int r, old_type;
	int r;

	if (new_mem->mem_type == TTM_PL_TT) {
		r = radeon_ttm_tt_bind(bo->bdev, bo->ttm, new_mem);
@@ -216,9 +216,6 @@ static int radeon_bo_move(struct ttm_buffer_object *bo, bool evict,
	if (WARN_ON_ONCE(rbo->tbo.pin_count > 0))
		return -EINVAL;

	/* Save old type for statistics update */
	old_type = old_mem->mem_type;

	rdev = radeon_get_rdev(bo->bdev);
	if (old_mem->mem_type == TTM_PL_SYSTEM && bo->ttm == NULL) {
		ttm_bo_move_null(bo, new_mem);
@@ -264,7 +261,7 @@ static int radeon_bo_move(struct ttm_buffer_object *bo, bool evict,
out:
	/* update statistics */
	atomic64_add(bo->base.size, &rdev->num_bytes_moved);
	radeon_bo_move_notify(bo, old_type, new_mem);
	radeon_bo_move_notify(bo);
	return 0;
}

@@ -679,16 +676,6 @@ bool radeon_ttm_tt_is_readonly(struct radeon_device *rdev,
	return !!(gtt->userflags & RADEON_GEM_USERPTR_READONLY);
}

static void
radeon_bo_delete_mem_notify(struct ttm_buffer_object *bo)
{
	unsigned int old_type = TTM_PL_SYSTEM;

	if (bo->resource)
		old_type = bo->resource->mem_type;
	radeon_bo_move_notify(bo, old_type, NULL);
}

static struct ttm_device_funcs radeon_bo_driver = {
	.ttm_tt_create = &radeon_ttm_tt_create,
	.ttm_tt_populate = &radeon_ttm_tt_populate,
@@ -697,7 +684,6 @@ static struct ttm_device_funcs radeon_bo_driver = {
	.eviction_valuable = ttm_bo_eviction_valuable,
	.evict_flags = &radeon_evict_flags,
	.move = &radeon_bo_move,
	.delete_mem_notify = &radeon_bo_delete_mem_notify,
	.io_mem_reserve = &radeon_ttm_io_mem_reserve,
};