Commit e5d59cfa authored by Prike Liang's avatar Prike Liang Committed by Alex Deucher

drm/amdgpu: force exit gfxoff on sdma resume for rmb s0ix

In the s2idle stress test sdma resume fail occasionally,in the
failed case GPU is in the gfxoff state.This issue may introduce
by firmware miss handle doorbell S/R and now temporary fix the issue
by forcing exit gfxoff for sdma resume.
Signed-off-by: default avatarPrike Liang <Prike.Liang@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 3f68c01b
...@@ -868,6 +868,12 @@ static int sdma_v5_2_start(struct amdgpu_device *adev) ...@@ -868,6 +868,12 @@ static int sdma_v5_2_start(struct amdgpu_device *adev)
msleep(1000); msleep(1000);
} }
/* TODO: check whether can submit a doorbell request to raise
* a doorbell fence to exit gfxoff.
*/
if (adev->in_s0ix)
amdgpu_gfx_off_ctrl(adev, false);
sdma_v5_2_soft_reset(adev); sdma_v5_2_soft_reset(adev);
/* unhalt the MEs */ /* unhalt the MEs */
sdma_v5_2_enable(adev, true); sdma_v5_2_enable(adev, true);
...@@ -876,6 +882,8 @@ static int sdma_v5_2_start(struct amdgpu_device *adev) ...@@ -876,6 +882,8 @@ static int sdma_v5_2_start(struct amdgpu_device *adev)
/* start the gfx rings and rlc compute queues */ /* start the gfx rings and rlc compute queues */
r = sdma_v5_2_gfx_resume(adev); r = sdma_v5_2_gfx_resume(adev);
if (adev->in_s0ix)
amdgpu_gfx_off_ctrl(adev, true);
if (r) if (r)
return r; return r;
r = sdma_v5_2_rlc_resume(adev); r = sdma_v5_2_rlc_resume(adev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment