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 <[email protected]>
---
 drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c     | 11 +++++++++++
 drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h |  3 ---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c 
b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
index f51fa265230b..d0806deb9ce9 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
@@ -3686,6 +3686,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;
@@ -3693,6 +3696,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);
 }
 
diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h 
b/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h
index e5c04da15b6f..3b8bd8c9827a 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h
+++ b/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h
@@ -383,9 +383,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];
 };
 
-- 
2.49.0

Reply via email to