diff options
| author | Lijo Lazar <lijo.lazar@amd.com> | 2025-12-12 13:56:47 +0530 |
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2026-01-08 11:42:46 -0500 |
| commit | ec9243d1b4f59ae5365add0f52fac7af2e4c18ce (patch) | |
| tree | 721aa174583ba17e7d6f2651318a74f1e4cb22b2 /drivers/gpu | |
| parent | c812460e69d8448bbf504bdb95d8dbd19f30d5d7 (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.c | 45 |
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; } |
