summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLijo Lazar <lijo.lazar@amd.com>2025-12-02 12:03:28 +0300
committerAlex Deucher <alexander.deucher@amd.com>2026-01-08 19:40:40 +0300
commit34d65997489fe3485dd698025ea32b8aa74f0af4 (patch)
treef12ee6133f66af942e7d0b0fb22c931b64889e5a
parent618c144145ad3e409c2c0fa13a0efef1a9473d37 (diff)
downloadlinux-34d65997489fe3485dd698025ea32b8aa74f0af4.tar.xz
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 <lijo.lazar@amd.com> Reviewed-by: Asad Kamal <asad.kamal@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c11
-rw-r--r--drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h3
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];
};