From 34d65997489fe3485dd698025ea32b8aa74f0af4 Mon Sep 17 00:00:00 2001 From: Lijo Lazar Date: Tue, 2 Dec 2025 14:33:28 +0530 Subject: [PATCH] drm/amd/pm: Use cached gpu metrics table 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 Reviewed-by: Asad Kamal Signed-off-by: Alex Deucher --- 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 b7dfd98d387d..52d568379fd0 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c +++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c @@ -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); } 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 3416f3dddd14..6b803b0213e0 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h +++ b/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h @@ -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]; }; -- 2.47.3