[PATCH 1/2] drm/amdgpu: move poll enabled/disable into non DC path

Alex Deucher alexdeucher at gmail.com
Thu Mar 9 14:22:19 UTC 2023


On Thu, Mar 9, 2023 at 12:48 AM Guchun Chen <guchun.chen at amd.com> wrote:
>
> Some amd asics having reliable hotplug support don't call
> drm_kms_helper_poll_init in driver init sequence. However,
> due to the unified suspend/resume path for all asics, because
> the output_poll_work->func is not set for these asics, a warning
> arrives when suspending.
>
> [   90.656049]  <TASK>
> [   90.656050]  ? console_unlock+0x4d/0x100
> [   90.656053]  ? __irq_work_queue_local+0x27/0x60
> [   90.656056]  ? irq_work_queue+0x2b/0x50
> [   90.656057]  ? __wake_up_klogd+0x40/0x60
> [   90.656059]  __cancel_work_timer+0xed/0x180
> [   90.656061]  drm_kms_helper_poll_disable.cold+0x1f/0x2c [drm_kms_helper]
> [   90.656072]  amdgpu_device_suspend+0x81/0x170 [amdgpu]
> [   90.656180]  amdgpu_pmops_runtime_suspend+0xb5/0x1b0 [amdgpu]
> [   90.656269]  pci_pm_runtime_suspend+0x61/0x1b0
>
> drm_kms_helper_poll_enable/disable is valid when poll_init is called in
> amdgpu code, which is only used in non DC path. So move such codes into
> non-DC path code to get rid of such warnings.
>
> Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/2411
> Fixes: a4e771729a51("drm/probe_helper: sort out poll_running vs poll_enabled")
> Reported-by: Bert Karwatzki <spasswolf at web.de>
> Suggested-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
> Suggested-by: Alex Deucher <alexander.deucher at amd.com>
> Signed-off-by: Guchun Chen <guchun.chen at amd.com>

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

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c  | 4 ----
>  drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 4 ++++
>  2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index c4a4e2fe6681..da5b0258a237 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -4145,8 +4145,6 @@ int amdgpu_device_suspend(struct drm_device *dev, bool fbcon)
>         if (amdgpu_acpi_smart_shift_update(dev, AMDGPU_SS_DEV_D3))
>                 DRM_WARN("smart shift update failed\n");
>
> -       drm_kms_helper_poll_disable(dev);
> -
>         if (fbcon)
>                 drm_fb_helper_set_suspend_unlocked(adev_to_drm(adev)->fb_helper, true);
>
> @@ -4243,8 +4241,6 @@ int amdgpu_device_resume(struct drm_device *dev, bool fbcon)
>         if (fbcon)
>                 drm_fb_helper_set_suspend_unlocked(adev_to_drm(adev)->fb_helper, false);
>
> -       drm_kms_helper_poll_enable(dev);
> -
>         amdgpu_ras_resume(adev);
>
>         if (adev->mode_info.num_crtc) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> index 503f89a766c3..d60fe7eb5579 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
> @@ -1618,6 +1618,8 @@ int amdgpu_display_suspend_helper(struct amdgpu_device *adev)
>         struct drm_connector_list_iter iter;
>         int r;
>
> +       drm_kms_helper_poll_disable(dev);
> +
>         /* turn off display hw */
>         drm_modeset_lock_all(dev);
>         drm_connector_list_iter_begin(dev, &iter);
> @@ -1694,6 +1696,8 @@ int amdgpu_display_resume_helper(struct amdgpu_device *adev)
>
>         drm_modeset_unlock_all(dev);
>
> +       drm_kms_helper_poll_enable(dev);
> +
>         return 0;
>  }
>
> --
> 2.25.1
>


More information about the dri-devel mailing list