[PATCH] drm/amd/pm: update workload mask after the setting

Alex Deucher alexdeucher at gmail.com
Tue Sep 24 15:44:53 UTC 2024


On Fri, Sep 20, 2024 at 7:13 AM Kenneth Feng <kenneth.feng at amd.com> wrote:
>
> update workload mask after the setting, to fix:
> https://gitlab.freedesktop.org/drm/amd/-/issues/3625
>

Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3625

Acked-by: Alex Deucher <alexander.deucher at amd.com>

> Signed-off-by: Kenneth Feng <kenneth.feng at amd.com>
> ---
>  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 | 6 +++++-
>  3 files changed, 13 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 a887ab945dfa..1d024b122b0c 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
> @@ -2569,10 +2569,14 @@ static int smu_v13_0_0_set_power_profile_mode(struct smu_context *smu,
>                 }
>         }
>
> -       return smu_cmn_send_smc_msg_with_param(smu,
> +       ret = smu_cmn_send_smc_msg_with_param(smu,
>                                                SMU_MSG_SetWorkloadMask,
>                                                workload_mask,
>                                                NULL);
> +       if (!ret)
> +               smu->workload_mask = workload_mask;
> +
> +       return ret;
>  }
>
>  static bool smu_v13_0_0_is_mode1_reset_supported(struct smu_context *smu)
> 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 7bc95c404377..b891a5e0a396 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
> @@ -2501,8 +2501,11 @@ static int smu_v13_0_7_set_power_profile_mode(struct smu_context *smu, long *inp
>                 return -EINVAL;
>         ret = smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_SetWorkloadMask,
>                                     1 << workload_type, NULL);
> +
>         if (ret)
>                 dev_err(smu->adev->dev, "[%s] Failed to set work load mask!", __func__);
> +       else
> +               smu->workload_mask = (1 << workload_type);
>
>         return ret;
>  }
> 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 43820d7d2c54..5899d01fa73d 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
> @@ -1861,10 +1861,14 @@ static int smu_v14_0_2_set_power_profile_mode(struct smu_context *smu,
>         if (workload_type < 0)
>                 return -EINVAL;
>
> -       return smu_cmn_send_smc_msg_with_param(smu,
> +       ret = smu_cmn_send_smc_msg_with_param(smu,
>                                                SMU_MSG_SetWorkloadMask,
>                                                1 << workload_type,
>                                                NULL);
> +       if (!ret)
> +               smu->workload_mask = 1 << workload_type;
> +
> +       return ret;
>  }
>
>  static int smu_v14_0_2_baco_enter(struct smu_context *smu)
> --
> 2.34.1
>


More information about the amd-gfx mailing list