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@xxxxxxx> 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); + 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 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx