Skip to content

Commit 68785c5

Browse files
Yang Wangalexdeucher
authored andcommitted
drm/amd/pm: remove invalid gpu_metrics.energy_accumulator on smu v13.0.x
v1: The metrics->EnergyAccumulator field has been deprecated on newer pmfw. v2: add smu 13.0.0/13.0.7/13.0.10 support. Signed-off-by: Yang Wang <kevinyang.wang@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit 8de9edb) Cc: stable@vger.kernel.org
1 parent 30d937f commit 68785c5

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2034,6 +2034,7 @@ static ssize_t smu_v13_0_0_get_gpu_metrics(struct smu_context *smu,
20342034
smu, SMU_DRIVER_TABLE_GPU_METRICS);
20352035
SmuMetricsExternal_t metrics_ext;
20362036
SmuMetrics_t *metrics = &metrics_ext.SmuMetrics;
2037+
uint32_t mp1_ver = amdgpu_ip_version(smu->adev, MP1_HWIP, 0);
20372038
int ret = 0;
20382039

20392040
ret = smu_cmn_get_metrics_table(smu,
@@ -2058,7 +2059,12 @@ static ssize_t smu_v13_0_0_get_gpu_metrics(struct smu_context *smu,
20582059
metrics->Vcn1ActivityPercentage);
20592060

20602061
gpu_metrics->average_socket_power = metrics->AverageSocketPower;
2061-
gpu_metrics->energy_accumulator = metrics->EnergyAccumulator;
2062+
2063+
if ((mp1_ver == IP_VERSION(13, 0, 0) && smu->smc_fw_version <= 0x004e1e00) ||
2064+
(mp1_ver == IP_VERSION(13, 0, 10) && smu->smc_fw_version <= 0x00500800))
2065+
gpu_metrics->energy_accumulator = metrics->EnergyAccumulator;
2066+
else
2067+
gpu_metrics->energy_accumulator = UINT_MAX;
20622068

20632069
if (metrics->AverageGfxActivity <= SMU_13_0_0_BUSY_THRESHOLD)
20642070
gpu_metrics->average_gfxclk_frequency = metrics->AverageGfxclkFrequencyPostDs;

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2065,7 +2065,8 @@ static ssize_t smu_v13_0_7_get_gpu_metrics(struct smu_context *smu,
20652065
metrics->Vcn1ActivityPercentage);
20662066

20672067
gpu_metrics->average_socket_power = metrics->AverageSocketPower;
2068-
gpu_metrics->energy_accumulator = metrics->EnergyAccumulator;
2068+
gpu_metrics->energy_accumulator = smu->smc_fw_version <= 0x00521400 ?
2069+
metrics->EnergyAccumulator : UINT_MAX;
20692070

20702071
if (metrics->AverageGfxActivity <= SMU_13_0_7_BUSY_THRESHOLD)
20712072
gpu_metrics->average_gfxclk_frequency = metrics->AverageGfxclkFrequencyPostDs;

0 commit comments

Comments
 (0)