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

Alex Deucher alexdeucher at gmail.com
Mon Sep 27 15:16:40 UTC 2021


On Sun, Sep 26, 2021 at 9:14 AM Prike Liang <Prike.Liang at amd.com> wrote:
>
> In the s2idle stress test sdma resume fail occasionally,in the
> failed case GPU is in the gfxoff state.This issue may introduce
> by FSDL miss handle doorbell S/R and now temporary fix the issue
> by forcing exit gfxoff for sdma resume.
>
> Signed-off-by: Prike Liang <Prike.Liang at amd.com>

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

> ---
>  drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c b/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
> index e4a96e7e386d..81906955ef52 100644
> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
> @@ -868,6 +868,12 @@ static int sdma_v5_2_start(struct amdgpu_device *adev)
>                         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);
>         /* unhalt the MEs */
>         sdma_v5_2_enable(adev, true);
> @@ -876,6 +882,8 @@ static int sdma_v5_2_start(struct amdgpu_device *adev)
>
>         /* start the gfx rings and rlc compute queues */
>         r = sdma_v5_2_gfx_resume(adev);
> +       if (adev->in_s0ix)
> +               amdgpu_gfx_off_ctrl(adev, true);
>         if (r)
>                 return r;
>         r = sdma_v5_2_rlc_resume(adev);
> --
> 2.17.1
>


More information about the amd-gfx mailing list