Skip to content

Commit 3fadda5

Browse files
Guchun Chenalexdeucher
authored andcommitted
drm/amdgpu: move poll enabled/disable into non DC path
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. v1: introduce use_kms_poll flag in amdgpu as the poll stuff check v2: use dc_enabled as the flag to simply code v3: move code into non DC path instead of relying on any flag Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/2411 Fixes: a4e7717 ("drm/probe_helper: sort out poll_running vs poll_enabled") Reported-by: Bert Karwatzki <[email protected]> Suggested-by: Dmitry Baryshkov <[email protected]> Suggested-by: Alex Deucher <[email protected]> Signed-off-by: Guchun Chen <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Signed-off-by: Alex Deucher <[email protected]> Cc: [email protected]
1 parent 728cefa commit 3fadda5

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4145,8 +4145,6 @@ int amdgpu_device_suspend(struct drm_device *dev, bool fbcon)
41454145
if (amdgpu_acpi_smart_shift_update(dev, AMDGPU_SS_DEV_D3))
41464146
DRM_WARN("smart shift update failed\n");
41474147

4148-
drm_kms_helper_poll_disable(dev);
4149-
41504148
if (fbcon)
41514149
drm_fb_helper_set_suspend_unlocked(adev_to_drm(adev)->fb_helper, true);
41524150

@@ -4243,8 +4241,6 @@ int amdgpu_device_resume(struct drm_device *dev, bool fbcon)
42434241
if (fbcon)
42444242
drm_fb_helper_set_suspend_unlocked(adev_to_drm(adev)->fb_helper, false);
42454243

4246-
drm_kms_helper_poll_enable(dev);
4247-
42484244
amdgpu_ras_resume(adev);
42494245

42504246
if (adev->mode_info.num_crtc) {

drivers/gpu/drm/amd/amdgpu/amdgpu_display.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1618,6 +1618,8 @@ int amdgpu_display_suspend_helper(struct amdgpu_device *adev)
16181618
struct drm_connector_list_iter iter;
16191619
int r;
16201620

1621+
drm_kms_helper_poll_disable(dev);
1622+
16211623
/* turn off display hw */
16221624
drm_modeset_lock_all(dev);
16231625
drm_connector_list_iter_begin(dev, &iter);
@@ -1694,6 +1696,8 @@ int amdgpu_display_resume_helper(struct amdgpu_device *adev)
16941696

16951697
drm_modeset_unlock_all(dev);
16961698

1699+
drm_kms_helper_poll_enable(dev);
1700+
16971701
return 0;
16981702
}
16991703

0 commit comments

Comments
 (0)