Patch1 - patch11: Reviewed-by: Evan Quan <evan.q...@amd.com>

For patch12, comment inline

> -----Original Message-----
> From: amd-gfx <amd-gfx-boun...@lists.freedesktop.org> On Behalf Of Alex
> Deucher
> Sent: Friday, July 26, 2019 12:58 AM
> To: amd-gfx@lists.freedesktop.org
> Cc: Deucher, Alexander <alexander.deuc...@amd.com>
> Subject: [PATCH 12/12] drm/amdgpu: put the SMC into the proper state on
> suspend
> 
> Suspend is used for S3/S4, GPU reset, and PCI shutdown.  In each case, we
> need to put the SMC into the proper state in order to resume or reload
> correctly.
> 
> Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 33
> ++++++++++++++++++++++
>  1 file changed, 33 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 4425ff06ecc4..bb4260648a97 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -2174,6 +2174,39 @@ static int
> amdgpu_device_ip_suspend_phase2(struct amdgpu_device *adev)
>                       DRM_ERROR("suspend of IP block <%s> failed %d\n",
>                                 adev->ip_blocks[i].version->funcs->name,
> r);
>               }
> +             /* handle putting the SMC in the appropriate state */
> +             if (adev->ip_blocks[i].version->type ==
> AMD_IP_BLOCK_TYPE_SMC) {
> +                     enum pp_mp1_state mp1_state =
> PP_MP1_STATE_NONE;
> +
> +                     if (adev->in_gpu_reset) {
> +                             switch (amdgpu_asic_reset_method(adev)) {
> +                             case AMD_RESET_METHOD_MODE1:
> +                             case AMD_RESET_METHOD_BACO:
> +                                     mp1_state =
> PP_MP1_STATE_SHUTDOWN;
[Quan, Evan] For AMD_RESET_METHOD_BACO, it should be PP_MP1_STATE_UNLOAD.
> +                                     break;
> +                             case AMD_RESET_METHOD_MODE2:
> +                                     mp1_state = PP_MP1_STATE_RESET;
> +                                     break;
> +                             default:
> +                                     mp1_state = PP_MP1_STATE_NONE;
> +                                     break;
> +                             }
> +                     } else if (adev->in_gpu_shutdown) {
> +                             mp1_state = PP_MP1_STATE_UNLOAD;
> +                     }
[Quan, Evan] Handling for suspend only case seems missing.
> +                     if (is_support_sw_smu(adev)) {
> +                             /* todo */
> +                     } else if (adev->powerplay.pp_funcs &&
> +                                adev->powerplay.pp_funcs-
> >set_mp1_state) {
> +                             r = adev->powerplay.pp_funcs-
> >set_mp1_state(
> +                                     adev->powerplay.pp_handle,
> +                                     mp1_state);
> +                             if (r) {
> +                                     DRM_ERROR("SMC failed to set mp1
> state %d, %d\n",
> +                                               mp1_state, r);
> +                             }
> +                     }
> +             }
[Quan, Evan] Baco reset will be triggered in soc15_asic_reset. And there will 
be SMU message issued then and needs the SMU prepared.
If we stall the SMU engine here(before soc15_asic_reset), we may fail to issue 
BACO messages.
>       }
> 
>       return 0;
> --
> 2.20.1
> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to