[PATCH 3/3] drm/amdgpu/pm: inform PMFW rlc status before start/stop rlc for vangogh
Huang Rui
ray.huang at amd.com
Tue Dec 8 13:08:47 UTC 2020
On Tue, Dec 08, 2020 at 07:19:42PM +0800, Hou, Xiaomeng (Matthew) wrote:
> RLC is halted when system suspend/shutdown. However, due to DPM enabled, PMFM is
> unaware of RLC being halted and will continue sending messages, which would
> eventually caused ACPI related hang. So send message to inform PMFM the rlc
> status before start/stop rlc.
>
> Signed-off-by: Xiaomeng Hou <Xiaomeng.Hou at amd.com>
> Change-Id: I7b1a04f6e249ac6753109079ecb3019c99161d9f
> ---
> drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> index cf999b7a2164..42a32c0e5bab 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> @@ -920,6 +920,14 @@ static int smu_smc_hw_setup(struct smu_context *smu)
> uint32_t pcie_gen = 0, pcie_width = 0;
> int ret = 0;
>
> + if (adev->in_suspend && smu->is_apu) {
> + ret = smu_notify_rlc_status(smu, 1);
You can create two new callbacks in ppt_funcs->inform_rlc(smu, on), and set
on as bool type.
Then you can use below macros to implement this callback with RLC notify
SMC message.
/* RLC Power Status */
#define RLC_STATUS_OFF 0
#define RLC_STATUS_NORMAL 1
Others look good for me.
Thanks,
Ray
> + if (ret) {
> + dev_info(adev->dev, "Failed to notify rlc status!\n");
> + return ret;
> + }
> + }
> +
> if (adev->in_suspend && smu_is_dpm_running(smu)) {
> dev_info(adev->dev, "dpm has been enabled\n");
> /* this is needed specifically */
> @@ -1213,6 +1221,14 @@ static int smu_disable_dpms(struct smu_context *smu)
> dev_err(adev->dev, "Failed to disable smu features.\n");
> }
>
> + if (smu->is_apu) {
> + ret = smu_notify_rlc_status(smu, 0);
> + if (ret) {
> + dev_info(adev->dev, "Failed to notify rlc status!\n");
> + return ret;
> + }
> + }
> +
> if (adev->asic_type >= CHIP_NAVI10 &&
> adev->gfx.rlc.funcs->stop)
> adev->gfx.rlc.funcs->stop(adev);
> --
> 2.17.1
>
More information about the amd-gfx
mailing list