]> git.hungrycats.org Git - linux/commitdiff
drm/amd/pm: fix gpu metrics energy accumulator for smu 13.0.0/13.0.7
authorKevin Wang <kevin.wang@amd.com>
Wed, 26 Aug 2026 01:51:55 +0000 (09:51 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 10 Sep 2026 16:55:42 +0000 (12:55 -0400)
GPU metrics v1.3 defines energy_accumulator as a 64‑bit field.
The unsupported‑firmware code path assigns UINT_MAX, which is neither the
full‑width invalid value for this field nor its default value.

Fixes: 8de9edb35976 ("drm/amd/pm: remove invalid gpu_metrics.energy_accumulator on smu v13.0.x")
Signed-off-by: Kevin Wang <kevin.wang@amd.com>
Reviewed-by: Kenneth Feng <kenneth.feng@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit c2b948c4fe16eb13d98ff5d1371956cb2f55cdc6)
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c

index 6e741ec4a71e6198afa39b946e5da38dbee80d24..87b80b6f83b50feb9f57dabb2547e63000f29451 100644 (file)
@@ -2095,8 +2095,6 @@ static ssize_t smu_v13_0_0_get_gpu_metrics(struct smu_context *smu,
        if ((mp1_ver == IP_VERSION(13, 0, 0) && smu->smc_fw_version <= 0x004e1e00) ||
            (mp1_ver == IP_VERSION(13, 0, 10) && smu->smc_fw_version <= 0x00500800))
                gpu_metrics->energy_accumulator = metrics->EnergyAccumulator;
-       else
-               gpu_metrics->energy_accumulator = UINT_MAX;
 
        if (metrics->AverageGfxActivity <= SMU_13_0_0_BUSY_THRESHOLD)
                gpu_metrics->average_gfxclk_frequency = metrics->AverageGfxclkFrequencyPostDs;
index b94ae43586dfee8b12c8b1e80440d8911ae17213..5fe409a237726b19e0be2d8a500e03ea5f07a280 100644 (file)
@@ -2097,8 +2097,8 @@ static ssize_t smu_v13_0_7_get_gpu_metrics(struct smu_context *smu,
                                               metrics->Vcn1ActivityPercentage);
 
        gpu_metrics->average_socket_power = metrics->AverageSocketPower;
-       gpu_metrics->energy_accumulator = smu->smc_fw_version <= 0x00521400 ?
-               metrics->EnergyAccumulator : UINT_MAX;
+       if (smu->smc_fw_version <= 0x00521400)
+               gpu_metrics->energy_accumulator = metrics->EnergyAccumulator;
 
        if (metrics->AverageGfxActivity <= SMU_13_0_7_BUSY_THRESHOLD)
                gpu_metrics->average_gfxclk_frequency = metrics->AverageGfxclkFrequencyPostDs;