AMD General Reviewed-by: Kenneth Feng <[email protected]>
-----Original Message----- From: Wang, Kevin <[email protected]> Sent: Friday, September 18, 2026 11:34 AM To: [email protected] Cc: Deucher, Alexander <[email protected]>; Zhang, Hawking <[email protected]>; Feng, Kenneth <[email protected]> Subject: [PATCH] drm/amd/pm: report smu energy accumulator updates the energy accumulator becomes valid again after an unsupported firmware range. add gpu metrics gates for: - SMU 13.0.10: 80.93.0 - SMU 13.0.7: 82.98.0 - SMU 14.0.2: 102.72.0 Signed-off-by: Kevin Wang <[email protected]> --- drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 6 ++++-- drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 3 ++- drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c | 7 +++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c index e868bfe1f0e1..6eb829d0edb0 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c @@ -2093,9 +2093,11 @@ static ssize_t smu_v13_0_0_get_gpu_metrics(struct smu_context *smu, gpu_metrics->average_socket_power = metrics->AverageSocketPower; if ((mp1_ver == IP_VERSION(13, 0, 0) && - (smu->smc_fw_version <= 0x004e1e00 || smu->smc_fw_version >= 0x004e8600)) || + (smu->smc_fw_version <= 0x004e1e00 || + smu->smc_fw_version >= 0x004e8600)) || (mp1_ver == IP_VERSION(13, 0, 10) && - smu->smc_fw_version <= 0x00500800)) + (smu->smc_fw_version <= 0x00500800 || + smu->smc_fw_version >= 0x00505d00))) gpu_metrics->energy_accumulator = metrics->EnergyAccumulator; if (metrics->AverageGfxActivity <= SMU_13_0_0_BUSY_THRESHOLD) diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c index b0399dd49639..64590965fe56 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c @@ -2097,7 +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; - if (smu->smc_fw_version <= 0x00521400) + if (smu->smc_fw_version <= 0x00521400 || + smu->smc_fw_version >= 0x00526200) gpu_metrics->energy_accumulator = metrics->EnergyAccumulator; if (metrics->AverageGfxActivity <= SMU_13_0_7_BUSY_THRESHOLD) diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c index d91bfa8998d4..20abf342a30c 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c @@ -2172,8 +2172,11 @@ static ssize_t smu_v14_0_2_get_gpu_metrics(struct smu_context *smu, metrics->Vcn1ActivityPercentage); gpu_metrics->average_socket_power = metrics->AverageSocketPower; - if (mp1_ver == IP_VERSION(14, 0, 3) && smu->smc_fw_version >= 0x00685000) - gpu_metrics->energy_accumulator = metrics->EnergyAccumulator; + if ((mp1_ver == IP_VERSION(14, 0, 2) && + smu->smc_fw_version >= 0x00664800) || + (mp1_ver == IP_VERSION(14, 0, 3) && + smu->smc_fw_version >= 0x00685000)) + gpu_metrics->energy_accumulator = metrics->EnergyAccumulator; if (metrics->AverageGfxActivity <= SMU_14_0_2_BUSY_THRESHOLD) gpu_metrics->average_gfxclk_frequency = metrics->AverageGfxclkFrequencyPostDs; -- 2.55.0
