]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/radeon: remove resource accounting v2
authorChristian König <christian.koenig@amd.com>
Mon, 12 Jul 2021 13:01:15 +0000 (15:01 +0200)
committerChristian König <christian.koenig@amd.com>
Tue, 15 Feb 2022 16:51:09 +0000 (17:51 +0100)
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
drivers/gpu/drm/radeon/radeon.h
drivers/gpu/drm/radeon/radeon_kms.c
drivers/gpu/drm/radeon/radeon_object.c
drivers/gpu/drm/radeon/radeon_object.h
drivers/gpu/drm/radeon/radeon_ttm.c

index 895776c421d4deed7655cee79fc8e62aa1a67d61..08f83bf2c33073ff37bfbe2290b2604bc0a5d2a7 100644 (file)
@@ -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 */
index 11ad210919c805b8faff850f4954ac190624c5eb..965161b8565b789fbb5e79d48d22a34e0a07b124 100644 (file)
@@ -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)
index 56ede9d63b12c5098989d5706db7cd1ae048348f..b827b87aefe2d0936baed172b92a67b2ea4ca623 100644 (file)
@@ -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;
 
index 1afc7992ef91c5651ceb002774393a7a6fc8e1a4..0a6ef49e990a8dedce1589e9dd2c25d37c61981c 100644 (file)
@@ -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,
index 0d1283cdc8fb6a2ef3d97de4d4ce4f9efc21e8b1..44594d16611f2db26b1c4a1f4029f4161fddd1c3 100644 (file)
@@ -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,
 };