On Thu, Feb 26, 2026 at 1:54 AM Yang Wang <[email protected]> wrote:
>
> 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 <[email protected]>

Acked-by: Alex Deucher <[email protected]>

> ---
>  drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 8 +++++++-
>  drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 3 ++-
>  2 files changed, 9 insertions(+), 2 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 468d51f5f918..35d36f2fe7dd 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
> @@ -2035,6 +2035,7 @@ static ssize_t smu_v13_0_0_get_gpu_metrics(struct 
> smu_context *smu,
>                         smu, SMU_DRIVER_TABLE_GPU_METRICS);
>         SmuMetricsExternal_t metrics_ext;
>         SmuMetrics_t *metrics = &metrics_ext.SmuMetrics;
> +       uint32_t mp1_ver = amdgpu_ip_version(smu->adev, MP1_HWIP, 0);
>         int ret = 0;
>
>         ret = smu_cmn_get_metrics_table(smu,
> @@ -2059,7 +2060,12 @@ static ssize_t smu_v13_0_0_get_gpu_metrics(struct 
> smu_context *smu,
>                                                
> metrics->Vcn1ActivityPercentage);
>
>         gpu_metrics->average_socket_power = metrics->AverageSocketPower;
> -       gpu_metrics->energy_accumulator = metrics->EnergyAccumulator;
> +
> +       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;
> 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 a6c22ae86c98..4f729f54a64c 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
> @@ -2066,7 +2066,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 = metrics->EnergyAccumulator;
> +       gpu_metrics->energy_accumulator = smu->smc_fw_version <= 0x00521400 ?
> +               metrics->EnergyAccumulator : UINT_MAX;
>
>         if (metrics->AverageGfxActivity <= SMU_13_0_7_BUSY_THRESHOLD)
>                 gpu_metrics->average_gfxclk_frequency = 
> metrics->AverageGfxclkFrequencyPostDs;
> --
> 2.47.3
>

Reply via email to