]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/pm: Return right size for gpuboard metrics
authorLijo Lazar <lijo.lazar@amd.com>
Fri, 12 Dec 2025 08:26:47 +0000 (13:56 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 8 Jan 2026 16:42:46 +0000 (11:42 -0500)
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>
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_12_ppt.c

index 91a17db7912be301d9e9267bf19d2c368668783b..44d5f134a87a1694171e38346c6048f7bb7dcddc 100644 (file)
@@ -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;
 }