[PATCH] drm/amdgpu: put SMU into proper state on runpm suspending for BOCO capable platform
Alex Deucher
alexdeucher at gmail.com
Fri Dec 24 04:15:33 UTC 2021
On Thu, Dec 23, 2021 at 10:17 PM Evan Quan <evan.quan at amd.com> wrote:
>
> By setting mp1_state as PP_MP1_STATE_UNLOAD, MP1 will do some proper cleanups and
> put itself into a state ready for PNP(which fits the scenario BOCO stands for).
> That can address some random resuming failure observed on BOCO capable platforms.
>
> Signed-off-by: Evan Quan <evan.quan at amd.com>
> Change-Id: I9804c4f04b6d2ef737b076cabf85d2880179efe2
Acked-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> index e431c7f10755..ad8370b41e74 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -2235,12 +2235,27 @@ static int amdgpu_pmops_runtime_suspend(struct device *dev)
> if (amdgpu_device_supports_px(drm_dev))
> drm_dev->switch_power_state = DRM_SWITCH_POWER_CHANGING;
>
> + /*
> + * By setting mp1_state as PP_MP1_STATE_UNLOAD, MP1 will do some
> + * proper cleanups and put itself into a state ready for PNP. That
> + * can address some random resuming failure observed on BOCO capable
> + * platforms.
> + * TODO: this may be also needed for PX capable platform.
> + */
> + if (amdgpu_device_supports_boco(drm_dev))
> + adev->mp1_state = PP_MP1_STATE_UNLOAD;
> +
> ret = amdgpu_device_suspend(drm_dev, false);
> if (ret) {
> adev->in_runpm = false;
> + if (amdgpu_device_supports_boco(drm_dev))
> + adev->mp1_state = PP_MP1_STATE_NONE;
> return ret;
> }
>
> + if (amdgpu_device_supports_boco(drm_dev))
> + adev->mp1_state = PP_MP1_STATE_NONE;
> +
> if (amdgpu_device_supports_px(drm_dev)) {
> /* Only need to handle PCI state in the driver for ATPX
> * PCI core handles it for _PR3.
> --
> 2.29.0
>
More information about the amd-gfx
mailing list