[PATCH] drm/amdpu/vce_v3: skip suspend and resume if powergated

S, Shirish sshankar at amd.com
Fri Aug 10 07:15:01 UTC 2018



On 8/10/2018 12:02 PM, Zhu, Rex wrote:
>
> I am Ok with the check when call vce_v3_0_hw_fini.
>
>
> But we may still need to call amdpug_vce_suspend/resume.
>
Done in V2. Have moved the check such that both are executed.
Regards,
Shirish S
>
>
> and not sure whether need to do ring test when resume back.
>
>
> Best Regards
>
> Rex
>
> ------------------------------------------------------------------------
> *From:* S, Shirish
> *Sent:* Friday, August 10, 2018 2:15 PM
> *To:* Deucher, Alexander; Zhu, Rex; Liu, Leo
> *Cc:* amd-gfx at lists.freedesktop.org; S, Shirish
> *Subject:* [PATCH] drm/amdpu/vce_v3: skip suspend and resume if 
> powergated
> This patch adds a mechanism by which the VCE 3.0 block
> shall check if it was enabled or in use before suspending,
> if it was powergated while entering suspend then there
> is no need to repeat it in vce_3_0_suspend().
> Similarly, if the block was powergated while entering suspend
> itself then there is no need to resume it.
>
> By this we not only make the suspend and resume sequence
> more efficient, but also optimize the overall amdgpu suspend
> and resume time by reducing the ring intialize and tests
> for unused IP blocks.
>
> Signed-off-by: Shirish S <shirish.s at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu.h   |  2 ++
>  drivers/gpu/drm/amd/amdgpu/vce_v3_0.c | 21 +++++++++++++++++++++
>  2 files changed, 23 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index 07924d4..aa85063 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -1035,6 +1035,8 @@ struct amdgpu_device {
>
>          /* vce */
>          struct amdgpu_vce               vce;
> +       bool                            is_vce_pg;
> +       bool is_vce_disabled;
>
>          /* vcn */
>          struct amdgpu_vcn               vcn;
> diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c 
> b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
> index cc6ce6c..822cfd6 100644
> --- a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
> @@ -326,6 +326,7 @@ static int vce_v3_0_start(struct amdgpu_device *adev)
>          WREG32(mmGRBM_GFX_INDEX, mmGRBM_GFX_INDEX_DEFAULT);
>          mutex_unlock(&adev->grbm_idx_mutex);
>
> +       adev->is_vce_pg = false;
>          return 0;
>  }
>
> @@ -355,6 +356,7 @@ static int vce_v3_0_stop(struct amdgpu_device *adev)
>          WREG32(mmGRBM_GFX_INDEX, mmGRBM_GFX_INDEX_DEFAULT);
>          mutex_unlock(&adev->grbm_idx_mutex);
>
> +       adev->is_vce_pg = true;
>          return 0;
>  }
>
> @@ -506,6 +508,17 @@ static int vce_v3_0_suspend(void *handle)
>          int r;
>          struct amdgpu_device *adev = (struct amdgpu_device *)handle;
>
> +       /* Proceed with suspend sequence only if VCE is started
> +        * Mark the block as being disabled if its stopped.
> +        */
> +       if (adev->is_vce_pg) {
> +               DRM_DEBUG("VCE is already powergated, not suspending\n");
> +               adev->is_vce_disabled = true;
> +               return 0;
> +       }
> +
> +       adev->is_vce_disabled = false;
> +
>          r = vce_v3_0_hw_fini(adev);
>          if (r)
>                  return r;
> @@ -518,6 +531,14 @@ static int vce_v3_0_resume(void *handle)
>          int r;
>          struct amdgpu_device *adev = (struct amdgpu_device *)handle;
>
> +       /* Proceed with resume sequence if VCE was enabled
> +        * while suspending.
> +        */
> +       if (adev->is_vce_disabled) {
> +               DRM_DEBUG("VCE is powergated, not resuming the block\n");
> +               return 0;
> +       }
> +
>          r = amdgpu_vce_resume(adev);
>          if (r)
>                  return r;
> -- 
> 2.7.4
>

-- 
Regards,
Shirish S

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20180810/b49e4c3a/attachment-0001.html>


More information about the amd-gfx mailing list