drm/radeon: remove resource accounting v2
Use the one provided by TTM instead. v2: drop new_mem parameter as well Signed-off-by: Christian König <christian.koenig@amd.com> Tested-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220214093439.2989-5-christian.koenig@amd.com
This commit is contained in:
parent
d5c6f647ae
commit
a32ba6bdca
@ -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 */
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user