summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorLijo Lazar <lijo.lazar@amd.com>2025-12-12 13:56:47 +0530
committerAlex Deucher <alexander.deucher@amd.com>2026-01-08 11:42:46 -0500
commitec9243d1b4f59ae5365add0f52fac7af2e4c18ce (patch)
tree721aa174583ba17e7d6f2651318a74f1e4cb22b2 /drivers/gpu
parentc812460e69d8448bbf504bdb95d8dbd19f30d5d7 (diff)
drm/amd/pm: Return right size for gpuboard metrics
Change to switch style checks and return the correct size for gpu board metrics. 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>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_12_ppt.c45
1 files changed, 22 insertions, 23 deletions
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_12_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_12_ppt.c
index 91a17db7912b..44d5f134a87a 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_12_ppt.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_12_ppt.c
@@ -693,30 +693,21 @@ static ssize_t smu_v13_0_12_get_temp_metrics(struct smu_context *smu,
u32 idx, sensors;
ssize_t size;
- if (type == SMU_TEMP_METRIC_BASEBOARD) {
- /* Initialize base board temperature metrics */
- table_id = SMU_DRIVER_TABLE_BASEBOARD_TEMP_METRICS;
- baseboard_temp_metrics =
- (struct amdgpu_baseboard_temp_metrics_v1_0 *)
- smu_driver_table_ptr(smu, table_id);
- size = sizeof(*baseboard_temp_metrics);
- } else {
- table_id = SMU_DRIVER_TABLE_GPUBOARD_TEMP_METRICS;
- gpuboard_temp_metrics =
- (struct amdgpu_gpuboard_temp_metrics_v1_0 *)
- smu_driver_table_ptr(smu, table_id);
- size = sizeof(*baseboard_temp_metrics);
- }
-
ret = smu_v13_0_12_get_system_metrics_table(smu);
if (ret)
return ret;
sys_table = &tables[SMU_TABLE_PMFW_SYSTEM_METRICS];
metrics = (SystemMetricsTable_t *)sys_table->cache.buffer;
- smu_driver_table_update_cache_time(smu, table_id);
- if (type == SMU_TEMP_METRIC_GPUBOARD) {
+ switch (type) {
+ case SMU_TEMP_METRIC_GPUBOARD:
+ table_id = SMU_DRIVER_TABLE_GPUBOARD_TEMP_METRICS;
+ gpuboard_temp_metrics =
+ (struct amdgpu_gpuboard_temp_metrics_v1_0 *)
+ smu_driver_table_ptr(smu, table_id);
+ size = sizeof(*gpuboard_temp_metrics);
+
gpuboard_temp_metrics->accumulation_counter = metrics->AccumulationCounter;
gpuboard_temp_metrics->label_version = metrics->LabelVersion;
gpuboard_temp_metrics->node_id = metrics->NodeIdentifier;
@@ -743,7 +734,15 @@ static ssize_t smu_v13_0_12_get_temp_metrics(struct smu_context *smu,
idx++;
}
}
- } else if (type == SMU_TEMP_METRIC_BASEBOARD) {
+ memcpy(table, gpuboard_temp_metrics, size);
+ break;
+ case SMU_TEMP_METRIC_BASEBOARD:
+ table_id = SMU_DRIVER_TABLE_BASEBOARD_TEMP_METRICS;
+ baseboard_temp_metrics =
+ (struct amdgpu_baseboard_temp_metrics_v1_0 *)
+ smu_driver_table_ptr(smu, table_id);
+ size = sizeof(*baseboard_temp_metrics);
+
baseboard_temp_metrics->accumulation_counter = metrics->AccumulationCounter;
baseboard_temp_metrics->label_version = metrics->LabelVersion;
baseboard_temp_metrics->node_id = metrics->NodeIdentifier;
@@ -758,12 +757,12 @@ static ssize_t smu_v13_0_12_get_temp_metrics(struct smu_context *smu,
idx++;
}
}
- }
-
- if (type == SMU_TEMP_METRIC_BASEBOARD)
memcpy(table, baseboard_temp_metrics, size);
- else
- memcpy(table, gpuboard_temp_metrics, size);
+ break;
+ default:
+ return -EINVAL;
+ }
+ smu_driver_table_update_cache_time(smu, table_id);
return size;
}