]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/pm: Use cached gpu metrics table
authorLijo Lazar <lijo.lazar@amd.com>
Tue, 2 Dec 2025 09:03:28 +0000 (14:33 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 8 Jan 2026 16:40:40 +0000 (11:40 -0500)
If cached gpu metrics table is available, return it directly. Also,
deprecate gpu_metrics_table variables as they are no longer used.

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Asad Kamal <asad.kamal@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h

index b7dfd98d387d3d9c9a5fc152cafd6e07cdb076b1..52d568379fd04aa11270da076d0a0ae79032f900 100644 (file)
@@ -3659,6 +3659,9 @@ static int smu_get_dpm_clock_table(void *handle,
 static ssize_t smu_sys_get_gpu_metrics(void *handle, void **table)
 {
        struct smu_context *smu = handle;
+       struct smu_table_context *smu_table = &smu->smu_table;
+       struct smu_driver_table *driver_tables = smu_table->driver_tables;
+       struct smu_driver_table *gpu_metrics_table;
 
        if (!smu->pm_enabled || !smu->adev->pm.dpm_enabled)
                return -EOPNOTSUPP;
@@ -3666,6 +3669,14 @@ static ssize_t smu_sys_get_gpu_metrics(void *handle, void **table)
        if (!smu->ppt_funcs->get_gpu_metrics)
                return -EOPNOTSUPP;
 
+       gpu_metrics_table = &driver_tables[SMU_DRIVER_TABLE_GPU_METRICS];
+
+       /* If cached table is valid, return it */
+       if (smu_driver_table_is_valid(gpu_metrics_table)) {
+               *table = gpu_metrics_table->cache.buffer;
+               return gpu_metrics_table->cache.size;
+       }
+
        return smu->ppt_funcs->get_gpu_metrics(smu, table);
 }
 
index 3416f3dddd14873283146f393c7f243dab4df8e7..6b803b0213e097a57559e6e82d58929ffe85b2b0 100644 (file)
@@ -414,9 +414,6 @@ struct smu_table_context {
        void                            *boot_overdrive_table;
        void                            *user_overdrive_table;
 
-       uint32_t                        gpu_metrics_table_size;
-       void                            *gpu_metrics_table;
-
        struct smu_driver_table driver_tables[SMU_DRIVER_TABLE_COUNT];
 };